语音信号的采集
- 格式:doc
- 大小:76.50 KB
- 文档页数:7
摘要 语音信号的采集与分析技术是一门涉及面很广的交叉科学,它的应用和发展与语音学、声音测量学、电子测量技术以及数字信号处理等学科紧密联系。该设计主要介绍语音信号的采集与分析方法,通过PC机录制自己的一段声音,运用Matlab提供的函数进行仿真分析,并画出采样后语音信号的时域波形和频谱图,对所采集的语音信号加入干扰随机高斯噪声,对加入噪声的信号进行播放,并进行时域和频谱分析;对比加噪前后的时域图和频谱图,分析讨论采用什么样的滤波器进行滤除噪声。 关键词:语音信号;采集与分析;Matlab 录制过程:打开电脑左下角的程序——附件——娱乐——录音机 文件转换:用文件工厂把录制的WAM格式转换成WAV格式。 1.语音信号的采集: 1)利用windows下的录音机(开始—程序—附件—娱乐—录音机,文件—属性—立即转换—8000KHz,8位,单声道),录制一段自己的话音“我要回家”, 时间控制在2秒左右,然后将音频文件保存“D:\matlab\bin\1.wav” 2)在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。 [z1,fs,bits]=wavread('D:\matlab\bin\1.wav') 运行结果:fs =8000 bits =8 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.语音信号的频谱分析 ①首先画出语音信号的时域波形 y=wavread('D:\matlab\bin\1.wav'); plot(y);title('121104');图像输出如图
024681012x 104
-1
-0.8-0.6-0.4-0.200.20.40.60.81121104069 周云龙 ②对语音信号进行频谱分析,在MATLAB中,可以利用函数fft对信号进行快速付立叶变换,得到信号的频谱特性 y=wavread('D:\matlab\bin\1.wav'); y1=y(1:8192); Y1=fft(y1); n=0:8191; plot(n,Y1); title('121104069 周云龙');
0100020003000400050006000700080009000-30-20-100102030121104069 周云龙
二、加噪后语音信号的程序设计: % 用randn函数给原始信号加入高斯随机噪声 fs=22050;%语音信号采样频率为22050 x1=wavread('1.wav');%读取语音信号的数据,赋给变量x1 t=0:1/22050:(size(x1)-1)/22050; y1=fft(x1,1024);%对信号做1024点FFT变换 f=fs*(0:511)/1024; x2=randn(1,length(x1));%产生一与x长度一致的随机信号 sound(x2,22050); figure(1); plot(x2)%做原始语音信号的时域图形 title('高斯随机噪声121104069 周云龙'); xlabel('time(s)'); ylabel('幅值'); randn('state',0); m=randn(size(x1)); x2=0.1*m+x1; sound(x2,22050);%播放加噪声后的语音信号 y2=fft(x2,1024); figure(2); plot(t,x2); title('加噪后的语音信号121104069 周云龙'); xlabel('time n'); ylabel('幅值 n'); figure(3); subplot(2,1,1); plot(f,abs(y1(1:512))); title('原始语音信号频谱121104069 周云龙'); xlabel('Hz'); ylabel('幅值'); subplot(2,1,2); plot(f,abs(y2(1:512))); title('加噪后的语音信号频谱121104069 周云龙'); xlabel('Hz'); ylabel('幅值'); Fs=22050,Nbits=16; wavwrite(x2,Fs,Nbits,'noisexp.wav');
024681012x 104
-5
-4-3-2-1012345高斯随机噪声121104069 周云龙time(s)幅值 0123456-1.5-1-0.500.511.5加噪后的语音信号121104069 周云龙time?n幅值?n
020004000600080001000012000-1-0.500.51原始语音信号频谱121104069 周云龙Hz幅值
0200040006000800010000120000510加噪后的语音信号频谱121104069 周云龙
Hz幅值
三.设计IIR低通滤波器滤波 程序如下: clear;close all [z1,fs,bits]=wavread('D:\matlab\bin\1.wav') y1=z1(1:8192); Y1=fft(y1); fp=1000;fc=1200;As=100;Ap=1; ;Fs=8000; wc=2*fc/Fs;wb=2*fp/Fs; [n,wp]=cheb1ord(wc,wb,Ap,As); [b,a]=cheby1(n,Ap,wp); figure(1); freqz(b,a); x=filter(b,a,z1); X=fft(x,8192); figure(2); subplot(2,2,1);plot(abs(Y1));axis([0,1000,0,1.0]); title('滤波前信号频谱121104069周云龙'); subplot(2,2,2);plot(abs(X));axis([0,4000,0,0.03]); title('滤波后信号频谱121104069周云龙'); subplot(2,2,3);plot(z1); title('滤波前信号波形121104069周云龙'); subplot(2,2,4);plot(x); title('滤波后信号波形121104069周云龙'); sound(x,fs,bits);
00.10.20.30.40.50.60.70.80.91-2000-1500-1000-5000Normalized Frequency ( rad/sample)Phase (degrees)
00.10.20.30.40.50.60.70.80.91-600-400-2000Normalized Frequency ( rad/sample)Magnitude (dB) 0500100000.51滤波前信号频谱121104069周云龙0100020003000400000.010.020.03滤波后信号频谱121104069周云龙051015x 104-1-0.500.51滤波前信号波形121104069周云龙051015x 104
-2
-1012滤波后信号波形121104069周云龙
设计总结: 通过这次课程设计,使我对语音信号有了全面的认识,对数字信号处理的知识又有了深刻的理解,在之前数字信号与处理的学习以及完成课后的作业的过程中,已经使用过MATLAB,对其有了一些基础的了解和认识。通过这次练习是我进一步了解了信号的产生、采样及频谱分析的方法。以及其中产生信号和绘制信号的基本命令和一些基础编程语言和文件格式的转换。让我感受到只有在了解课本知识的前提下,才能更好的应用这个工具;并且熟练的应用MATLAB也可以很好的加深我对课程的理解,方便我的思维。这次设计使我了解了MATLAB的使用方法,学会分析滤波器的优劣和性能,提高了分析和动手实践能力。同时我相信,进一步加强对MATLAB的学习与研究对我今后的学习将会起到很大的帮助。 参考文献:
1. 王济 MATLAB在振动信号处理中的应用 中国水利水电出版社 2. 张志涌 精通MATLAB6,5版[M] 北京航空航天大学出版社 3. 徐靖涛 基于MATLAB的语音信号分析与处理 重庆科技学院学报 4. 张文 基于MATLAB语音信号的滤波域实现 山西电子工业出版社 5. 张桂香 高爱国 语音信号采集与处理方法的研究 高师理科学刊