首页 > 解决方案 > 降低歌曲中的一个频率

问题描述

如何在没有特定频率的情况下输入歌曲并输出同一首歌曲?

根据我目前的研究,这首歌应该被分解成卡盘,对其进行 FFT,降低目标频率,对其进行 iFFT,然后将这些块重新拼接在一起。但是,我不确定这是否是正确的方法,如果是,我将如何从音频转换为 FFT 输入(似乎是矢量矩阵),如何降低目标频率,以及如何转换回来从 FFT 输出到音频,以及如何重新拼接。

作为背景,我爷爷喜欢音乐。然而,最近他不能听它,因为他对歌曲中的某些频率变得过敏。我是一名高中生,有一些背景编码,并且刚刚进入算法工作,因此使用这些算法的经验很少。如果这些是基本问题,请原谅;任何指针都会有所帮助。

编辑:到目前为止,我已经了解了 fft 的基本前提(通过基本的 3blue1brown yt 视频等),并且可以通过 scipy/numpi 获得它,并弄清楚如何从 youtube 转换为 wav 格式的 0.25 秒块.

标签: algorithmsignal-processingfft

解决方案


你的方法是对的。

关于子问题:
from the audio to FFT input- 将音频样本分配给复信号的实部,虚部为零

how to reduce the target frequencies- 将所需频率附近的 FFT 结果乘以平滑(以减少伪影)函数,该函数在该频率处变为零,并且相隔一些样本达到 1.0

how to convert back- 只需进行逆 FFT(不要忘记像 1/N 这样的比例乘数)并将实部复制到音频通道中


还可以考虑使用更简单的数字滤波 - 带阻或陷波滤波器。

随意找到example1 example2
(计算参数可能需要对DSP有所了解)


推荐阅读