一、语音处理简介

MATLAB是一种功能强大, 具有很好的交互性的数值计算和可视化计算高级语言, 其强大的矩阵运算, 数值分析以及信号处理功能使其广泛应用于众多科学领域中。因此作者使用MATLAB作为设计工具软件来进行语音信号去噪处理。

1 总体设计

2 语音信号采集和加噪
2.1 语音信号采集

2.2 语音信号加噪

3 语音信号去噪方法

3.1 IIR滤波器语音去噪
IIR滤波器一般有三种设计方法, 分别为:零极点位置累试法、利用模拟滤波器设计数字滤波器和最优化设计法。本文选用滤波器方法, 在设计IIR滤波器的时候可以借鉴经典的成熟的模拟滤波器, 如巴特沃斯滤波器、切比雪夫滤波器和椭圆滤波器等。文章将使用巴特沃斯低通滤波器来设计数字滤波器。

二、部分源代码

function varargout = main(varargin)% MAIN MATLAB code for main.fig%      MAIN, by itself, creates a new MAIN or raises the existing%      singleton*.%%      H = MAIN returns the handle to a new MAIN or the handle to%      the existing singleton*.%%      MAIN('CALLBACK',hObject,eventData,handles,...) calls the local%      function named CALLBACK in MAIN.M with the given input arguments.%%      MAIN('Property','Value',...) creates a new MAIN or raises the%      existing singleton*.  Starting from the left, property value pairs are%      applied to the GUI before main_OpeningFcn gets called.  An%      unrecognized property name or invalid value makes property application%      stop.  All inputs are passed to main_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 main% Last Modified by GUIDE v2.5 25-Dec-2017 23:52:39% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name',       mfilename, ...                   'gui_Singleton',  gui_Singleton, ...                   'gui_OpeningFcn', @main_OpeningFcn, ...                   'gui_OutputFcn',  @main_OutputFcn, ...                   'gui_LayoutFcn',  [] , ...                   'gui_Callback',   []);if nargin && ischar(varargin{1})    gui_State.gui_Callback = str2func(varargin{1});endif 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 main is made visible.function main_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 main (see VARARGIN)% Choose default command line output for mainhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes main wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = main_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 structurevarargout{1} = handles.output;% --- 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)%---------------------------利用函数wavread对语音信号的采集--------------------------------%global wav_in;global wav_in_1;global Fs;global bits;global n;global f1;[filename pathname]=uigetfile({'*.wav'}, 'File Selector');[wav_in,Fs] = audioread([pathname '\' filename]);handles.wav_in = wav_in;guidata(hObject, handles);axes(handles.axes1);% aa=abs(fftshift(wav_in));% plot(aa);title('')N=length(wav_in); n=0:N-1; plot(n,wav_in);                             %画出原始语音信号的波形 xlabel('n'); ylabel('x(n)'); title('原始语音信号'); f1=fft(wav_in,N);            %对语音号进行快速傅里叶变换,得出频谱% GX=fft(wav_in,512);

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理（第3版）[M].清华大学出版社，2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社，2019.
[3]宋云飞,姜占才,魏中华.基于MATLAB GUI的语音处理界面设计[J].科技信息. 2013,(02)
[4]韩长军.基于MATLAB的语音信号去噪方法应用[J].辽东学院学报(自然科学版). 2017,24(01)

3 备注