【发布时间】:2016-01-12 23:33:01
【问题描述】:
我尝试仅使用 FFT(因为我不应该使用任何过滤器)从我的语音样本(使用 Octave)中删除所有低于 100 Hz 的频率。但是,当我播放样本时,听起来好像波形失真了。经过反复试验,我将频率从 2Hz 移除到 100Hz,听起来比以前更好。我的问题是:由于人类的听觉范围是从 20 Hz 到 20 kHz,那么如果范围是从 2 到 100 Hz,语音样本的声音怎么会更好呢?代码如下:
n1=1+round(0/fsamplingn):1+round(98/fsamplingn); --to remove the original frequencies
n2=1+n-round(98/fsn):1+n-round(0/fsn); -- to remove mirror
yf=fft(y); --fourier of voice
yf(n1)=0; yf(n2)=0;
【问题讨论】:
-
这样的频域处理需要使用overlap-add或者overlap-save。
-
请出示代码。
-
请注意 fsampling 是采样频率,即 20khz,n 是采样总数。我试图将 n1 和 n2 处的傅立叶变换为零,范围为 0Hz 到 98Hz。下面是sn-p:n1=1+round(0/fsamplingn):1+round(98/fsamplingn); --去除原来的频率 n2=1+n-round(98/fsn):1+n-round(0/fsn); -- 删除镜像 yf=fft(y); -- 语音 yf(n1)=0 的傅立叶; yf(n2)=0;
-
请edit任何相关代码进入您的问题。另请说明您是否知道需要对此类处理使用重叠添加/重叠保存,因为任何答案都取决于您在此方面的进展情况。
-
我对重叠添加/保存一无所知。你能告诉我同样的事情吗?非常感谢!
标签: filtering signal-processing fft octave speech