RNNoise要注意的部分(草稿记录)

rnnoise会有一个pitch_filter

这是由于因为它们在生成特征时不是用频域上所有频点,而是采取bark's scale的切分频段来对不同频率的频段进行特征处理

这样的话频域上的分辨率会降低,然后导致最后在进行降噪后生成的语音会有一个现象就是oversmoothing,即你会辨别不清共振峰.

尽管bark's scale 在低频部分的频段分得很细,但是他把好几个频率都归为一个频带,就会使得生成波形很平滑(想想看,以前每个频点分别处理,现在几个频点虽然代表不同频率,但都是统一类,一起处理,就会平滑)但在语音中,过度平滑不是好处,对识别人听和识别是坏处的,所以pitch_filter就是去sharp这些共振峰的.

这个处理oversmoothing 的部分在另外一个项目也就是中科大sednn降噪的 global variance处理也能体现出来.

然后会有人问,可不可以不用barks'scale 处理,直接频点处理呢,可以,但在高频会有问题.

因为帧与帧之间在低频部分会有小部分变化,但那种变化并不是特别大,可是在高频部分变化是非常剧烈的(拿段音频做频谱分析你就能知道)

原因有两个:

1.高频部分信噪比比较低,所以噪声较大,SE处理后噪点多

2.因为高频部分是n阶谐波,基频变一点,高频变很多

如果把每个频点单独处理的话,到时候降噪可能会产生残余噪点,影响听觉感受. 这也能理解为啥mfcc高频的滤波器跨越的频率那么宽,低频滤波器很多

最后,改了rnnoise的东西能生成16k的模型,用aishell的数据进行训练和测试,asr 效果确有提高~

(未完待续)

发布了17 篇原创文章 · 获赞 37 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/robingao1994/article/details/93890337