基于Matlab语音信号的采集与分析文档格式.docx
- 文档编号:15407740
- 上传时间:2022-10-30
- 格式:DOCX
- 页数:12
- 大小:192.77KB
基于Matlab语音信号的采集与分析文档格式.docx
《基于Matlab语音信号的采集与分析文档格式.docx》由会员分享,可在线阅读,更多相关《基于Matlab语音信号的采集与分析文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
二、语音信号的录制采集和分析
2.1语音信号的采集
2.2语音信号的读入与打开
2.3取不同采样频率得出的波形比较
三、对男声、女声语音信号特点的分析
3.1女声(vfemale.wav)男声(vmale.wav)的时域分析
3.2女声(vfemale.wav)男声(vmale.wav)的频域分析
四、加噪声与滤波处理分析
4.1高斯白噪声(SNR=30)
4.2单频正弦噪声
五、心得与体会
语言是人类创造的,是人类区别于其他地球生命的本质特征之一。
人类用语言交流的过程可以看成是一个复杂的通信过程,为了获取便于分析和处理的语音信源,必须将在空气中传播的声波转变为包含语音信息并且记载着声波物理性质的模拟(或数字)电信号,即语音信号,因此语音信号就成为语音的表现形式或载体。
语音信号的进一步处理分析工作选用了Matlab平台。
Matlab是一种科学计算软件,专门以矩阵的形式处理数据。
Matlab将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,不断完善Matlab产品以提高产品自身的竞争能力Matlab的数据分析和处理功能十分强大,运用它来进行语音信号的分析、处理和可视化相当便捷。
在编程效率、程序可读性、可移植性和可扩充性上Matlab远远优于其它的高级编程语言,而且编程易学、直观,代码非常符合人们的思维习惯。
另外Matlab为用户提供了丰富的windows图形界面设计方法,使用户能够在利用其强大的数值计算功能的同时可设计出友好的图形界面,它受到了越来越多的用户的欢迎。
Matlab几乎可以在各种机型和操作系统上运行,所以在可移植性和可扩充性上,Matlab远优越于其他的高级编程语言。
Matlab语言具有强大的数值计算能力和视图能力,其偏微分方程工具箱提供了有限元求解的一个强大而灵活的环境,并且有限元网格可做精细划分以满足要求。
但是,和其他的高级语言相比,Matlab程序的执行速度较慢。
在目前电脑处理速度不断提升的情况下,如果实时性要求不是非常高的情况下,使用Matlab开发就不存在此类问题了。
二、语音信号的录制采集与分析
用手机自带的录音软件录音,录制时配备电话耳机作为麦克风,在安静,低噪声的环境下录制。
将得到的m4a格式的音频文件转换成wav格式,便于在Matlab平台上处理。
本人录制的是朗读的是毛泽东的《沁园春*长沙》。
在Matlab中,[y,fs,bits]=wavread('
Blip'
[N1N2]);
用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。
[N1N2]表示读取的值从N1点到N2点的值。
sound(y);
用于对声音的回放。
向量y则就代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。
下面是语音信号在MATLAB中的语言程序,它实现了语音的读入与打开,并绘出了语音信号的波形频谱图。
Matlab的M文件:
[x,fs,bits]=wavread('
C:
\Users\Day\Desktop\02120011.wav'
);
sound(x,fs,bits);
X=fft(x);
subplot(221);
plot(x);
title('
原始信号波形'
subplot(222);
plot(X);
title('
原始信号频谱'
subplot(223);
plot(abs(X));
原始信号幅值'
subplot(224);
plot(angle(X));
原始信号相位'
程序运行可以听到自己录制的声音,得到的结果如图2.2.1所示:
2.2.1语音信号的读入与打开
2.2.2用Matlab得出fs,bits的值
2.3取不同采样频率得出的波形比较
在Matlab中,resample函数用于改采样的频率,Y=resample(X,P,Q)表示对X取P/Q倍的原始采样频率,P,Q,必须为正整数。
1)fs=22050hz:
(y=resample(x,1,2);
)
2.3.1采样频率fs=22050hz的波形
2)fs=11025hz:
(y=resample(x,1,4);
2.3.2采样频率fs=11025hz的波形
3)fs=5512.5hz:
(y=resample(x,1,8);
2.3.3采样频率fs=5512.5hz的波形
4)fs=2756.25hz:
(y=resample(x,1,16);
2.3.4采样频率fs=2756.25hz的波形
分析:
随着采样频率的降低,录制的声音音调变得越来越高,语速也将越来越快,fs=22050hz时自己的声音特别像当红动画《神偷奶爸》里的小黄人的声音,让人捧腹。
当采样频率降到1/4的时候已经听不出录制的诗词了,当采样频率降到1/128的时候已经听不到声音了。
三、对女声、男声语音信号特点的分析
选择男声的信号文件(vmale.wav)是截取一首歌曲《直到世界的尽头》的副歌部分,女声的信号文件(vfemale.wav)是截取一首歌曲《IWillAlwaysLoveYou》的副歌部分,通过时序分析和频域分析进行比较。
3.1女声(vfemale.wav)男声(vmale.wav)的时域分析:
3.2女声(vfemale.wav)男声(vmale.wav)的频域分析:
[y1,fs1,bits1]=wavread('
\Users\Day\Desktop\vfemale.wav'
[y2,fs2,bits2]=wavread('
\Users\Day\Desktop\vmale.wav'
fs1=44100;
fs2=44100;
Y1=fft(y1);
Y2=fft(y2);
df1=fs1/length(Y1);
fx1=df1*(0:
length(Y1)-1);
%将横轴变成频率轴
df2=fs2/length(Y2-1);
fx2=df2*(0:
length(Y2)-1);
subplot(211);
plot(fx1,abs(Y1));
axis([05000010000]);
女声语音频域幅值波形'
xlabel('
frequency/Hz'
subplot(212);
plot(fx2,abs(Y2));
男声语音频域幅值波形'
):
分析男声和女声的差别,女声的音调比男生高一些,根据声音的特点,得知音调由频率决定,从图中可以看出,女声频率集中在1000Hz,男声频率集中在200Hz。
基于此特点,可以通过程序初步判断一段音频是男声还是女声。
[x1,fs,bits]=wavread('
y1=fft(x1);
x2=awgn(x1,30);
%sound(x2,fs,bits);
y2=fft(x2+x1);
f=0:
fs/44100:
fs/44100*44099;
plot(x1);
原始语音信号的时域波形'
plot(x2);
加入高斯白噪声语音信号的时域波形'
plot(abs(y1));
原始语音信号的频域幅值波形'
plot(abs(y2));
加入白噪声语音信号的频域幅值波形'
[team,row]=size(x1);
ifrow==2 %判别x1是双声道信号吗,是就通过取两列信号的平均值来变成单声道
x1=(x1(:
1)+x1(:
2))/2;
end
y1=fft(x1,44100);
N=length(x1)-1;
t=0:
1/44100:
N/44100;
d=[0.009*sin(6*pi*5000*t)]'
;
x2=x1+d;
y2=fft(x2,44100);
%f=0:
fs/44100*44100;
加入单频正弦语音信号时域波形'
加入单频正弦语音信号频域幅值波形'
在分析,采样,加噪声的过程中,在对程序的理解和使用上遇到了很多困难,通过Matlab论坛和百度一一查阅理解。
遇到最大的困难就是在给语音信号加上单频正弦噪声时总是会出现这样的错误:
一开始的程序如下:
经过对语音信号的分析和咨询他人之后,问题为此程序是处理单声道语音信号的,却没有预先判别信号是否为单声道就直接加噪声,从而导致x1为2维列向量,而d为一维列向量。
解决办法是加上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Matlab 语音 信号 采集 分析