当前位置:文档之家› 基于MATLAB GUI语音信号的采集分析系统

基于MATLAB GUI语音信号的采集分析系统

基于MATLAB GUI语音信号的采集分析系统
基于MATLAB GUI语音信号的采集分析系统

基于MATLABGUI的语音信号采集分析系统

前一阵子用MA TLAB GUI做了一个语音信号采集与分析的界面。功能包括录音、播放、时域、频域分析吧。也导入本地文件进行分析。

效果如下:

源码如下:

function varargout = GUI_1(varargin)

% GUI_1 MATLAB code for GUI_1.fig

% GUI_1, by itself, creates a new GUI_1 or raises the existing

% singleton*.

%

% H = GUI_1 returns the handle to a new GUI_1 or the handle to

% the existing singleton*.

%

% GUI_1('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in GUI_1.M with the given input arguments. %

% GUI_1('Property','Value',...) creates a new GUI_1 or raises the % existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before GUI_1_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to GUI_1_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 GUI_1

% Last Modified by GUIDE v2.5 25-May-2015 20:52:27

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @GUI_1_OpeningFcn, ...

'gui_OutputFcn', @GUI_1_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 GUI_1 is made visible.

function GUI_1_OpeningFcn(hObject, ~, 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 GUI_1 (see VARARGIN)

% Choose default command line output for GUI_1

set(handles.axes_t_m,'visible','off');

set(handles.axes_fft_m,'visible','off');

set(handles.axes_t_w,'visible','off');

set(handles.axes_fft_w,'visible','off');

global local_yn;

local_yn=0;

% a=imread('yanda.jpg');

% axes(handles.axes_t_m)

% image(a);

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes GUI_1 wait for user response (see UIRESUME)

% uiwait(handles.figure1);

ha=axes('units','normalized','position',[0 0 1 1]);

uistack(ha,'down')

II=imread('暖色.JPG');

image(II)

colormap gray

set(ha,'handlevisibility','off','visible','off');

%--- Outputs from this function are returned to the command line.

function varargout = GUI_1_OutputFcn(~, ~, 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 button press in pushbutton_luyin.

function pushbutton_luyin_Callback(hObject, ~, handles)

% hObject handle to pushbutton_luyin (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% global recObj;

% keyboard;

% global sex_flag

% switch sex_flag

% case 0

% set(handles.axes_t_m,'visible','on');

% set(handles.axes_fft_m,'visible','on');

% set(handles.axes_t_w,'visible','off');

% set(handles.axes_fft_w,'visible','off');

% case 1

% set(handles.axes_t_m,'visible','off');

% set(handles.axes_fft_m,'visible','off');

% set(handles.axes_t_w,'visible','off');

% set(handles.axes_fft_w,'visible','off');

% case 2

% set(handles.axes_t_m,'visible','off');

% set(handles.axes_fft_m,'visible','off');

% set(handles.axes_t_w,'visible','off');

% set(handles.axes_fft_w,'visible','off');

% end

global local_yn;

local_yn=0;

fs_chose=handles.fs_chose;

nBits=8;

nChannels=1;

%canshu={fs_chose,nBits,nChannels};

if(str2double(get(handles.et_time,'String'))==0) %添加str2double 后正常

set(handles.set_time,'String','时间参数输入错误!');

msgbox('认真点好吗亲输入时间参数先。','错误提示','Icon');

set(handles.set_time,'BackgroundColor','red');

pause(1);

set(handles.set_time,'BackgroundColor','default');

set(handles.set_time,'String','请输入录音时长');

else

%cla (handles.axes_t_m,'reset');

% set(handles.axes_t_m,'visible','off');

set(handles.pushbutton_luyin,'BackgroundColor','green');

set(handles.pushbutton_luyin,'String','正在录音...');

recObj = audiorecorder(fs_chose,nBits,nChannels);

disp('Start speaking.')

recordblocking(recObj, handles.recor_time);

disp('End of Recording.');

set(handles.pushbutton_luyin,'BackgroundColor','yellow');

set(handles.pushbutton_luyin,'String','录音结束');

%play(recObj);

pause(1);

%新加代码加入语音识别---刘帅20150526

% myRecording = getaudiodata(recObj);

% y1=myRecording; % ???ù????

% L=length(y1);

% NFFT = 2^nextpow2(L); % Next power of 2 from length of y

% Y = fft(y1,NFFT)/L;

% % f = fs_chose/2*linspace(0,1,NFFT/2+1);

% % keyboard;

% a=0;

% for i=1:fs_chose/2

% % if (2*abs(Y))>0.00015

% if 2*abs(Y)>(1e-5)

% %if(i==2)

% %msgbox('你个','性别提示','Icon');

% a=a+1;

% end

% end

% if a>10

% msgbox('你个','性别提示','Icon');

% end

% keyboard;

% axes(handles.axes_fft_m);

% plot(f,2*abs(Y(1:NFFT/2+1)));

%语音识别刘帅 20150526

set(handles.pushbutton_luyin,'BackgroundColor','red');

set(handles.pushbutton_luyin,'String','点我录音');

handles.recObj=recObj;

guidata(hObject,handles); %更新handles里的数据

end

% % 回放录音数据

% play(recObj);

% % 获取录音数据

% myRecording = getaudiodata(recObj);

% % 绘制录音数据波形

% plot(myRecording);

%keyboard;

% --- Executes on button press in pushbutton_plot.

function pushbutton_plot_Callback(hObject, ~, handles)

% hObject handle to pushbutton_plot (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% 回放录音数据

%set(handles.axes_t_m,'visible','on');

%set(handles.axes_fft_m,'visible','on');

global local_yn;

global sex_flag;

switch local_yn

case 0

if(str2double(get(handles.et_time,'String'))==0) %添加

str2double 后正常

msgbox('亲别逗好吗?请录音或者选择本地文件先。 ','Error','Icon');

%errordlg('亲别逗好吗?请输入时间参数或者选择本地文件先。

','Error','on');

else

switch sex_flag

case 0

recObj=handles.recObj;

% 获取录音数据

%myRecording = getaudiodata(recObj,'uint8');

myRecording = getaudiodata(recObj);

d=myRecording;

name=get(handles.et_savme,'String');

%audiowrite(name,d,8000);

audiowrite(name,d,handles.fs_chose);

%msgbox('数据保存成功','消息提示','Icon');

% 绘制录音数据波形

axes(handles.axes_t_m);

draw_m=plot(myRecording);

title('时域信号');

xlabel('t');

ylabel('幅值');

% Fs=16000; % ???

fs=handles.fs_chose; %采集频率

y1=myRecording; % 一维矩阵?????

L=length(y1); % 计算元素个数

NFFT = 2^nextpow2(L); % Next power of 2 from length of y 提高运算速度

Y = fft(y1,NFFT)/L; %傅里叶变换 NFFT级蝶形运算?

f = fs/2*linspace(0,1,NFFT/2+1); % x轴点数

% Plot single-sided amplitude spectrum.

axes(handles.axes_fft_m);

draw_fft_m=plot(f,2*abs(Y(1:NFFT/2+1)));

title('频域信号')

xlabel('Frequency (Hz)')

ylabel('|Y(f)|')

% xFFT = fft(data); % ??????±???

% xfft = abs(xFFT); % ·ù??

% % Avoid taking the log of 0.

% index = xfft == 0;

% xfft(index) = 1e-17;

%

% mag = 20*log10(xfft); % ·ù??·?±?

% mag = mag(1:blockSize/2);

%

% f = (0:length(mag)-1)*Fs/blockSize;

%f = f(:);

% axes(handles.axes_fft_m);

% draw_fft_m=plot(f(:,1),mag(:,1));

% ylabel('Magnitude (dB)');

% xlabel('Frequency (Hz)');

% title('频谱图');

% Fs=1000;

% nbit=24;

%

wavwrite(myRecording,1000,24,'test_1.wav'); %MATLAB 写wav文件,看最大最小值

% [myRecording_fft,Fs,nbits] =

wavread('test_1.wav'); % MATLAB读wav文件,看最大最小值,预计是在-1和1之间

% N=length(myRecording_fft)

% Fm=fft(myRecording_fft,N);

% axes(handles.axes_fft_m);

% draw_fft_m=plot(handles.axes_fft_m,100*abs(Fm));

% title('频域信号');

% xlabel('w');

% ylabel('幅值');

handles.draw_fft_m=draw_fft_m;

guidata(hObject,handles);

handles.draw_plot_m=draw_m;

guidata(hObject,handles);

case 1

recObj=handles.recObj;

% 获取录音数据

myRecording = getaudiodata(recObj);

% 绘制录音数据波形

axes(handles.axes_t_w);

draw_w=plot(handles.axes_t_w,myRecording,'m');

ylabel('Amplitude');

xlabel('Time ');

title('时域信号');

fs=handles.fs_chose; %

y1=myRecording; % ???

L=length(y1);

NFFT = 2^nextpow2(L); % Next power of 2 from length of y

Y = fft(y1,NFFT)/L;

f = fs/2*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.

axes(handles.axes_fft_w);

draw_fft_w=plot(f,2*abs(Y(1:NFFT/2+1)),'m');

title('频域信号')

xlabel('Frequency (Hz)')

ylabel('|Y(f)|')

% xFFT = fft(data); % ?????????

% xfft = abs(xFFT); %

% % Avoid taking the log of 0.

% index = xfft == 0;

% xfft(index) = 1e-17;

%

% mag = 20*log10(xfft); %

% mag = mag(1:blockSize/2);

%

% f = (0:length(mag)-1)*Fs/blockSize;

% f = f(:);

% axes(handles.axes_fft_w);

% draw_fft_w=plot(f(:,1),mag(:,1));

% ylabel('Magnitude (dB)');

% xlabel('Frequency (Hz)');

% title('频谱图');

% Fw=fft(myRecording,4096);

% axes(handles.axes_fft_w);

% draw_fft_w=plot(handles.axes_fft_w,abs(Fw));

% title('频域信号');

% xlabel('w');

% ylabel('幅值');

handles.draw_fft_w=draw_fft_w;

guidata(hObject,handles);

handles.draw_plot_w=draw_w;

guidata(hObject,handles);

% case 2

% msgbox('妖孽!!!哪里逃

','haha','Icon');

end

end

case 1

FileName=handles.FileName;

[y1,fs]=audioread(FileName);

axes(handles.axes_t_m);

draw_fft_m=plot(y1);

ylabel('Amplitude');

xlabel('Time ');

title('时域信号');

L=length(y1);

%%set(gca,'ylim',[0 2])

%% myRecording = getaudiodata(aa,'uint8');

NFFT = 2^nextpow2(L); % Next power of 2 from length of y

Y = fft(y1,NFFT)/L;

f = fs/2*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.

axes(handles.axes_fft_m);

draw_fft_m=plot(f,2*abs(Y(1:NFFT/2+1)));

title('频域信号');

xlabel('Frequency (Hz)');

ylabel('|Y(f)|');

% Fs=16000;

% %data=myRecording; % ?????

% blockSize=length(data);

% xFFT = fft(data); % ??????

% xfft = abs(xFFT); %

% % Avoid taking the log of 0.

% index = xfft == 0;

% xfft(index) = 1e-17;

% mag = 20*log10(xfft); %

% mag = mag(1:blockSize/2);

% f = (0:length(mag)-1)*Fs/blockSize;

% f = f(:);

% axes(handles.axes_fft_m);

% draw_fft_m=plot(f(:,1),mag(:,1));

% ylabel('Magnitude (dB)');

% xlabel('Frequency (Hz)');

% title('频谱图');

end

% --- Executes on button press in pushbutton_play.

function pushbutton_play_Callback(hObject, ~, handles)

% hObject handle to pushbutton_play (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global local_yn;

%keyboard;

switch local_yn

case 0

if(str2double(get(handles.et_time,'String'))==0) %添加

str2double 后正常

msgbox('亲别逗好吗?请录音或者选择本地文件先。 ','Error','Icon');

%errordlg('亲别逗好吗?请输入时间参数或者选择本地文件先。

','Error','on');

else

recObj_play=handles.recObj;

play(recObj_play);

set(hObject,'BackgroundColor','green');

set(hObject,'String','正在播放');

pause(handles.recor_time);

set(hObject,'BackgroundColor','yellow');

set(hObject,'String','播放完毕');

pause(1);

set(hObject,'String','点我播放');

guidata(hObject,handles);

end

case 1

[y ,fs]=audioread(handles.FileName);

sound(y,fs);

end

function et_time_Callback(hObject, ~, handles)

% hObject handle to et_time (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 et_time as text

% str2double(get(hObject,'String')) returns contents of et_time as a double

if(isempty(get(hObject,'String')))

set(hObject,'String','0');

set(handles.set_time,'String','时间参数输入错误!');

pause(2);

set(handles.set_time,'String','请输入录音时长');

guidata(hObject,handles);

else

input=str2double(get(hObject,'String'));

handles.recor_time=input;

guidata(hObject,handles);

end

% --- Executes during object creation, after setting all properties. function et_time_CreateFcn(hObject, ~, ~)

% hObject handle to et_time (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 during object creation, after setting all properties. function axes_t_m_CreateFcn(hObject, eventdata, handles)

% hObject handle to axes_t_m (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate axes_t_m

% --- Executes on button press in rb_man.

function rb_man_Callback(hObject, eventdata, handles)

% hObject handle to rb_man (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of rb_man

% --- Executes on button press in rb_women.

function rb_women_Callback(hObject, eventdata, handles)

% hObject handle to rb_women (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of rb_women

% --- Executes on button press in rb_Neither.

function rb_Neither_Callback(hObject, eventdata, handles)

% hObject handle to rb_Neither (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of rb_Neither

%

--------------------------------------------------------------------

% --- Executes when selected object is changed in uipanel5.

function uipanel5_SelectionChangeFcn(hObject, ~, ~)

% hObject handle to the selected object in uipanel5

% eventdata structure with the following fields (see UIBUTTONGROUP)

% EventName: string 'SelectionChanged' (read only)

% OldValue: handle of the previously selected object or empty if none was selected

% NewValue: handle of the currently selected object

% handles structure with handles and user data (see GUIDATA)

global sex_flag;

switch get(hObject,'Tag')

case'rb_man'

sex_flag=0;

case'rb_women'

sex_flag=1;

% case 'rb_Neither'

% sex_flag=2;

end

%

--------------------------------------------------------------------function menu_intro_Callback(hObject, eventdata, handles)

% hObject handle to menu_intro (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

msg={'1. V1 实现基本功能'; ' 录音、播放、画时域图、基本频谱图等';'2. V2 改进算法,重新改变频域信号处理函数---20150522'...

;'3. V2.5加入start界面尝试将讲解内容以图片形式导进---20150524 '...

;'4.V2.6加入采集频率可选下拉框---20150525'};

msgbox(msg ,'版本说明');

% --- Executes during object creation, after setting all properties. function axes_fft_m_CreateFcn(hObject, eventdata, handles)

% hObject handle to axes_fft_m (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate axes_fft_m

% --- Executes on button press in pushbutton_exit.

function pushbutton_exit_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton_exit (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

quest={'亲你真的要离开人家吗?'};

response=questdlg(quest,'wennine ','Yeah','Oh No',2);

if(strcmp(response,'Yeah'))

close;

start_voice();

else

end

% if(response=='Yeah')

% close;

% else

% end

function et_savme_Callback(hObject, eventdata, handles)

% hObject handle to et_savme (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 et_savme as text

% str2double(get(hObject,'String')) returns contents of et_savme as a double

filename=get(hObject,'String');

handles.filename=filename;

guidata(hObject,handles);

% --- Executes during object creation, after setting all properties. function et_savme_CreateFcn(hObject, eventdata, handles)

% hObject handle to et_savme (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

function et_local_Callback(hObject, eventdata, handles)

% hObject handle to et_local (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 et_local as text

% str2double(get(hObject,'String')) returns contents of et_local as a double

% --- Executes during object creation, after setting all properties. function et_local_CreateFcn(hObject, eventdata, handles)

% hObject handle to et_local (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 pushbutton_local.

function pushbutton_local_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton_local (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

global local_yn;

local_yn=1;

[FileName,PathName] = uigetfile('*.wav','亲请选择您想要查看的音频文件'); handles.FileName=FileName;

guidata(hObject,handles);

set(handles.et_local,'String',FileName);

% data=audioread(FileName);

% axes(handles.axes_t_m);

% draw_fft_m=plot(data);

% ylabel('Amplitude');

% xlabel('Time ');

% title('时域图');

% %set(gca,'ylim',[0 2])

% % myRecording = getaudiodata(aa,'uint8');

% Fs=16000;

% %data=myRecording; % ?????

% blockSize=length(data);

% xFFT = fft(data); % ??????

% xfft = abs(xFFT); %

% % Avoid taking the log of 0.

% index = xfft == 0;

% xfft(index) = 1e-17;

% mag = 20*log10(xfft); %

% mag = mag(1:blockSize/2);

% f = (0:length(mag)-1)*Fs/blockSize;

% f = f(:);

% axes(handles.axes_fft_m);

% draw_fft_m=plot(f(:,1),mag(:,1));

% ylabel('Magnitude (dB)');

% xlabel('Frequency (Hz)');

% title('频谱图');

%

% --- Executes during object creation, after setting all properties. function rb_man_CreateFcn(hObject, eventdata, handles)

% hObject handle to rb_man (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% --- Executes during object creation, after setting all properties. function uipanel5_CreateFcn(hObject, eventdata, handles)

% hObject handle to uipanel5 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% --- Executes on selection change in ppm_caiyang.

function ppm_caiyang_Callback(hObject, eventdata, handles)

% hObject handle to ppm_caiyang (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 ppm_caiyang contents as cell array

% contents{get(hObject,'Value')} returns selected item from

ppm_caiyang

canshu={'1000','2000','4000','8000','11025','22050','44100' };

val=get(handles.ppm_caiyang,'value');

switch val

case 1

fs=canshu{val};

case 2

fs=canshu{val};

case 3

fs=canshu{val};

case 4

fs=canshu{val};

case 5

fs=canshu{val};

case 6

fs=canshu{val};

case 7

fs=canshu{val};

end

handles.fs_chose=str2double(fs);

guidata(hObject,handles);

%keyboard;

% --- Executes during object creation, after setting all properties. function ppm_caiyang_CreateFcn(hObject, eventdata, handles)

% hObject handle to ppm_caiyang (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

有兴趣者可到博客交流。

https://www.doczj.com/doc/157180846.html,/s/blog_131ac03010102vna8.html

基于dsp的语音信号采集与回放系统的设计--开题报告

HEFEI UNIVERSITY 课程设计开题报告 题目:《基于DSP系统的语音采集与回放系统》 专业:11 级电子信息工程 姓名:章健吴广岭何志刚 学号:1105011029 1105011030 1105011044 指导老师:汪济洲老师 完成时间:2014年12月1日

一、开题报告题目 基于DSP系统的语音采集与回放系统。 二、研究背景与意义 语音处理是数字信号处理最活跃的研究方向之一,它是信息高速公路、多媒体技术、办公自动化、现代通信及职能系统等新兴领域应用的核心技术之一。用数字化的方法进行语音的传送、存储、分析、识别、合成、增强等是整个数字化通信网中的最重要、最基本的组成部分之一。一个完备的语音信号处理系统不但要具有语音信号的采集和回放功能, 还要能够进行复杂的语音信号分析和处理。通常这些信号处理算法的运算量很大, 而且又要满足实时的快速高效处理要求, 随着DSP 技术的发展, 以DSP 为内核的 设备越来越多。为语音信号的处理提供了优质可靠的平台. 软件编程的灵活性给很多设备增加不同的功能提供了方便, 利用软件在已有的硬件平台上实现不同的功能已成为 一种趋势。近年来,随着DSP的功能日益增强,性能价格比不断上升,开发手段不断改进,DSP在数据采集系统的应用也在不断完善。 三、主要内容与目标 随着计算机多媒体技术,网络通信技术和DSP(Digital Signal Processor)技术的飞速发展,语音的数字通信得到越来越多的应用,语音信号的数字化一直是通信发展的主要方向之一,语音的数字通信和模拟通信相比,无疑有着更大的优越性,这主要体现在以下几个方面:数字语音比模拟语音具有更好的话音质量;具有更强的干扰性,并易于加密;可节省带宽,能更有效的利用网络资源;更加易于存储和处理。最简单的数字化就是直接对原始语音信号进行A/D 转换,但这样得到的语音的数据量非常大。为了减少语音信号所占用的带宽或存储空间,就必须对数字语音信号进行压缩编码。语音编码的目的就在于在保证语音音质和可懂度的条件下,采用尽可能少的比特数来表示语音,即尽可能的降低编码比特率,以便在有限的传输带宽内让出更多的信道来传输图像和其他数据流,从而达到传输资源的有效利用和网络容量的提高。在通信越来越发达的当今世界,尤其最近几十年,语音压缩编码技术在移动通信、IP 电话通信、保密通信、卫星通信以及语音存储等很多方面得到了广泛的应用。 语音信号处理在手持设备、移动设备和无线个人设备中的应用正在不断增加。今天的个人手持设备语音大多时候仅仅局限于语音拨号,但是已经出现了适用于更广泛开发语音识别和文本到语音应用的技术。语音功能为用户提供自然的输入和输出方式,它比其他形式的I/O更安全,尤其是当用户在开车期间。在大多数应用中,语音都是键盘和显示器的理想补充。其他潜在的语音应用包括如下几个方面。 (1)语音电子邮件。包括浏览邮箱、利用语音输入写电子邮件以及收听电子邮件的读出。 (2)信息检索。股票价格、标题新闻、航班信息、天气预报等都可以通过语音从互联网收听。例如,用户不用先进入某个网址并输入股票名字或者浏览预定义列表,可以通过语音命令实现。 (3)个人信息管理。允许用户通过语音指定预约、查看日历、添加联络信息等等。 (4)语音浏览。利用语音程序菜单,用户可以在网上冲浪、添加语音收藏夹并收听网页内容的读出。 (5)语音导航。在自动和人眼不够用的条件下获取导航的完全语音输入/输出驾驶

基于matlab的语音信号的采集与处理

文档从互联网中收集,已重新修正排版,word格式支持编辑,如有帮助欢迎下载支持。 目录 第1章前言 ................................................................................................... 错误!未定义书签。第2章语音信号分析处理的目的和要求 ................................................... 错误!未定义书签。 2.1MATLAB软件功能简介................................................................. 错误!未定义书签。 2.2课程设计意义 .................................................................................. 错误!未定义书签。第3章语音信号的仿真原理..................................................................... 错误!未定义书签。第4章语音信号的具体实现..................................................................... 错误!未定义书签。 4.1语音信号的采集................................................................................ 错误!未定义书签。 4.2语音信号加噪与频谱分析................................................................ 错误!未定义书签。 4.3设计巴特沃斯低通滤波器................................................................ 错误!未定义书签。 4.4用滤波器对加噪语音滤波................................................................ 错误!未定义书签。 4.5比较滤波前后语音信号波形及频谱................................................ 错误!未定义书签。第5章总结................................................................................................... 错误!未定义书签。参考文献......................................................................................................... 错误!未定义书签。附录................................................................................................................. 错误!未定义书签。

应用Matlab对含噪声语音信号进行频谱分析及滤波

应用Matlab对含噪声的语音信号进行频谱分析及滤波 一、实验内容 录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;在语音信号中增加正弦噪声信号(自己设置几个频率的正弦信号),对加入噪声信号后的语音信号进行频谱分析;给定滤波器的性能指标,采用窗函数法和双线性变换设计数字滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比试听,分析信号的变化。 二、实现步骤 1.语音信号的采集 利用Windows下的录音机,录制一段自己的话音,时间在1 s内。然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,(可用默认的采样频率或者自己设定采样频率)。 2.语音信号的频谱分析 要求首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。 在采集得到的语音信号中加入正弦噪声信号,然后对加入噪声信号后的语音号进行快速傅里叶变换,得到信号的频谱特性。并利用sound试听前后语音信号的不同。

分别设计IIR和FIR滤波器,对加入噪声信号的语音信号进行去噪,画出并分析去噪后的语音信号的频谱,并进行前后试听对比。 3.数字滤波器设计 给出数字低通滤波器性能指标:如,通带截止频率fp=10000 Hz,阻带截止频率fs=12000 Hz(可根据自己所加入噪声信号的频率进行阻带截止频率设置),阻带最小衰减Rs=50 dB,通带最大衰减Rp=3 dB(也可自己设置),采样频率根据自己语音信号采样频率设定。

报告内容 一、实验原理 含噪声语音信号通过低通滤波器,高频的噪声信号会被过滤掉,得到清晰的无噪声语音信号。 二、实验内容 录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;在语音信号中增加正弦噪声信号(自己设置几个频率的正弦信号),对加入噪声信号后的语音信号进行频谱分析;给定滤波器的性能指标,采用窗函数法和双线性变换设计数字滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比试听,分析信号的变化。给出数字低通滤波器性能指标:如,通带截止频率fp=10000 Hz,阻带截止频率fs=12000 Hz (可根据自己所加入噪声信号的频率进行阻带截止频率设置),阻带最小衰减Rs=50 dB,通带最大衰减Rp=3 dB(也可自己设置),采样频率根据自己语音信号采样频率设定。 三、实验程序 1、原始信号采集和分析 clc;clear;close all; fs=10000; %语音信号采样频率为10000 x1=wavread('C:\Users\acer\Desktop\voice.wav'); %读取语音信号的数据,赋给x1 sound(x1,40000); %播放语音信号 y1=fft(x1,10240); %对信号做1024点FFT变换 f=fs*(0:1999)/1024; figure(1); plot(x1) %做原始语音信号的时域图形 title('原始语音信号'); xlabel('time n'); ylabel('fuzhi n'); figure(2); plot(f,abs(y1(1:2000))); %做原始语音信号的频谱图形 title('原始语音信号频谱') xlabel('Hz'); ylabel('fuzhi');

语音信号采集与处理系统的设计

音频信号采样及处理系统方案设计 姓名:杨宁 学号: 专业:电子信息工程 学院:电子工程学院 指导老师:那彦

目录 第1章理论依据2 1.1音频信号的介绍2 1.2采样频率2 1.1 TMS320VC5402介绍2 1.2 TLC320AD50介绍 6 第2章系统方案设计8 2.1 DSP核心模块的设计8 2.2 A/D转换模块9 第3章硬件设计10 3.1 DSP芯片10 3.2 电源设计10 3.3复位电路设计11 3.4 时钟电路设计12 3.5 程序存储器扩展设计12 3.6数据存储器扩展设计13 3.7 JTAG接口设计13 3.8 A/D接口电路设计14 第4章软件设计15 第5章总结17 参考文献18 致谢19 附录20

摘要 在研究数字信号处理的基础上,提出了一个基于DSP TMS320VC5402和A/D转换芯片TLC320AD50的音频信号采集系统的设计。给出了该系统的总体设计方案,具体硬件电路,包括系统电源设计、复位电路设计、时钟电路设计、存储器设计、A/D接口电路设计、JTAG接口设计、DSP及A/D芯片的连接等,以及软件流程图。 关键词:音频信号数据采集DSP TLC320AD50 ABSTRACT On the basis of studying digital signal processing, The design of A audio signal acquisition system based on DSP TMS320VC5402 and A/D conversion chip TLC320AD50 is proposed. Overall design scheme of the system is given, and the specific hardware circuit, including the system power supply design, design of reset circuit, clock circuit design, design of memory, A/D interface circuit, JTAG interface, DSP and the connection of A/D chip, and software flow chart. Key words: audio signal data collection DSP TLC320AD50

matlab语音信号采集与初步处理要点

《matlab与信号系统》实验报告 学院: 学号: 姓名: 考核实验——语音信号采集与处理初步 一、课题要求 1.语音信号的采集 2.语音信号的频谱分析 3.设计数字滤波器和画出频率响应 4.用滤波器对信号进行滤波 5.比较滤波前后语音信号的波形及频谱 6.回放和存储语音信号 (第5、第6步我放到一起做了) 二、语音信号的采集 本段音频文件为胡夏演唱的“那些年”的前奏(采用Audition音频软件进行剪切,时长17秒)。运行matlab软件,在当前目录中打开原音频文件所在的位置,采用wavread函数对其进行采样,并用sound函数可进行试听,程序运行之后记下采样频率和采样点。 利用函数wavread对语音信号的采集的程序如下: clear; [y,fs,bits]=wavread('music.wav'); %x:语音数据;fs:采样频率;bits:采样点数sound(y,fs,bits); %话音回放 程序运行之后,在工作区间中可以看到采样频率fs=44100Hz,采样点bits=16

三、语音信号的频谱分析 先画出语音信号的时域波形,然后对语音号进行快速傅里叶变换,得到信号的频谱特性。语音信号的FFT频谱分析的完整程序如下: clear; [y,fs,bits]=wavread('music.wav'); %x:语音数据;fs:采样频率;bits:采样点数sound(y,fs,bits); %话音回放 n = length (y) ; %求出语音信号的长度 Y=fft(y,n); %傅里叶变换 subplot(2,1,1); plot(y); title('原始信号波形'); subplot(2,1,2); plot(abs(Y)); title('原始信号频谱'); 程序结果如下图: 四、设计数字滤波器和画出频率响应 根据语音信号的特点给出有关滤波器的性能指标: 1)低通滤波器性能指标,fp=1000Hz,fc=1200 Hz,As=100dB,Ap=1dB; 2)高通滤波器性能指标,fc=4800 Hz,fp=5000 Hz As=100dB,Ap=1dB。

基于MATLAB的语音信号采集与处理

工程设计论文 题目:基于MATLAB的语音信号采集与处理 姓名: 班级: 学号: 指导老师:

一.选题背景 1、实践意义: 语音信号是一种非平稳的时变信号,它携带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在于方便有效地提取并表示语音信号所携带的信息。所以理解并掌握语音信号的时域和频域特性是非常重要的。 通过语音相互传递信息是人类最重要的基本功能之一.语言是人类特有的功能.声音是人类常用工具,是相互传递信息的最重要的手段.虽然,人可以通过多种手段获得外界信息,但最重要,最精细的信息源只有语言,图像和文字三种.与用声音传递信息相比,显然用视觉和文字相互传递信息,其效果要差得多.这是因为语音中除包含实际发音容的话言信息外,还包括发音者是谁及喜怒哀乐等各种信息.所以,语音是人类最重要,最有效,最常用和最方便的交换信息的形式.另一方面,语言和语音与人的智力活动密切相关,与文化和社会的进步紧密相连,它具有最大的信息容量和最高的智能水平。 语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,处理的目的是用于得到某些参数以便高效传输或存储;或者是用于某种应用,如人工合成出语音,辨识出讲话者,识别出讲话容,进行语音增强等. 语音信号处理是一门新兴的学科,同时又是综合性的多学科领域,

是一门涉及面很广的交叉学科.虽然从事达一领域研究的人员主要来自信息处理及计算机等学科.但是它与语音学,语言学,声学,认知科学,生理学,心理学及数理统计等许多学科也有非常密切的联系. 语音信号处理是许多信息领域应用的核心技术之一,是目前发展最为迅速的信息科学研究领域中的一个.语音处理是目前极为活跃和热门的研究领域,其研究涉及一系列前沿科研课题,巳处于迅速发展之中;其研究成果具有重要的学术及应用价值. 数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。具有灵活、精确、抗干扰强、度快等优点。 数字滤波器, 是数字信号处理中及其重要的一部分。随着信息时代和数字技术的发展,受到人们越来越多的重视。数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应( FIR,Finite Impulse Response)滤波器和无限冲激响应( IIR,Infinite Impulse Response)滤波器。 FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H (z)在处收敛,极点全部在z = 0处(因果系统),因而只能

语音信号分析与处理2011

数字信号处理实验二:语音信号分析与处理 学号 姓名 注:1)此次实验作为《数字信号处理》课程实验成绩的重要依据,请同学们认真、独立完成,不得抄袭。 2)请在授课教师规定的时间内完成; 3)完成作业后,请以word 格式保存,文件名为:学号+姓名 4)请通读全文,依据第2及第3 两部分内容,认真填写第4部分所需的实验数据,并给出程序内容。 1. 实验目的 (1) 学会MATLAB 的使用,掌握MATLAB 的程序设计方法 (2) 掌握在windows 环境下语音信号采集的方法 (3) 掌握MATLAB 设计FIR 和IIR 滤波器的方法及应用 (4) 学会用MATLAB 对语音信号的分析与处理方法 2. 实验内容 录制一段自己的语音信号,对录制的语音信号进行采样,画出采样后语音信号的时域波形和频谱图,确定语音信号的频带范围;使用MATLAB 产生白噪声信号模拟语音信号在处理过程中的加性噪声并与语音信号进行叠加,画出受污染语音信号的时域波形和频谱图;采用双线性法设计出IIR 滤波器和窗函数法设计出FIR 滤波器,画出滤波器的频响特性图;用自己设计的这两种滤波器分别对受污染的语音信号进行滤波,画出滤波后语音信号的时域波形和频谱图;对滤波前后的语音信号进行时域波形和频谱图的对比,分析信号的变化;回放语音信号,感觉与原始语音的不同。 3. 实验步骤 1)语音信号的采集与回放 利用windows 下的录音机或其他软件录制一段自己的语音(规定:语音内容为自己的名字,以wav 格式保存,如wql.wav ),时间控制在2秒之内,利用MATLAB 提供的函数wavread 对语音信号进行采样,提供sound 函数对语音信号进行回放。 [y,fs,nbits]=wavread(file), 采样值放在向量y 中,fs 表示采样频率nbits 表示采样位数。Wavread 的更多用法请使用help 命令自行查询。 2)语音信号的频谱分析 利用fft 函数对信号进行频谱分析 3)受白噪声干扰的语音信号的产生与频谱分析 ①白噪声的产生: N1=sqrt (方差值)×randn(语音数据长度,2)(其中2表示2列,是由于双声道的原因) 然后根据语音信号的频谱范围让白噪声信号通过一个带通滤波器得到一个带限的白噪声信号 N2; 带通滤波器的冲激响应为: h B (n )= ))((sin ))((sin 1122απ ωπωαπωπω---n c n c c c c c

基于MATLAB的语音信号处理系统设计(程序+仿真图)--毕业设计

语音信号处理系统设计 摘要:语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科。语音信号处理的目的是得到某些参数以便高效传输或存储,或者是用于某种应用,如人工合成出语音、辨识出讲话者、识别出讲话内容、进行语音增强等。本文简要介绍了语音信号采集与分析以及语音信号的特征、采集与分析方法,并在采集语音信号后,在MATLAB 软件平台上进行频谱分析,并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。利用MATLAB来读入(采集)语音信号,将它赋值给某一向量,再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析,再依据实际情况对它进行滤波,然后我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。 关键词:Matlab,语音信号,傅里叶变换,滤波器 1课程设计的目的和意义 本设计课题主要研究语音信号初步分析的软件实现方法、滤波器的设计及应用。通过完成本课题的设计,拟主要达到以下几个目的: 1.1.了解Matlab软件的特点和使用方法。 1.2.掌握利用Matlab分析信号和系统的时域、频域特性的方法; 1.3.掌握数字滤波器的设计方法及应用。 1.4.了解语音信号的特性及分析方法。 1.5.通过本课题的设计,培养学生运用所学知识分析和解决实际问题的能力。 2 设计任务及技术指标 设计一个简单的语音信号分析系统,实现对语音信号时域波形显示、进行频谱分析,

利用滤波器滤除噪声、对语音信号的参数进行提取分析等功能。采用Matlab设计语言信号分析相关程序,并且利用GUI设计图形用户界面。具体任务是: 2.1.采集语音信号。 2.2.对原始语音信号加入干扰噪声,对原始语音信号及带噪语音信号进行时频域分析。 2.3.针对语音信号频谱及噪声频率,设计合适的数字滤波器滤除噪声。 2.4.对噪声滤除前后的语音进行时频域分析。 2.5.对语音信号进行重采样,回放并与原始信号进行比较。 2.6.对语音信号部分时域参数进行提取。 2.7.设计图形用户界面(包含以上功能)。 3 设计方案论证 3.1语音信号的采集 使用电脑的声卡设备采集一段语音信号,并将其保存在电脑中。 3.2语音信号的处理 语音信号的处理主要包括信号的提取播放、信号的重采样、信号加入噪声、信号的傅里叶变换和滤波等,以及GUI图形用户界面设计。 Ⅰ.语音信号的时域分析 语音信号是一种非平稳的时变信号,它携带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法。 Ⅱ.语音信号的频域分析 信号的傅立叶表示在信号的分析与处理中起着重要的作用。因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更

语音信号采集与处理课程设计

河南科技大学 课程设计说明书课程名称微机应用技术课程设计 题目语音信号采集与处理课程设计 学院医学技术与工程学院 班级生物医学工程1201班 学生姓名 指导教师杨晓利 日期 2014年3月29日

课程设计任务书 (指导教师填写) 课程设计名称微机应用技术课程设计 学生姓名 专业班级生物医学工程1201班 设计题目语音信号采集与处理课程设计 课程设计目的 1.学会MATLAB的使用,掌握MATLAB的程序设计方法; 2.掌握在Windows环境下语音信号采集的方法; 3.掌握信号处理的基本概念、基本理论和基本方法; 4.学会用MATLAB对信号进行分析和处理。 设计内容、技术条件和要求 1.语音信号的采集 用windows自带的录音机(开始—程序—附件—娱乐—录音机,文件—属性—立即转换—8000KHz,8位,单声道)或其他软件,录制一段语音信号,时间控制在2秒左右。然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。通过wavread函数的使用,理解采样频率、采样位数等概念。 wavread函数调用格式: y=wavread(file),读取file所规定的wav文件,返回采样值放在向量y中。 [y,fs,nbits]=wavread(file),采样值放在向量y中,fs表示采样频率(Hz),nbits表示采样位数。 y=wavread(file,N),读取前N点的采样值放在向量y中。 y=wavread(file,[N1,N2]),读取从N1点到N2点的采样值放在向量y中。2.语音信号的频谱分析 首先画出语音信号的时域波形;然后对语音信号进行频谱分析,在MATLAB中,可以利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性。 时间进度安排 第1周:查阅资料; 第2周:实现设计内容 第3周:整理资料,撰写课程设计任务书 1

语音信号采集与回放系统设计

语音采集与回放系统设计
l 竞赛真题 l 总体方案选择 l 具体方案设计 l 设计阶段划分
一、竞赛真题
1999 年第四届 E 题 数字化语音存储与回放系统 一、题目:数字化语音存储与回放系统 二、任务 设计并制作一个数字化语音存储与回放系统,其示意图如下:
三、要求 1.基本要求 (1)放大器 1 的增益为 46dB,放大器 2 的增益为 40dB,增益均可调; (2)带通滤波器:通带为 300Hz~3.4kHz ; (3)ADC:采样频率 fs= 8kHz,字长= 8 位; (4)语音存储时间≥10 秒; (5)DAC:变换频率 fc= 8kHz,字长= 8 位; (6)回放语音质量良好。 2.发挥部分 在保证语音质量的前提下: (1)减少系统噪声电平,增加自动音量控制功能; (2)语音存储时间增加至 20 秒以上; (3)提高存储器的利用率(在原有存储容量不变的前提下,提高语音存储时间) ;

(4)其它(例如: 四、评分意见
校正等) 。


满 分 50 50 15 5 15 15
基 设计与总结报告: 方案设计与论证, 理论分析与计算, 电路图, 本 测试方法与数据,对测试结果的分析 要 实际制作完成情况 求 完成第一项 发 挥 完成第二项 部 完成第三项 分 完成第四项 五、说明 不能使用单片语音专用芯片实现本系统。
训练侧重点 l 题目中给出一些提示性设计参数,设计中应予以重点理解
1. 放大器 1 的增益,放大器 1 的增益为 46dB 2. 带通滤波器的频率范围通带为 300Hz~3.4kHz(方便测试) 3. AD 采样的字长和采样频率(保证公平竞争)
l
题目中部分非技术性指标在培训中可以适当简化
1. 语音存储与回放时间≥10 秒 2. 语音存储时间增加至 20 秒以上;
二、总体方案选择
1. 控制平台选择 2. 前级放大模块 3. 带通滤波器 4. 模数、数模转换部分 5. 存储器 6. 编码方案
1. 控制平台选择
供选平台: A. B. 单片机平台 FPGA 开发平台

基于Matlab语音信号的采集与分析

基于MATLAB 的语音信号分析和处理 【摘要】: 本文通过用三星手机系统自带录音机采集了一段语音,wav格式转换后再Matlab平台上对其进行了时域分析,频谱分析,分析语音信号的特性。利用函数对采样频率进行控制,比较其波形。通过对两段铃声(分别为男声、女声)进行分析初步找出男声女声的特点和区别。应用Matlab平台对录制的语音信号加入噪声,对比加噪前后的语音信号的时域和频域特性,回放加噪语音信号。 【关键词】: 语音信号;频域特性; 时域特性; 滤波器

目录 一、背景介绍 1.1 语音信号的概述 1.2 语音信号处理工具的选择 二、语音信号的录制采集和分析 2.1 语音信号的采集 2.2 语音信号的读入与打开 2.3 取不同采样频率得出的波形比较 三、对男声、女声语音信号特点的分析 3.1女声(vfemale.wav)男声(vmale.wav)的时域分析

3.2女声(vfemale.wav)男声(vmale.wav)的频域分析 四、加噪声与滤波处理分析 4.1 高斯白噪声(SNR=30) 4.2 单频正弦噪声 五、心得与体会 一、背景介绍 1.1语音信号的概述 语言是人类创造的,是人类区别于其他地球生命的本质特征之一。人类用语言交流的过程可以看成是一个复杂的通信过程,为了获取便于分析和处理的语音信源,必须将在空气中传播的声波转变为包含语音信息并且记载着声波物理性质的模拟(或数字)电信号,即语音信号,因此语音信号就成为语音的表现形式或载体。 1.2语音信号处理工具的选择 语音信号的进一步处理分析工作选用了Matlab平台。Matlab是一种科学计算软件,专门以矩阵的形式处理数据。Matlab将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,不断完善Matlab产品以提高产品自身的竞争能力Matlab的数据分析和处理功能十分强大,运用它来

基于MATLAB的语音信号的采集与处理详解

数字信号处理 课程设计 题目:基于MATLAB的语音信号的采集与处理学院:皖西学院 专业:通信工程 班级:通信1001班 学号:2010013461 2010013494 姓名:刘敏纵大庆指导教师:何富贵

摘要: 本次课程设计题目为<<基于MATLAB的语音信号的采集与处理>>。首先我们利用计算机上的录音软件获得语音信号,然后利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号!

1.背景 2. 设计目的 (2) 3. 设计原理 (2) 4. 设计过程 .......................................... ,,, 3 5. 实验代码及结果 (4) 5.1 语音信号的采集 (4) 5.2 语音信号加噪与频谱分析 ..................................... ,,,, 7 5.3 巴特沃斯滤波器的设计 .. (9) 5.4 比较滤波前后语音信号波形及频谱 (10) 6. 收获与体会 (12) 参考文献 (13)

1. 引言 数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、 变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。具有灵活、精确、抗干扰强、度快等优点。 数字滤波器,是数字信号处理中及其重要的一部分。随着信息时代和数字技术的发展,受到人们越来越多的重视。数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精 度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应(FIR, Finite Impulse Response)滤波器和无限冲激响应(IIR,Infin ite Impulse Resp on se) 滤波器。 FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H (z)在 z= R处收敛,极点全部在z = 0处(因果系统),因而只能用较高的阶数达到高的选 择性。FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位,就是 不同频率分量的信号经过FIR滤波器后他们的时间差不变,这是很好的性质。FIR数字滤波器是有限单位脉冲响应有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。FIR滤波器因具有系统稳定,易实现相位控制,允许 设计多通带(或多阻带)滤波器等优点收到人们的青睐[1]。 IIR滤波器采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由 延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。同时,IIR数字滤波器在设计上可以借助成熟的 模拟滤波器的成果,如巴特沃斯滤波器等。

语音信号采集与回放系统

电子与信息工程学院 综合实验课程报告 课题名称 语音采集及回放系统设计 专 业 电子信息工程 班 级 07电子2班 学生姓名 Y Y Y 学 号 07002 指导教师 X X X 2010年 7月 5日

1 总体设计方案介绍: 1.1语音编码方案: 人耳能听到的声音是一种频率范围为20 Hz~20000 Hz ,而一般语音频率最高为3400 Hz。语音的采集是指语音声波信号经麦克风和高频放大器转换成有一定幅度的模拟量电信号,然后再转换成数字量的全过程。根据“奈奎斯特采样定理”, 采样频率必须大于模拟信号最高频率的两倍,由于语音信号频率为300~3 400 Hz ,所以把语音采集的采样频率定为8 kHz。从语音的存储与压缩率来考虑,模型参数表示法明显优于信号波形表示法[4]。但要将之运用于单片机,显然信号波形表示法相对简单易实现。基于这种思路的算法,除了传统的一些脉冲编码调制外,目前已使用的有VQ技术及一些变换编码和神经网络技术,但是算法复杂,目前的单片机速度底,难以实现。结合实际情况,提出以下几种可实现的方案。 (1)短时平均跨零记数法该方案通过确定信号跨零数,将语音信号编码为数字信号,常用于语音识别中。但对于单片机,由于处理数据能力底,该方法不易实现。 (2)实时副值采样法采样过程如图2.1所示。 图2.1 采样过程 具体实现包括直存取法、欠抽样采样法、自相似增量调制法等三种基本方法。其中第三种实现方法最具特色,该方法可使数据压1:4.5,既有M ?调制的优点,又同时兼有PCM编码误差较小的优点,编码误差不向后扩散。 1.2 A/D、D/A及存储芯片的选择 单片机语音生成过程,可以看成是语音采集过程的逆过程,但又不是原封不动地恢复原来的语音,而是对原来语音的可控制、可重组的实时恢复。在放音时,只要依原先的采样直经D/ A 接口处理,便可使原音重现。 (1)A/D转换芯片的选择根据题目要求采样频率f s=8K H Z,字长=8位, 可选择转换时间不超过125s的八位A/D转换芯片。目前常用的A/D转换实现的

对语音信号进行分析及处理资料

一、设计目的 1.进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;使自身对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解; 2.增强应用Matlab语言编写数字信号处理的应用程序及分析、解决实际问题的能力; 3.培养自我学习的能力和对相关课程的兴趣; 二、设计过程 1、语音信号的采集 采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。 采样位数可以理解为声卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实 采样定理又称奈奎斯特定理,在进行模拟/数字信号的转换过程中,当采样频率fs不小于信号中最高频率fm的2倍时,采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍。 利用Windows下的录音机,录制了一段发出的声音,内容是“数字信号”,时间在3 s内。接着在D盘保存为WAV格式,然后在Matlab软件平台下.利用函数wavread对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。 [x1,fs,bits]=wavread('E:\数字信号.wav'); %读取语音信号的数据,赋给变量x1,返回频率fs 44100Hz,比特率为16 。 2 、语音信号的频谱分析 (1)首先画出语音信号的时域波形; 程序段: x=x1(60001:1:120000); %截取原始信号60000个采样点

plot(x) %做截取原始信号的时域图形 title('原始语音采样后时域信号'); xlabel('时间轴 n'); ylabel('幅值 A'); (2)然后用函数fft 对语音号进行快速傅里叶变换,得到信号的频谱特性; y1=fft(x,6000); %对信号做N=6000点FFT 变换 figure(2) subplot(2,1,1),plot(k,abs(y1)); title('|X(k)|'); ylabel('幅度谱'); subplot(2,1,2),plot(k,angle(y1)); title('arg|X(k)|'); ylabel('相位谱'); (3)产生高斯白噪声,并且对噪声进行一定的衰减,然后把噪声加到信号中,再次对信号进行频谱特性分析,从而加深对频谱特性的理解; d=randn(1,60000); %产生高斯白噪声 d=d/100; %对噪声进行衰减 x2=x+d; %加入高斯白噪声 3、设计数字滤波器 (1)IIR 低通滤波器性能指标通带截止频Hz f c 1000=,阻带截止频率 Hz f st 1200=,通带最大衰减dB 11=δ,阻带最小衰减dB 1002=δ。 (2)FIR 低通滤波器性能指标通带截止频率Hz f c 1000=,阻带截止频率 Hz f st 1200=, 通带衰减1δ≤1dB ,阻带衰减 2δ≥ 100dB 。 (3)IIR 高通滤波器的设计指标,Hz f z 1000=,Hz f p 2000=,阻带最小衰减dB A s 30=,通带最大衰减dB A P 1=。 (4)(4)FIR 高通滤波器的设计指标,Hz f z 1000=,Hz f p 2000=,阻带最小衰减dB A s 50=,通带最大衰减dB A P 1=。 (5)用自己设计的各滤波器分别对采集的信号进行滤波,在Matlab 中,FIR 滤波器利用函数fftfilt 对信号进行滤波,IIR 滤波器利用函数filter 对信号进行滤波。比较滤波前后语音信号的波形及频谱,在一个窗口同时画出滤波前后

数字信号处理 语音信号分析与处理及其MATLAB实现..

摘要 (2) 1 设计目的与要求 (3) 2 设计步骤 (4) 3 设计原理及内容 (5) 3.1 理论依据 (5) 3.2 信号采集 (6) 3.3 构造受干扰信号并对其FFT频谱分析 (8) 3.4 数字滤波器设计 (9) 3.5 信号处理 (10) 总结 (12) 致谢 (13) 参考文献 (14)

用MATLAB对语音信号进行分析与处理,采集语音信号后,在MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。 数字滤波器是数字信号处理的基础,用来对信号进行过滤、检测和参数估计等处理。IIR数字滤波器最大的优点是给定一组指标时,它的阶数要比相同组的FIR滤波器的低的多。信号处理中和频谱分析最为密切的理论基础是傅立叶变换(FT)。离散傅立叶变换(DFT)和数字滤波是数字信号处理的最基本内容。 关键词:MATLAB;语音信号;加入噪声;滤波器;滤波

1. 设计目的与要求 (1)待处理的语音信号是一个在20Hz~20kHz频段的低频信号 (2)要求MATLAB对语音信号进行分析和处理,采集语音信号后,在MATLAB平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器进行滤除噪声,恢复原信号。

2. 设计步骤 (1)选择一个语音信号或者自己录制一段语音文件作为分析对象; (2)对语音信号进行采样,并对语音信号进行FFT频谱分析,画出信号的时域波形图和频谱图; (3)利用MATLAB自带的随机函数产生噪声加入到语音信号中,对语音信号进行回放,对其进行FFT频谱分析; (4)设计合适滤波器,对带有噪声的语音信号进行滤波,画出滤波前后的时域波形图和频谱图,比较加噪前后的语音信号,分析发生的变化; (5)对语音信号进行回放,感觉声音变化。

语音信号采集与处理系统的设计

音频信号采样与处理系统方案设计 目录 第1章理论依据2 1.1音频信号的介绍2 1.2采样频率2 1.1 TMS320VC5402介绍2 1.2 TLC320AD50介绍 6 第2章系统方案设计8 2.1 DSP核心模块的设计8 2.2 A/D转换模块9 第3章硬件设计10 3.1 DSP芯片10 3.2 电源设计10 3.3复位电路设计11 3.4 时钟电路设计12 3.5 程序存储器扩展设计12 3.6数据存储器扩展设计13

3.7 JTAG接口设计13 3.8 A/D接口电路设计14 第4章软件设计15 第5章总结17 参考文献18 致谢19 附录20 摘要 在研究数字信号处理的基础上,提出了一个基于DSP TMS320VC5402和A/D转换芯片TLC320AD50的音频信号采集系统的设计。给出了该系统的总体设计方案,具体硬件电路,包括系统电源设计、复位电路设计、时钟电路设计、存储器设计、A/D接口电路设计、JTAG接口设计、DSP与A/D芯片的连接等,以及软件流程图。 关键词:音频信号数据采集DSP TLC320AD50 ABSTRACT On the basis of studying digital signal processing, The design of A audio signal acquisition system based on DSP TMS320VC5402 and A/D conversion chip TLC320AD50 is proposed. Overall design scheme of the system is given, and the specific hardware circuit, including the system power supply design, design of reset circuit, clock circuit design, design of memory, A/D interface circuit, JTAG interface, DSP and the connection of A/D chip, and software flow chart. Key words: audio signal data collection DSP TLC320AD50

相关主题
文本预览
相关文档 最新文档