1.一種半監督瞬態噪聲抑制方法,其特征在于,包括:
步驟一、在訓練階段,首先構建說話人干凈語音和說話人在瞬態噪聲環境中的帶噪語音訓練數據集;然后對說話人干凈語音做短時傅里葉變換得到其時頻譜,提取其幅度,利用稀疏非負矩陣分解方法獲得干凈語音的基矩陣;接著對說話人帶噪語音做短時傅里葉變換得到其時頻譜,將最優修正對數譜幅度估計算法用于從帶噪語音中提取瞬態噪聲,進一步利用提取的瞬態噪聲與連續干凈語音的相關系數與門限比較,剔除其中的剩余語音成分,獲得更干凈的噪聲,利用稀疏非負矩陣分解方法獲得其基矩陣;
步驟二、在檢測階段,對帶噪語音做短時傅里葉變換,獲得時頻譜,提取其幅度,在干凈語音基矩陣和瞬態噪聲基矩陣上分解得到相應的權矩陣,通過基矩陣和權矩陣的運算,得到語音和噪聲時頻譜幅度的初始估計,進一步利用掩碼得到它們的最終估計,做短時傅里葉逆變換,得到抑制噪聲后的時域語音,另外,還利用了估計的瞬態噪聲更新其基矩陣,有利于對噪聲環境的自適應;
訓練階段具體包括:
步驟1、構建語音訓練數據集;構建說話人干凈語音的訓練數據集{str(t)}和說話人在瞬態噪聲環境中的帶噪語音訓練數據集{xtr(t)};擊鍵、鼠標點擊、敲擊等突然出現的短促聲音都屬于瞬態噪聲;
步驟2、訓練說話人干凈語音str(t),獲得干凈語音基矩陣SW(tf,f);
步驟21、對說話人干凈語音的訓練數據集{str(t)}中的信號str(t)做短時傅里葉變換(STFT),得到時頻域上的時頻譜,即:
Str(tf,f)=STFT{str(t)},
其中,STFT{ }為短時傅里葉變換算子,tf和f分別為時間幀和頻率點,|Str(tf,f)|為Str(tf,f)的幅度;
步驟22、采用稀疏非負矩陣分解(SNMF)方法學習說話人干凈語音時頻譜的幅度特征,得到相應的基矩陣SW(tf,f),基矩陣通過如下的分解獲得:
|Str(tf,f)|=SW(tf,f)SH(tf,f)+μ|SH(tf,f)|1,
其中,SH(tf,f)是說話人干凈語音str(t)的時頻譜幅度權矩陣,μ為稀疏參數,|·|1表示1范數;
步驟3、訓練說話人帶噪語音xtr(t)=str(t)+ntr(t),獲得瞬態噪聲基矩陣NW(tf,f);
步驟31、對由說話人在瞬態噪聲環境中的語音訓練數據集{xtr(t)}中的xtr(t)做短時傅里葉變換(STFT),得到時頻域上的時頻譜,即:
Xtr(tf,f)=STFT{xtr(t)},
其中,STFT{ }為短時傅里葉變換算子,tf和f分別為時間幀和頻率點,|Xtr(tf,f)|為Xtr(tf,f)的幅度;
步驟32、瞬態噪聲與語音相比,時域上變化很快,頻域上分布廣泛,通過設計參數,將最優修正對數譜幅度估計算法(OMLSA)用于從帶噪語音xtr(t)時頻譜Xtr(tf,f)中提取瞬態噪聲,即:
其中OMLSA{ }為最優修正對數譜幅度估計算子;
步驟33、用語音活動檢測(VAD)算子檢測干凈語音,裁剪掉靜音段,形成連續干凈語音,其時頻譜記為按下式計算與Str(tf,f)的相關系數:
其中,CORR{ }為相關系數算子,如果相關系數大于預先給定的門限,說明該幀噪聲與語音相似度高,則舍棄該幀噪聲;如果相關系數小于預先給定的門限,說明該幀噪聲與語音相似度低,則保留該幀噪聲;這樣能夠獲得更干凈的瞬態噪聲,記為Ntr(tf,f),|Ntr(tf,f)|為Ntr(tf,f)的幅度;
步驟34、采用稀疏非負矩陣分解(SNMF)方法學習噪聲時頻譜Ntr(tf,f)的幅度特征,得到相應的基矩陣NW(tf,f),基矩陣通過如下的分解獲得:
|Ntr(tf,f)|=NW(tf,f)NH(tf,f)+μ|NH(tf,f)|1,
其中,NH(tf,f)是瞬態噪聲Ntr(tf,f)的時頻譜幅度權矩陣,μ為稀疏參數,|·1表示1范數;
檢測階段具體包括:
步驟4、抑制說話人在瞬態噪聲環境中的帶噪語音y(t)=s(t)+n(t)中的瞬態噪聲n(t);
步驟41、說話人在瞬態噪聲環境中的帶噪語音y(t)=s(t)+n(t),做短時傅里葉變換,得到時頻域上的時頻譜,即:
Y(tf,f)=STFT{y(t)}=S(tf,f)+N(tf,f),
其中,STFT{ }為短時傅里葉變換算子,tf和f分別為時間幀和頻率點,|Y(tf,f)|為Y(tf,f)的幅度;
步驟42,帶噪語音時頻譜的幅度|Y(tf,f)|在基矩陣SW(tf,f)和NW(tf,f)上進行稀疏非負矩陣分解,獲得相應的權矩陣,計算如下:
其中,SH(tf,f)和NH(tf,f)分別是|Y(tf,f)|在說話人干凈語音基矩陣SW(tf,f)和瞬態噪聲基矩陣NW(tf,f)上分解得到的權矩陣,μ為稀疏參數,|·1表示1范數;
步驟43,對帶噪語音中語音和噪聲時頻譜幅度進行初始估計;
首先,利用在說話人干凈語音基矩陣SW(tf,f)分解得到的權矩陣SH(tf,f)估計出說話人干凈語音時頻譜幅度,如下式所示:
其次,利用瞬態噪聲基矩陣NW(tf,f)分解得到的權矩陣NH(tf,f)估計出瞬態噪聲時頻譜幅度,如下式所示:
步驟45,對干凈語音時頻譜的最終估計,
依據初始估計結果,計算說話人干凈語音的比例掩碼:
按下式對干凈語音和瞬態噪聲時頻譜估計:
其中,為矩陣對應元素乘法算子;
步驟46,獲得噪聲抑制后的時域語音信號,
對估計的語音信號時頻譜做短時傅里葉逆變換(ISTFT),得到:
其中,ISTFT{ }為短時傅里葉逆變換算子;
步驟47,估計瞬態噪聲時頻譜用于更新瞬態噪聲基矩陣,令:
執行步驟33和步驟34,可以獲得更新后的瞬態噪聲基矩陣NW(tf,f)。