天天看點

Kaldi中語音資料增強方法

在實際應用中,有時候資料不是很多,可以用資料增強方式

擴充資料,在小的資料集上效果比較明顯。

語音資料增強主要有以下幾種方式:

音速擾動sp

utils/data/perturb_data_dir_speed_3way.sh

音量擾動vp

utils/data/perturb_data_dir_volume.sh

kaldi裡面資料增強腳本是存放在utils/data 目錄下。

加上去年谷歌提出新型自動語音識别SpecAugment資料增強方式

SpenAugment參考了圖像的做法,SpenAugment方法直接增強了頻譜圖,而不再是音波資料上。這種方法的資料增強是直接使用在輸入特征上的,可以實時動态添加,而不需要像對音波進行資料增強一樣有很多計算代價而影響到訓練速度。

Kaldi中語音資料增強方法

采用扭曲時域信号,掩蓋頻域通道,和掩蓋時域通道,修改了頻譜圖。

Kaldi中語音資料增強方法

在kaldi裡面已經有将SpenAugment內建進去,在network.xconfig中增加

spec-augment-layer name=spec-augment freq-max-proportion=0.5 time-zeroed-proportion=0.2 time-mask-max-frames=20

delta-layer name=delta input=spec-augment即可。

我嘗試用SpecAugment資料增強方式訓練模型,在minilibirispeech上訓練,WER降低了兩個點左右,還是有提升。我在300多個小時的英語資料集合上用了6個epochs并沒有發現有提升,可能還要加大epochs,由于增加epochs會增加訓練時間,我并沒有繼續實驗下去。看到danpovey在論壇中讨論說libirispeech上并沒有複現出來,

谷歌可能是在TPU上訓練幾百個epochs實驗出來的。

繼續閱讀