语音信号处理与识别_语音信号处理情感识别
语音信号处理与识别由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“语音信号处理情感识别”。
信号系统课程设计报告
欧阳光亮
2012029020025
语音信号处理与识别
目的:理解时域和频域尺度变换基本概念,掌握信号时频域分析方法,正确理解采样定理,准确理解滤波器的概念。内容:
(1)使用Matlab中wavrecord命令录制一段3秒的语音信号,使用wavplay命令播放,录制命令和播放命令中的采样频率设置成相同和不同两种情况,对观察到的现象进行分析并结合课本中的知识对该现象进行解释;(2)使用不同的采样频率录制一段3秒的语音信号,画出信号的时域波形和频谱;找到语音信号的主要频谱成分所在的带宽;观察并分析不同采样频率对波形和频谱的影响;寻找声音信号不出现明显失真的最低采样频率;(3)录制一段男生的语音信号和一段女生的语音信号,对两段音频信号进行混合,设计滤波器将混合的语音信号分开成单独的男声和女声信号,如果分离效果不好,对原因进行解释。
Matlab命令:wavrecord, wavplay, wavwrite, wavread, save, load, fft, fftshift, filter, plot, subplot, figure.过程:(1)相同:
fs1=16000;
%取样频率 fs2=16000;
%播放频率 duration=5;
%录音时间
fprintf('Pre any key to start %g seconds of recording...n',duration);
pause;
fprintf('Recording...n');
y=wavrecord(duration*fs1,fs1);
%duration*fs 是总的采样点数
fprintf('Finished recording.n');
fprintf('Pre any key to play the recording...n');
pause;
wavplay(y,fs2);wavwrite(y,fs1,'E:matlabrecord3.wav
不同:
fs1=16000;
%取样频率 fs2=8000;
%播放频率 duration=5;
%录音时间
fprintf('Pre any key to start %g seconds of recording...n',duration);
pause;
fprintf('Recording...n');
y=wavrecord(duration*fs1,fs1);
%duration*fs 是总的采样点数
fprintf('Finished recording.n');
fprintf('Pre any key to play the recording...n');
pause;
wavplay(y,fs2);wavwrite(y,fs1,'E:matlabrecord3.wav');现象:第二次播放时,声音明显失真。
理由:采样频率和播放频率不一样时声音信号会失真。(2)
fs1=16000;
%取样频率 fs2=16000;
%播放频率 duration=5;
%录音时间
fprintf('Pre any key to start %g seconds of recording...n',duration);
pause;
fprintf('Recording...n');
y=wavrecord(duration*fs1,fs1);
%duration*fs 是总的采样点数
fprintf('Finished recording.n');
fprintf('Pre any key to play the recording...n');
pause;
wavplay(y,fs2);wavwrite(y,fs1,'E:matlabrecord3.wav');
wav=wavread('E:matlabrecord3.wav');Fs=16000;n=length(wav);f=(0:n-1)*16000/n;mag=abs(fft(wav));subplot(2,1,1);plot(wav);subplot(2,1,2);plot(f,mag)
采样频率为1600010.5y/幅度0-0.5-101234x/t采样频率为16000567x 1084600500400y/幅度***400060008000x/f***16000
fs1=8000;
%取样频率 fs2=8000;
%播放频率 duration=5;
%录音时间
fprintf('Pre any key to start %g seconds of recording...n',duration);
pause;
fprintf('Recording...n');
y=wavrecord(duration*fs1,fs1);
%duration*fs 是总的采样点数
fprintf('Finished recording.n');
fprintf('Pre any key to play the recording...n');
pause;wavplay(y,fs2);wavwrite(y,fs1,'E:matlabrecord3.wav');
wav=wavread('E:matlabrecord3.wav');Fs=8000;n=length(wav);f=(0:n-1)*16000/n;mag=abs(fft(wav));subplot(2,1,1);plot(wav);subplot(2,1,2);plot(f,mag)wavplay(wav,8000)
采样频率为8000hz1 0.5y/幅度0-0.5-1 00.511.52x/s采样频率为8000hz2.533.5x ***0500y/幅度***00x/hz***16000
由图可知:语音信号的主要频谱成分所在的带宽为(0—1200hz),带宽为1200hz。
当采样频率较小时,频谱图上显示带宽较大,波形较稀松。
最低采样频率应为,声音信号的最高频率的两倍,由图可知为2400hz。(3)女声:
wav1=wavread('E:matlabrecord1.wav');wav2=wavread('E:matlabrecord2.wav');wav=wav1+wav2;fp1=800;fp2=1500;fp=[fp1,fp2];fr1=650;fr2=1900;fr=[fr1,fr2];Fs=16000;ap=1;as=40;[n,fn]= buttord(fp/(Fs/2),fr/(Fs/2),ap,as,'z');[b,a]=butter(n,fn);Y1=filter(b,a,wav);Y=fft(Y1);mag=abs(Y);n=length(wav);f=(0:n-1)*16000/n;subplot(3,1,1);mag1=abs(fft(wav));plot(f,mag1)subplot(3,1,2);plot(f,mag);subplot(3,1,3);plot(Y1);wavplay(Y1,16000)
混合400300y/幅度***060008000x/频率女声***16000400300y/幅度 2001000 ***00f/hz***160000.20.1y/幅度0-0.1-0.201234x/t567x 1084
男声:
wav1=wavread('E:matlabrecord1.wav');wav2=wavread('E:matlabrecord2.wav');wav=wav1+wav2;fp1=200;fp2=600;fp=[fp1,fp2];fr1=100;fr2=1000;fr=[fr1,fr2];Fs=16000;ap=3;as=40;[n,fn]= buttord(fp/(Fs/2),fr/(Fs/2),ap,as,'z');[b,a]=butter(n,fn);Y1=filter(b,a,wav);Y=fft(Y1);mag=abs(Y);n=length(wav);f=(0:n-1)*16000/n;subplot(3,1,1);mag1=abs(fft(wav));plot(f,mag1)subplot(3,1,2);plot(f,mag);subplot(3,1,3);plot(Y1);wavplay(Y1,16000)
混合频谱图200150y/幅度***30004000x/hz男声频谱图***040y/幅度***8000x/hz男声时域图***160000.040.02y/幅度0-0.02-0.0401234x/s567x 1084
分离效果不佳,原因:男女声频率有很多重叠的地方。