1 简介
随着智能化设备的广泛普及,语音信号作为智能化设备的一个重要的交互语言显得尤为重要,语音信号处理被广泛地应用在语音识别,智能控制,身份识别,智能家居等领域,MATLAB仿真软件具有强大的信号处理功能,能对语音信号进行平移,尺度变换,系统分析,时频转换和滤波等操作,文章借助MATLAB软件对语音信号进行处理,实现对语音信号的音效处理,时频分析,滤波处理等功能.
2 部分代码
function varargout = zuoye(varargin)
% ZUOYE MATLAB code for zuoye.fig
% ZUOYE, by itself, creates a new ZUOYE or raises the existing
% singleton*.
%
% H = ZUOYE returns the handle to a new ZUOYE or the handle to
% the existing singleton*.
%
% ZUOYE('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in ZUOYE.M with the given input arguments.
%
% ZUOYE('Property','Value',...) creates a new ZUOYE or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before zuoye_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to zuoye_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help zuoye
% Last Modified by GUIDE v2.5 03-May-2020 17:00:59
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @zuoye_OpeningFcn, ...
'gui_OutputFcn', @zuoye_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before zuoye is made visible.
function zuoye_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to zuoye (see VARARGIN)
% Choose default command line output for zuoye
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes zuoye wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = zuoye_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on selection change in popupmenu1.
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu1
% --- Executes during object creation, after setting all properties.
function popupmenu1_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global x;
global fs;
global bits;
global file;
clear sound;
if nargin<1;action='initialized';end;
[fname,pname]=uigetfile('*.wav','Open Wave File');
file=[pname,fname];
[x,fs,bits]=wavread(file); % 读入声音文件(*.wav)
sound(x,fs);
set(handles.edit1,'string',fs);
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%画原信号时域波形
global x;
global w;
global fs;
axes(handles.axes1);
N=length(x);
t=[0:1:N-1]/fs;
plot(t,x);
xlabel('时间t')
ylabel('幅值')
n=[0:N-1]';
w=2*n*pi/N;
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle 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 x;
global w;
X=fft(x);
axes(handles.axes2);
plot(w/pi,abs(X))
axis([0,2,0,500])
xlabel('归一化')
ylabel('幅值')
% --- Executes on button press in pushbutton4.
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global pitch
global nFrames
axes(handles.axes2);
xt=1:nFrames;
xt=20*xt;
plot(xt,pitch)
xlim([0,3]);
axis([xt(1) xt(nFrames) 0 max(pitch)+50]);
ylabel('基音频率/HZ');
xlabel('时间');
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global ybiansu;
global fs;
axes(handles.axes1);
N=length(ybiansu);
t=[0:1:N-1]/fs;
plot(t,ybiansu);
xlabel('时间t')
ylabel('幅值')
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global ybiansu;
NS=length(ybiansu);
nS=[0:NS-1]';
wS=2*nS*pi/NS;
YH=fft(ybiansu);
axes(handles.axes2);
plot(wS/pi,abs(YH))
axis([0,2,0,500])
xlabel('归一化')
ylabel('幅值')
% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%画重采样时域波形
global x2;
global fs;
axes(handles.axes1);
N=length(x2);
t=[0:1:N-1]/fs;
plot(t,x2);
xlabel('时间t')
ylabel('幅值')
% --- Executes on button press in pushbutton9.
function pushbutton9_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton9 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global x2;
X2=fft(x2);
NS=length(x2);
nS=[0:NS-1]';
wS=2*nS*pi/NS;
axes(handles.axes2);
plot(wS/pi,abs(X2))
axis([0,2,0,500])
xlabel('归一化')
ylabel('幅值')
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in pushbutton10.
function pushbutton10_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%进行滤波
global x;
global fs;
global pitch;
global nFrames;
xn=x;
meen=mean(xn);
xn= xn - meen;%去均值
fRate=floor(40*fs/1000);%帧长40ms 一共640个点 floor不大于x的最大整数
updRate=floor(20*fs/1000);%帧移20ms
n_samples=length(xn);%语音长度
nFrames=floor(n_samples/updRate)-1; %帧数
k=1;
pitch=zeros(1,nFrames);%处理后基频矩阵
f0=zeros(1,nFrames);%基频矩阵
LF=floor(fs/500);%设置基音搜索的范围 点数
HF=floor(fs/70);%设置基音搜索的范围 点数
m=1;
avgF0=0;
for t=1:nFrames
yin=xn(k:k+fRate-1);%当前帧数据
frameSize=length(yin);
yin2=yin.*hamming(frameSize); % 加hamming窗
cn1=rceps(yin2);
cn=cn1(LF:HF);%求倒谱
[mx_cep ind]=max(cn);%求倒谱最大值
if mx_cep > 0.08 & ind >LF%设置门限,找到峰值位置
a= fs/(LF+ind);
else
a=0;
end
f0(t)=a;
if t>2 & nFrames>3
z=f0(t-2:t);
md=median(z);%中值滤波对基音轨迹图进行平滑
pitch(t-2)=md;
if md > 0
avgF0=avgF0+md;
m=m+1;
end
else
if nFrames<=3
pitch(t)=a;
avgF0=avgF0+a;
m=m+1;
end
end
k=k+updRate;
end
Mypitch = max(pitch);
set(handles.edit2,'string',Mypitch);
Myt=1/Mypitch;
set(handles.edit5,'string',Myt);
function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in pushbutton11.
function pushbutton11_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton11 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global x;
global fs;
global ybiansu
clear sound;
vv=str2double(get(handles.edit3,'String'))%读取变速的倍数
N=length(x)
n1=0:N-1;
n2=0:vv:N-1;
ybiansu=interp1(n1,x,n2,'nearest');
sound(ybiansu,fs)
function edit3_Callback(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit3 as text
% str2double(get(hObject,'String')) returns contents of edit3 as a double
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in pushbutton12.
function pushbutton12_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton12 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global x;
global fs;
global x2;
clear sound;
fs2=str2double(get(handles.edit4,'String'));
function edit5_Callback(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit5 as text
% str2double(get(hObject,'String')) returns contents of edit5 as a double
% --- Executes during object creation, after setting all properties.
function edit5_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
3 仿真结果
4 参考文献
[1]周代勇, 曾妍萍, 蔡燕. 基于Matlab的语音识别端点检测算法研究与实现[J]. 内江科技, 2013, 34(9):2.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。