語音處理程序中受到各種各樣噪聲的干擾,不但降低了語音質量,而且還將使整個系統無法正常作業,因此,為了消除噪聲干擾,在現代語音處理技術中,工業上一般采用語音增強技術來改善語音質量從而提高系統性能,
本論文基于短時幅度譜估計來研究語音增強,主要介紹了功率譜相減、維納濾波法,并介紹了這幾種語音增強方法的基本原理和實作方法,通過研究,我們得到在白噪聲的條件下,這些語音增強方法具有很好的增強效果,可作為開發實用語音增強方法的基礎,
********************************************************************
clc,clear
[x, fs]=wavread('no1.wav');
sound(x, fs); % 播放此音頻
snr1=SNR(x,0.002*randn(1))
time=(1:1024)/fs;
figure(1);
plotspec(x,1/fs); %原始的語音信號時域和頻域分析
y=wiener(x,fs); %通過維納濾波器進行語音信號的增強
figure(2);
plotspec(y,1/fs); %原始的語音信號時域和頻域分析
sound(y, fs); %播語音增強后的音頻
snr2=SNR(y,0.002*randn(1))
這段代碼主要含義為首先讀取一個語音信號,然后對這個信號進行頻譜分析,最后將這個語音信號通過維納濾波,并對維納濾波以后的信號進行頻譜分析從而對比語音增強前后兩次效果,
在這里我們主要自定義了以下幾個函式:SNR,plotspec,wiener分別為信噪比計算函式,頻譜分析函式,維納濾波函式,其中wiener函式是系統的主要函式,通過這個函式,我們就可以完成語音信號的增強處理,然后通過plotspec進行信號的頻譜分析,
其中維納濾波主要程序如下:
********************************************************************
%維納濾波
for k=1:nf
if k<=NNoise
SpeechFlag=0;
NoiseCounter=NNoise;
else
NoiseMargin=3;
HangOver=8;
SpectralDist= 20*(log10(ymag(:,k))-log10(MN));
SpectralDist(find(SpectralDist<0))=0;
Dist=mean(SpectralDist);
if (Dist < NoiseMargin)
NoiseFlag=1;
NoiseCounter=NoiseCounter+1;
else
NoiseFlag=0;
NoiseCounter=0;
end
if (NoiseCounter > HangOver)
SpeechFlag=0;
else
SpeechFlag=1;
end
end
下面我們來對比分析以后的效果,

圖4-1 原始信號的時域頻域信號分析
通過運行程式,通聽覺上可以感受到該語音信號有明顯的雜音,聽起來很不舒服,通過運行后結果,我們可以看到,該語音信號的時域部分,在每次人發音間隔之間具有明顯的噪聲干擾也就是我們所謂的噪聲,

圖4-2 通維納濾波進行語音增強后的信號的時域頻域信號分析
通過語音濾波以后,從聽覺好可以聽到語音已經變的清晰,沒用明顯的雜音干擾,分析其信號頻譜,可以看到,其有效頻率和高頻的幅度比變大,說明通過語音增強后音質得到了明顯的改善,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/143134.html
標籤:其他
上一篇:走進音視頻的世界——音視頻解碼
下一篇:帕塞瓦爾定理(Parseval)
