语音信号采集与处理Word格式.docx
- 文档编号:19091597
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:13
- 大小:141.61KB
语音信号采集与处理Word格式.docx
《语音信号采集与处理Word格式.docx》由会员分享,可在线阅读,更多相关《语音信号采集与处理Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
采样频率是指计算机每秒钟采样多少个声音样本,是描述声音文件的音质、音频、衡量声卡、声音文件的质量标准。
采样频率越高,即采样的时间间隔越短,则在单位时间内计算机得到的声音样本数据越多,对声音波形的表示也越准确。
3、采样位数与采样频率:
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。
采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。
采样位数和采样率对于音频接口来说是最为重要的两个指标。
无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。
采样位数越多则捕捉到的信号越精确。
4、利用MATLAB对语音信号进行分析和处理:
采集语音信号后,利用MATLAB软件平台进行频谱分析;
并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。
5、语音信号的滤波示意图:
三.实践步骤
1、语音信号的采集与分析
(1)利用PC机上的声卡和WINDOWS操作系统可以进行数字信号的采集。
将话筒插入计算机的语音输入插口上,启动录音机。
按下录音按钮,对话筒说话“我想回家”,说完后停止录音,屏幕左侧将显示所录声音的长度。
(2)以文件名“2”保存入C盘中。
可以看到,文件存储器的后缀默认为.wav。
要保存文件时,利用了计算机上的A/D转换器,把模拟的声音信号变成了离散的量化了的数字信号,放音时,它又通过D/A转换器,把保存的数字数据恢复为原来的模拟的声音信号。
(3)在Matlab软件平台下可以利用函数wavread对语音信号进行采样,得到了声音数据变量x1,x1=wavread('
C:
\2.wav'
);
同时把x1的采样频率fs=22050Hz和数据位Nbits=16Bit放进了MATALB的工作空间。
图figure1为原始语音信号的时域图形。
(4)从图中可以看出在时域环境下,信号呈现出4个不规则的信号峰值。
通过freqz(x1)函数绘制原始语音信号的频率响应图figure2。
(5)然后对语音信号进行频谱分析,在Matlab中可以利用函数y1=fft(x1,1024);
plot(abs(y1(1:
512)))对信号行快速傅里叶变换,得到信号的频谱图figure3,从图中可以看出对各个频点上的随机信号在频域进行抽样,抽样频率为22050Hz。
2、利用余弦函数构造一个高频噪声
1.在Matlab中人为设计一固定频率5000Hz的噪声干扰信号。
噪声信号通常为随机序列,在本设计中用余弦序列代替。
干扰信号构建命令函数为d=[Au*cos(2*pi*5000*t)]'
;
x1=wavread('
x2=x1+d;
2.给出的干扰信号为一个余弦信号,针对上面的语音信号,采集了其中一段。
再对噪音信号进行频谱变换得到其频谱图,y2=fft(x2,1024);
从图中可以看出干扰信号,在4000Hz和6000Hz频点处有一高峰,其中5000Hz正是本设计所要利用的。
若带噪信号y(m)是纯净语音信号s(m)和平稳加性高斯白噪声n(m)构成的,即:
y(m)=x(m)+n(m);
则在频域中表示为Y(ω)=X(ω)+N(ω);
其中Y(ω),X(ω),N(ω)分别是y(m),x(m),n(m)的傅里叶变换。
X(ω)=Y(ω)-N(ω);
只要从带噪信号中减去噪声信号即可估计出语音信号,再进行傅里叶反变换就可得到增强的语音。
3、设计合适的滤波器,滤除高频噪声
由模拟滤波器变换为数字滤波器时,采用的是双线性变换法,它保留的是从模拟到数字域的系统函数表示。
用双线性变换法设计低通滤波器。
在MATLAB中,可以利用函数butterworth设计低通滤波器。
数字巴特沃兹低通滤波器函数:
function[b,a]=digital_lowpass_butter(wp,ws,Rp,As,Fs)
[N,wn]=buttord(wp/pi,ws/pi,Rp,As)
[b,a]=butter(N,wn);
时域低通滤波:
x=wavread(‘2.wav’);
x为读取原语音文件的数据,一维数组
h=ones(1,220);
h为低通滤波器的单位冲激响应
y=conv(x,h);
时域卷积,低通滤波
wavwrite(y,22050,‘su2.wav’);
将滤波后的数据保存为.wav文件
用MATLAB中的函数freqz画出各滤波器的频率响应。
用设计好的带阻滤波器对含噪语音信号进行滤波,在Matlab中IIR滤波器利用函数filter对信号进行滤波。
在一个窗口同时画出滤波前后的波形及频谱。
从图中可以看出,5000Hz看到的高峰消失了,语音信号与开始的一样,滤波器成功的滤除了干扰信号。
利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;
四、程序设计及仿真图
1、用Matlab对原始语音信号进行分析,画出它的时域波形和频谱
程序:
fs=22050;
[x,fs,Nbits]=wavread('
\2.wav'
);
t=0:
1/22050:
(length(x)-1)/22050;
sound(x,fs);
%对加载的语音信号进行回放
figure
(1)
plot(x)%做原始语音信号的时域图形
title('
原始语音信号'
);
xlabel('
timen'
ylabel('
fuzhin'
figure
(2)
freqz(x)%绘制原始语音信号的频率响应图
频率响应图'
)
n=length(x);
%求出语音信号的长度
y1=fft(x,n);
%傅里叶变换
y2=fftshift(y1);
%对频谱图进行平移
f=0:
fs/n:
fs*(n-1)/n;
%得出频点
figure(3)
subplot(2,1,1);
plot(abs(y2))%做原始语音信号的FFT频谱图
原始语音信号FFT频谱'
subplot(2,1,2);
plot(f,abs(y2));
%绘制原始语音信号的频谱图
原始语音信号频谱'
时域波形和频谱:
2.给原始的语音信号加上一个高频余弦噪声,频率为(2Khz)。
对加噪后的语音进行分析,并画出其信号时域和频谱图。
%加噪声
k=1:
1:
n;
%定义k值,噪声与原始语音长度一致
c1=10*sin(2*pi*2000*k);
%噪声信号的函数
figure(4)
plot(k,c1)
title('
噪声信号时域图'
%绘制噪声信号的时域波形图
figure(5)
freqz(c1)%绘制噪声信号的频率响应图
噪声信号频率响应图'
s=length(c1);
%噪声信号的长度
xc=fft(c1,s);
%对噪声信号进行频谱变换
xcc=fftshift(xc);
f=0:
fs/s:
fs*(s-1)/s;
figure(6)%绘制噪声语音的FFT频谱图
plot(f,abs(xcc))
噪声信号的频谱图'
%噪音与原始信号叠加
z=x'
+c1;
y3=fft(z,s);
%对叠加信号进行频谱变换
y4=fftshift(y3);
%对频谱图平移
figure(7)
plot(f,abs(y4));
%绘出加噪语音频谱图
axis([080000400]);
含噪语音信号的频谱'
figure(8)
plot(f,abs(y2))%做原始语音信号的FFT频谱图
plot(f,abs(y4))%做加噪语音信号的FFT频谱图
加噪语音信号频谱'
与原始信号对比,区别:
3.设计合适的滤波器,滤除高频噪声,绘出滤波后的信号频域和时域波形:
%用双线性变换法设计巴特沃思低通滤波器
wp=0.25*pi;
%通带截止频率
ws=0.3*pi;
%阻带截止频率
Rp=1;
%通带最大衰减
Rs=15;
%阻带最小衰减
Fs=22050;
Ts=1/Fs;
wp1=2/Ts*tan(wp/2);
%将模拟指标转换成数字指标
ws1=2/Ts*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'
s'
%选择滤波器的最小阶数
[Z,P,K]=buttap(N);
%创建butterworth模拟滤波器
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs);
%用双线性变换法实现模拟滤波器到数字滤波器的转换
[H,W]=freqz(bz,az);
%绘制频率响应曲线
figure(9)
plot(W*Fs/(2*pi),abs(H))
grid
频率/Hz'
频率响应幅度'
Butterworth'
f1=filter(bz,az,z);
figure(10)
subplot(2,1,1)
plot(t,z)%画出滤波前的时域图
滤波前的时域波形'
subplot(2,1,2)
plot(t,f1);
%画出滤波后的时域图
滤波后的时域波形'
sound(f1,22050);
%播放滤波后的信号
p=length(f1);
F0=fft(f1,p);
fs/p:
fs*(s-1)/p;
figure(11)
y2=fft(z,1024);
%画出滤波前的频谱图
滤波前的频谱'
Hz'
fuzhi'
F1=plot(f,abs(F0));
%画出滤波后的频谱图
滤波后的频谱'
x=wavread('
%x为读取原语音文件的数据,一维数组
h=ones(1,220);
%h为低通滤波器的单位冲激响应
y=conv(x,h);
%时域卷积,低通滤波
wavwrite(y,22050,'
\su2.wav'
%将滤波后的数据保存为.wav文件
与原噪音信号对比,区别:
滤波后信号的幅值都偏小于原信号的幅值。
五、心得体会:
通过这一个星期的课程设计,我学到了很多的东西,不仅巩固了我以前所学过的知识,还让我学到很多在书本上所没有学到过的知识。
同时进一步加深了对语音信号的了解和熟练了对Matlab的使用,让我对通信原理这门课程有了更加浓厚的兴趣。
因为以前都是基于课本上所学的理论知识,然而通过这次课程设计之后才能真正理解其意义。
在这次课程设计的过程中,我遇到不少的问题,比如刚开始,要录音的时候,没有选择正确的频率,导致在运行程序的时候,无法调用声音,经过后来的改正才可以。
还有刚开始由于对滤波器的滤波原理并不是很了解,于是我又翻出学过的数字信号处理课本,认真研究起各种滤波器,这才使我明白了大多数滤波器是如何工作,不再单单只是懂理论,理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论。
总的来说,通过这次的课程设计我对语音信号有了全面的认识,对Matlab的知识又有了深刻的理解,让我感受到只有在充分理解课本知识的前提下,才能更好的应用这个工具。
这次课程设计使我了解了MATLAB的使用方法,学会分析滤波器的优劣和性能,提高了分析和动手实践能力,同时我相信,进一步加强对MATLAB的学习与研究对我今后的学习将会起到很大的帮助!
六、参考文献:
1.王济MATLAB在振动信号处理中的应用中国水利水电出版社
2.张志涌精通MATLAB6,5版[M]北京航空航天大学出版社
3.徐靖涛基于MATLAB的语音信号分析与处理重庆科技学院学报
4.张文基于MATLAB语音信号的滤波域实现山西电子工业出版社
5.张桂香高爱国语音信号采集与处理方法的研究高师理科学刊
6.陈怀琛MATLAB及在电子信息课程中的应用[M]北京电子工业
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 信号 采集 处理