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 效果確有提高~

(未完待續)

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章