燕麗紅
(西安歐亞學院信息工程學院 西安 710065)
語音信號作為當今生活中最常用的信號被廣泛引用[1~2],而語音信號在信息的傳輸過程中的可靠性、有效性以及其他的一些問題也都不斷地出現,不斷被學者去攻克,而如今大數據崛起標志新時代的到來,對語音信號的處理更是要求及時、有效,可靠[3~4]。因此,本文首先對語音信號進行分析,并模擬通信信道的噪聲進行加噪聲音的分析,進而設計合理的濾波器進行語音信號的回復,主要通過Matlab及GUI人機界面進行了語音信號的處理,對于實際語音信號分析具有很重要的指導作用,同時對于學生進行信號處理類課程的學習奠定了一定的基礎。
本系統主要通過麥克風、錄音軟件等形式進行語音信號的采集,并根據采樣定理進行語音信號的離散化處理,并模擬具體的通信信道進行加噪語音信號的產生,進行通過數字信號處理系統設計相關理論進行濾波器設計,進而實現原始語音的回復。系統實現框圖如圖1所示。

圖1 典型的語音信號處理框圖
audioread函數:讀取MP3格式音頻。
Freqz函數:計算線性系統的響應頻率,包括幅頻響應和相頻響應。
rand函數:在某一信號中加入隨機噪聲。
cheb1ord函數:切比雪夫1型濾波器。
Filter函數:一維數字濾波器[5~8]。
首先通過格式工廠將自己的錄音通過格式工廠進行轉換成MP3,進而使用audioread函數進行調用并實現原始語音的產生。
fs=16000;
[x,fs,bits]=audioread(‘ 這 是 我 的 錄 音 。mp3’);
play(x); %話音回放
N=length(x); % 計算信號x的長度
n=0:N-1;
figure(1);
plot(n,x1);%畫出原始語音信號的時域波形

圖2 原始語音和加噪語音時域、頻域圖
由于通信信道自帶會有噪聲,因此模擬信道進行隨機噪聲的產生[9],進而模擬帶噪信號進行設計。
L=length(x);%計算音頻信號的長度
n=0.04*randn(L,2);%產生等長度的隨機噪聲信號
x_z=x+n;%將兩個信號疊加成一個新的信號——加噪聲處理
sound(x_z);%對加噪后的語音信號進行分析
n=length(x);%選取變換的點數
x_zp=fft(x_z,n);%對n點進行傅里葉變換到頻域
f=fs*(0:n/2-1)/n;%對應點的頻率
根據語音信號的特點,設計數字濾波器[10],對加噪后的語音信號進行濾波處理。
wp=0.01;ws=0.06;rp=1;rs=50;
[N4,Wc]=buttord(wp,ws,rp,rs);
[B,A]=butter(N4,Wc);
[Hd,w]=freqz(B,A);

圖3 巴特沃斯過濾前后對比圖
通過圖形可以明顯看出,采用巴特沃斯濾波器進行的語音信號處理很好地進行了還原。
結合語音信號處理的框圖,通過GUI設計人機交互界面[11~12],方便用戶進行原始信號,加噪信號,及濾波器設計等模塊的設計,對不同的模塊設計其相應的屬性進行控件的設置,通過與Matlab產生的信號進行對比和設計,對于用戶對信號的分析可以更有效和直觀[13~15]。
首先在GUI界面中,構建人機交互界面,包含原始語音、加噪語音、濾波器實現方法(脈沖響應不變法、雙線性變換法)及退出模塊,通過設置控件屬性,調整控件大小,設計的語音信號處理平臺如圖4所示。

圖4 基于GUI的語音信號處理平臺框架
function pushbutton2_Callback(hObject,eventdata,handles)
%hObjecthandle to pushbutton2(see GCBO)
%eventdata reserved-to be defined in a future version of Matlab
%handles structure with handles and user data(see GUIDATA)
y1=fft(x1,512);
f=Fs*(0:511)/512;
Au=0.04;
wav_in=wav_in(:,1);
t=0:1/Fs:(size(x1)-1)/Fs;%將所加噪聲信號的點數調整到與原始信號相同
d=[Au*cos(2*pi*5000*t)]';%噪聲為 5kHz的余弦信號
x2=10*x1+d;
y2=fft(x2,512);
handles.x1=x2
guidata(hObject,handles);
axes(handles.axes2);
plot(t,x2)
title(‘加噪后的信號’);

圖5 基于GUI的加噪語音信號的產生
%---Executes on button press in pushbutton3。
function pushbutton3_Callback(hObject,eventdata,handles)
%hObjecthandle to pushbutton3(see GCBO)
%eventdata reserved-to be defined in a future version of Matlab
%handles structure with handles and user data(see GUIDATA)
global x1;
global x2;
global Fs;
global bits;
mc(x2,Fs,bits,hObject,handles)
%---Executes on button press in pushbutton4。
function pushbutton4_Callback(hObject,eventdata,handles)
%hObjecthandle to pushbutton4(see GCBO)
%eventdata reserved-to be defined in a future version of Matlab
%handles structure with handles and user data(see GUIDATA)
sx(x2,Fs,bits,hObject,handles)

圖6 基于GUI的濾波器設計的原始語音信號的還原
語音信號處理作為信號處理的典型應用之一,如何有效、快捷地進行系統的設計和分析,是滿足當今大數據處理時代要求高效、可靠的基本條件,本文通過Matlab進行語音信號的采集和處理,通過通過GUI界面設計了語音信號處理平臺,方便用戶進行系統有效的分析和處理。而在圖形可視化界面設計過程中,還可以將其設計的濾波器系統保存為.txt文件,從而方便在其他平臺上的數據處理和分析。這將對用戶進行DSP處理器進行系統設計帶來很大的便利,也將會是用戶在工程應用上的一個有效的數據分析工具。