基於Matlab的MMSE的語音加強算法的研究

本課題隸屬於學校的創新性課題研究項目。2012年就已經作完了,今天一併拿來發表。php

 

目錄:前端

--基於譜減法的語音信號加強算法..................................................................... 1算法

一:語音加強技術概述........................................................................................ 3編程

二:語音加強的目的............................................................................................ 3編程語言

三:語音信號的相關特性.................................................................................... 3函數

1 語音特性..................................................................................................... 3性能

1. 1 語音信號具備短時平穩性.............................................................. 3設計

1.2.語音信號能夠分爲濁音和清音....................................................... 33d

1.3.語音信號能夠利用統計分析特徵描述........................................... 4對象

2 人耳感知特性............................................................................................. 4

3 噪聲特性..................................................................................................... 4

3.1週期性噪聲....................................................................................... 4

3.2脈衝噪聲........................................................................................... 5

3.3寬帶噪聲........................................................................................... 5

3.4同聲道語音干擾............................................................................... 5

3.5傳輸噪聲........................................................................................... 5

四:國內外有關抗噪聲技術的解決方案............................................................ 5

1 語音加強算法............................................................................................. 5

(1) 基於譜減法的語音加強................................................................... 6

(2) 自適應濾波法的語音加強............................................................... 6

(3) 短時對數譜的MMSE語音加強...................................................... 6

2 尋找穩健的語音特徵做爲特徵參數......................................................... 6

3 基於模型參數自適應的噪聲補償算法..................................................... 6

五:語音加強算法的三種具體算法分析與比較................................................ 6

1:譜減法...................................................................................................... 6

(1) 譜減法算法的理論分析................................................................... 6

(2) 經過語音加強技術改善語音質量的過程....................................... 7

(3) 譜減法的流程圖............................................................................... 7

(4)譜減法原理圖.................................................................................... 8

2:自適應噪聲抵消法.................................................................................. 9

(1) 自適應濾波器原理........................................................................... 9

(2) 結構框圖......................................................................................... 10

3:短時對數譜的MMSE語音加強算法................................................... 11

六:實驗環境(matlab)簡介........................................................................... 13

七:算法的實現及仿真結果.............................................................................. 14

八:附件.............................................................................................................. 15

九:參考文獻...................................................................................................... 17

 

一:語音加強技術概述

在通訊過程當中語音受到來自周圍環境、傳輸媒介引入的噪聲,使接收到的語音信號並不是純淨的原始語音信號,而是受噪聲污染的帶噪語音信號。這裏的「噪音」定義爲所需語音信號之外的全部干擾信號。

干擾信號能夠是窄帶的或寬帶的、白噪聲的或有色噪聲的、聲學的或電學的、加性的或乘性的,甚至能夠是其它無關的語音。由噪聲致使的語音質量的降低會使許多語音處理系統的性能急劇惡化。採用語音加強技術進行預處理,可有效地改善系統性能。

二:語音加強的目的

對收聽人而言主要是改善語音質量,提升語音可懂度,減小疲勞感;對語音處理系統(識別器、聲碼器、手機)而言是提升系統的識別率和抗干擾能力。

三:語音信號的相關特性

語音加強與語音信號處理理論有關,並且涉及到人的聽覺感知和語音學。噪聲來源衆多,隨應用場合不一樣而特性各異,所以難以找到一種通用的語音加強算法能夠適用於各類噪聲環境,必須針對不一樣環境下的噪聲採起不一樣的語音加強策略。所以,要進行語音加強首先要了解語音特性、人耳感知特性和噪聲特性。

1 語音特性
1. 1 語音信號具備短時平穩性

聲道形狀有相對穩定性,在一段時間內(10ms~30ms),人的聲帶和聲道形狀是相對穩定的,可認爲其特徵是不變的,於是語音的短時譜具備相對穩定性,在語音分析中能夠把語音信號分爲若干分析幀,每一幀的語音能夠認爲是準穩定的。語音加強能夠利用這種短時平穩性。

1.2.語音信號能夠分爲濁音和清音

語音能夠分爲週期性的濁音和非週期性的清音。在語音加強中,能夠利用濁音的週期性特徵,採用梳狀濾波器提取語音份量或者抑制非語音信號,而清音則難以與寬帶噪聲區分。

1.3.語音信號能夠利用統計分析特徵描述

做爲一個隨機過程,語音信號能夠利用許多統計分析特徵進行分析。語音的短時譜幅度統計特徵是時變的,只有當分析幀長趨於無窮大時,才能近似具備高斯分佈。在高斯模型的假設中,能夠認爲傅里葉展開係數是獨立的高斯隨機變量,均值爲零,而方差是時變的。在有限幀長時這種高斯模型只是一種近似的描述,能夠做爲分析的前提在寬帶噪聲污染的帶噪語音加強中應用。

2 人耳感知特性

人耳對語音的感知主要是經過語音信號頻譜份量幅度獲取的,對各份量相位則不敏感,對頻率高低的感覺近似與該頻率的對數值成正比。人耳具備掩蔽效應,人耳除了能夠感覺聲音的強度、音調、音色和空間方位外,還能夠在兩人以上的講話環境中分辨出所須要的聲音,這種分辨能力是人體內部語音理解機制具備的一種感知能力。人類的這種分離語音的能力與人的雙耳輸入效應有關,稱爲「雞尾酒會效應」。語音加強的最終效果度量是人耳的主觀感受,因此在語音加強中能夠利用人耳感知特性來減小運算代價。

3 噪聲特性

根據與輸入語音信號的關係,噪聲可分爲加性噪聲和非加性噪聲兩類。對某些非加性噪聲而言,能夠經過必定的變換轉換成加性噪聲。語音處理中的加性噪聲大致上能夠分爲週期性噪聲、脈衝噪聲、寬帶噪聲和同聲道其餘語音的干擾等。

3.1週期性噪聲

週期性噪聲主要來源於發動機等週期性運轉的機械,電氣干擾也會引發週期性噪聲。特色是頻譜上有許多離散的線譜。實際信號受多種因素的影響,線譜份量一般轉變爲窄帶譜結構,並且一般這些窄帶譜都是時變的,位置也不固定。必須採用自適應濾波的方法纔能有效地區分這些噪聲份量。

3.2脈衝噪聲

脈衝噪聲來源於爆炸、撞擊、放電及突發性干擾等。特徵是時間上的寬度很窄。在時域消除脈衝噪聲過程以下:根據帶噪語音信號幅度的平均值肯定閾值。當信號超出這一閾值時判別爲脈衝噪聲。而後對信號進行適當的衰減,就可徹底消除噪聲份量,也可使用內插方法將脈衝噪聲在時域上進行平滑。

3.3寬帶噪聲

寬帶噪聲來源不少,熱噪聲、氣流噪聲及各類隨機噪聲源、量化噪聲均可以視爲寬帶噪聲。寬帶噪聲與語音信號在時域和頻域上基本上重疊,只有在無話期間,噪聲份量才單獨存在。所以消除這種噪聲比較困難。對於平穩的寬帶噪聲,一般能夠認爲是白色高斯噪聲。

3.4同聲道語音干擾

干擾語音信號和待傳語音信號同時在一個信道中傳輸所形成的語音干擾稱爲同聲道語音干擾。區別有用語音和干擾語音的基本方法是利用它們的基音差異。考慮到通常狀況下兩種語音的基音不一樣,也不成整數倍,這樣能夠用梳狀濾波器提取基音和各次諧波,再恢復出有用語音信號

3.5傳輸噪聲

這是傳輸系統的電路噪聲。處理這種噪聲能夠採用同態處理的方法,把非加性噪聲變換爲加性噪聲來處理。

四:國內外有關抗噪聲技術的解決方案

目前國內外有關抗噪聲技術的的研究成果的三類解決方法:

1 語音加強算法

採用語音加強算法,提升語音識別系統前端預處理的抗噪聲能力,提升輸入信號的信噪比。

(1) 基於譜減法的語音加強
(2) 自適應濾波法的語音加強
(3) 短時對數譜的MMSE語音加強
2 尋找穩健的語音特徵做爲特徵參數

尋找穩健的語音特徵做爲特徵參數,實驗證實,這類參數對寬帶語音具備較好的抗噪性;

3 基於模型參數自適應的噪聲補償算法

五:語音加強算法的三種具體算法分析與比較

1:譜減法
(1) 譜減法算法的理論分析

譜減法是利用噪聲的統計平穩性以及加性噪聲與語音不相關的特色而提出的一種語音加強方法。這種方法沒有使用參考噪聲源,但它假設噪聲是統計平穩的,即有語音期間噪聲的幅度譜的指望值與語音間隙噪聲的幅度譜的指望值相等。用無語音間隙測量計算獲得的噪聲頻譜的估計值取代有語音噪聲的頻譜,與含噪聲語音頻譜相減,獲得語音頻譜的估計值。當上述差值獲得的負的幅度值時,將其置零。因爲人耳對語音的感知主要是經過語音信號中各頻譜份量幅度得到的,對各份量的相位不敏感。所以,此類語音加強方法將估計的對象放在短時譜幅度上。

假設帶噪信號爲:

y(n)=s(n)+d(n),0<=n<=N-1

其中s(n)爲純淨語音,d(n)爲平穩加性噪聲,y(n)一般須要加窗處理來消除分幀是帶來的階段效應,這裏爲方面依然使用y(n)表示加窗處理後的帶噪信號。因爲實際的分析幀長有限,傅里葉係數之間存在着必定的相關性。假設s(n)知足高斯分佈,其傅里葉變換至關於多個高斯樣本的加權和,仍然能夠認爲知足高斯分佈,均值爲0,方差能夠經過無語音期間的噪聲分析獲得。基於短時譜幅度估計的語音加強就是利用已知的噪聲功率譜信息,從中估計出。因爲人耳對相位不敏感,爲此只要估計出Sk,而後利用帶噪語音的相位,進行傅里葉反變換就可獲得加強的語音。基於語音短時譜估計方法的通常原理以下所示。根據實現估計的方法不一樣,能夠分爲譜減法,維納濾波法和最小均方偏差

譜減法在頻域將帶噪語音的功率譜減去噪聲的功率譜獲得純淨語音功率譜估計,開方後就獲得語音幅度譜估計,用帶噪語音的相位來近似純淨語音的相位,再採用反傅里葉變換回復時域信號。它的有點是比較簡單,只須要進行反傅里葉變換,並且實時實現較容易。但譜減法適用的信噪比範圍較窄,在信噪比較低時對語音的可懂度損傷最大,這是由於信噪比主要表明了由濁音決定的大信號能量,而語音可懂度主要取決於元音和相對較小的表明輔音的信號。因此,實際應用時除了要下降噪聲外,還要兼顧語音的可懂度和天然度。另外,因爲頻譜直接相減會使加強後的語言產生「音樂噪聲」,它具備必定的節奏性,聽上去相似音樂聲,由此而得名。

(2) 經過語音加強技術改善語音質量的過程

clip_image002

(3) 譜減法的流程圖

clip_image004

利用噪聲的統計平穩性以及加性噪聲與語音不相關的特色而提出的一種語音加強方法。沒有使用參考噪聲源,但它假設噪聲是統計平穩的,即有語音期間噪聲幅度譜的指望值與無語音間隙噪聲的幅度譜的指望值相等。用無語音間隙測量計算獲得的噪聲頻譜的估計值取代有語音期間噪聲的頻譜,與含噪語音頻譜相減,獲得語音頻譜的估計值。此類語音加強方法將估計的對象放在短時譜幅度上。

(4)譜減法原理圖

clip_image006

譜相減的物理意義:至關於對帶噪語音的每個頻譜份量乘以一個係數。信噪比高時,含有語音的可能性大,衰減係數小。反之,則認爲含有語音的可能性小,衰減係數大。

譜減法在頻域將帶噪語音的功率譜減去噪聲的功率譜獲得純淨語音功率譜估計,開方後就獲得語音幅度譜估計,用帶噪語音的相位來近似純淨語音的相位,再採用反傅里葉變換恢復時域信號。

譜減法優勢:比較簡單,只須要進行正反傅立葉變換,並且實時實現較容易。

譜減法缺點:適用的信噪比範圍較窄,在信噪比較低時對語音的可懂度損傷較大。因此實際應用時除了要下降噪聲外,還要兼顧語音的可懂度和天然度。

因爲頻譜直接相減會使加強後的語音產生「音樂噪聲」,它具備必定的節奏性,聽上去相似音樂聲,由此而得名。

2:自適應噪聲抵消法

clip_image008

設帶噪語音輸入爲y(n)=s(n)+d(n), s(n)爲語音信號,d(n)爲未知噪聲信號,r(n)參考噪聲輸入,也即自適應濾波器的輸入,v(n)是該濾波器的輸出。 r(n)與s(n)無關,而與d(n)相關。

(1) 自適應濾波器原理

在輸入過程的統計特性未知或是輸入過程的統計特性變化時,可以調整本身的參數,以知足某種最佳準則的要求。自適應濾波的目的就是經過對 r(n)的濾波,使輸出的噪聲估值v(n)儘量接近帶噪語音中的d(n),而後從帶噪語音中直接減去 v(n) ,達到語音加強的目的。

自適應濾波器一般採用FIR濾波器,係數採用最小均方偏差(MMSE)準則來迭代估計。判斷標準是使偏差信號e(n)能量最小:

clip_image010

其中,wk是濾波器係數,N是濾波器抽頭數。MMSE準則要求噪聲和語音相互獨立,這時,偏差信號e(n)能量最小,可保證v(n)與d(n)最接近。

自適應濾波器

自適應濾波器是可以根據輸入信號自動調整性能進行數字信號處理數字濾波器。做爲對比,非自適應濾波器有靜態的濾波器係數,這些靜態係數一塊兒組成傳遞函數

對於一些應用來講,因爲事先並不知道所須要進行操做的參數,例如一些噪聲信號的特性,因此要求使用自適應的係數進行處理。在這種狀況下,一般使用自適應濾波器,自適應濾波器使用反饋來調整濾波器係數以及頻率響應。

總的來講,自適應的過程涉及到將價值函數用於肯定如何更改濾波器係數從而減少下一次迭代過程成本的算法。價值函數是濾波器最佳性能的判斷準則,好比減少輸入信號中的噪聲成分的能力。

隨着數字信號處理器性能的加強,自適應濾波器的應用愈來愈常見,時至今日它們已經普遍地用於手機以及其它通訊設備、數碼錄像機和數碼照相機以及醫療監測設備中。

(2) 結構框圖

下面圖示的框圖是最小均方濾波器(LMS)和遞歸最小平方en:Recursive least squares filter,RLS)這些特殊自適應濾波器實現的基礎。框圖的理論基礎是可變濾波器可以獲得所要信號的估計。

clip_image012

在開始討論結構框圖以前,咱們作如下假設:

輸入信號是所要信號 clip_image014 和干擾噪聲 clip_image016 之和

clip_image018

可變濾波器有有限脈衝響應結構,這樣結構的脈衝響應等於濾波器係數。clip_image020 階濾波器的係數定義爲

clip_image022.

偏差信號或者叫做代價函數,是所要信號與估計信號之差

clip_image023

可變濾波器經過將輸入信號與脈衝響應做卷積估計所要信號,用向量表示爲

clip_image023[1]

其中

clip_image025

是輸入信號向量。另外,可變濾波器每次都會立刻改變濾波器係數

clip_image027

其中 clip_image029 是濾波器係數的校訂因子。自適應算法根據輸入信號與偏差信號生成這個校訂因子,LMS 和 RLS 是兩種不一樣的係數更新算法。

3:短時對數譜的MMSE語音加強算法

設觀察到的一幀帶噪信號爲clip_image031其中 clip_image033 爲純淨語

音信號,clip_image035 爲平穩、加性、高斯白噪聲。令

clip_image037

分別表示帶噪語音 y(t) 、信號 x(t) 和噪聲d(t) 進行FFT變換後的第k個頻譜份量。語音加強的任務就是利用已知的噪聲功率譜信息,從 y(t) 中估計出x(t) ,即由{Y0 , Y1 , L }估計出Xk 。這裏僅對頻譜幅度的對數感興趣,而認爲相位對語音質量影響不大,帶噪語音的短時譜可用快速傅里葉變換一幀的計算獲得,其相位提取後存儲起來,而後對純淨語音的短時對數譜做最小均方偏差估計。處理後的語音由估計獲得的幅度譜和相位重建。於是估值能夠簡化爲估計Ak 。Ak的估計式可寫成 clip_image039

clip_image041

clip_image043

clip_image045

clip_image047

clip_image049

六:實驗環境(matlab)簡介

MATLAB是矩陣實驗室(Matrix Laboratory)的簡稱,和Mathematica、Maple並稱爲三大數學軟件。它在數學類科技應用軟件中在數值計算方面數一數二。MATLAB能夠進行矩陣運算、繪製函數和數據、實現算法、建立用戶界面、鏈接其餘編程語言的程序等,主要應用於工程計算、控制設計、信號處理與通信、圖像處理、信號檢測、金融建模設計與分析等領域。

MATLAB的基本數據單位是矩陣,它的指令表達式與數學、工程中經常使用的形式十分類似,故用MATLAB來解算問題要比用C,FORTRAN等語言完相同的事情簡捷得多,而且mathwork也吸取了像Maple等軟件的優勢,使MATLAB成爲一個強大的數學軟件。在新的版本中也加入了對C,FORTRAN,C++ ,JAVA的支持。能夠直接調用,用戶也能夠將本身編寫的實用程序導入到MATLAB函數庫中方便本身之後調用,此外許多的MATLAB愛好者都編寫了一些經典的程序,用戶能夠直接進行下載就能夠用。

要求利用MATLAB來讀入(採集)語音信號,將它賦值給某一貫量。再將該向量看做一個普通的信號,對其進行FFT變換實現頻譜分析,再依據實際狀況對它進行濾波。而後咱們還能夠經過sound命令來對語音信號進行回放,以便在聽覺上來感覺聲音的變化。

七:算法的實現及仿真結果

該算法是利用Matlab進行仿真的。經過對時域波形的觀察,代表MMSE的語音加強算法可以有效地濾除背景噪聲,在用了有聲/無聲判斷後,「音樂噪聲」也大幅度下降。

clip_image051

八:附件

Matlab代碼

clear all

%-----------------讀入語音文件------------------------

[speech,fs,nbits]=wavread('chunge.wav');

%------------------讀入數據-----------------------------

%------------------參數定義-----------------------------

winsize=256; %窗長

n=0.04; %噪聲水平

size=length(speech); %語音長度

numofwin=floor(size/winsize); %幀數

ham=hamming(winsize)'; %產生漢明窗

hanwin=zeros(1,size); %定義漢明窗的長度

enhanced=zeros(1,size); %定於加強語音的長度

clean=zeros(1,winsize);

x=speech'+n*randn(1,size); %產生帶躁信號

noisy=n* randn(1,winsize);

N=fft(noisy); %對噪聲傅里葉變換

nmag=abs(N); %噪聲功率譜

%-------------------分幀-------------------------

for q=1:2*numofwin-1

frame=x(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2);

%-------------------對帶躁語音幀間重疊一半取值--------------------

hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=...

hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+ham;

%-------------------加窗----------------------------------

y=fft(frame.*ham); %對帶躁語音傅里葉變換

mag=abs(y); %噪聲語音功率譜

phase=angle(y); %帶躁語音相位

%-------------------幅度譜減---------------------------------------------------

for i=1:winsize

if mag(i)-nmag*(i)>0

clean(i)=mag(i)-nmag(i);

else

clean(i)=0;

end

end

%-----------------在頻域中從新合成語音---------------------------------------------

spectral=clean.*exp(1i*phase);

%-----------------反傅里葉變換並重疊相加----------------------------------------

enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2) =...

enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+real(ifft(spectral))

end

%------------------除去漢明窗引發的增益--------------------------------------

for i=1:size

if hanwin(i)==0

enhanced(i)=0

else

enhanced(i)=enhanced(i)/hanwin(i);

end

end

%計算加強先後的信噪比

%SNR1=10*log10(var(speech')/var(noisy));

%加躁語音信噪比

%SNR2=10*log10(var(speech')/var(enhanced-speech'));

%加強語音信噪比

wavwrite(x,fs,nbits,'noisy.wav');

%輸出帶躁信號

wavwrite(enhanced,fs,nbits,'enhanced.wav')

%輸出加強信號

%---------------畫波形

figure(1);

subplot(3,1,1);

plot(speech');

title('yuanshiyuyinboxing');

xlabel('yangdianshu');

ylabel('fudu');

axis([0 2.5*10^4-0.3 0.3]);

subplot(3,1,2);

plot(x);

title('jiazaoyuyinboxing')

xlabel('yangdianshu');

ylabel('fudu');

axis([0 2.5*10^4-0.3 0.3]);

subplot(3,1,3);

plot(enhanced);

title('zengqiangyuyinboxing');

xlabel('yangdianshu');

ylabel('fudu');

axis([0 2.5*10^4-0.3 0.3]);

九:參考文獻

張雪英著《數字語音處理及matlab仿真》 電子工業出版社 2010

Steven W Smith 《實用數字信號處理-從原理到應用》人民郵電出版社 2007

A V奧本海姆 《離散時間信號處理》西安交通大學出版社 1999

相關文章
相關標籤/搜索