语音分析实验报告。
姓名:母洋文。
学号:10021113
一、 实验目的。
1. 了解声音信号采集、变换、分析、处理的全过程。
2. 理解傅里叶变换、功率谱、对数功率谱、倒频谱的原理和在工程应用中的作用。
3. 学习如何使用matlab软件对采集到的离散信号进行变换并绘出图形。
4. 掌握分析时、频谱图的方法。
二、 实验仪器。
nd2型声级计、采集卡、笔记本电脑。
三、 实验步骤。
1. 连接好实验仪器;
2. 设置声级计的档位为中档(50~110db);
3. 拔掉笔记本电源、关闭手机及其它可能对实验产生干扰的设备;
4. 打开信号采集软件,设置采样频率为80k,采样时间为10s;
5. 被测试人发出‘a’音,待1~2s声音平稳后,鼠标单击软件界面的开始按钮开始采集信号,每次采集时间为10s;采集到的数据是电压值,单位为毫伏(mv)。
四、 信号处理。
使用matlab软件编写一m文件,读取实验所得的数据文件,并绘制图形,如图1。
图11. 零均值化。
将实验所得的数据求和,并除以数据总数80万,得到数值s;然后用每个数据减去s,得到一组新的数据,后面的分析都使用这组数据,即实现了零均值化,并绘制图形,如图2。
图22.傅里叶变换。
实验的采样频率为80k,采样时间为10s,因此,得到80万个数据。在信号处理时,将零均值化后的数据分成40段,即第1~20000个数据为第1段,第20001~40000个为第2段,依次类推。
利用matlab库函数fft对每一段数据做快速傅里叶变换,然后对这40段快速傅里叶变换求平均,并绘制图形,截取频率为0~5000hz的部分,如图3.
图33.功率谱。
采用自相关函数法求功率谱。
在matlab中,先使用库函数xcorr求每段数据的自相关函数,再使用fft函数对每段数据的自相关函数进行傅里叶变换,最后对得到的40段傅里叶变换取平均,得出自功率谱。绘制其图形,如图4所示。
图44.对数功率谱。
在matlab中使用log函数对3中得出的功率谱取自然对数,得到对数功率谱,并绘制其图形,截取部分曲线,如图5。
图55.倒频谱。
根据定义,对对数功率谱进行傅里叶逆变换得出的即为类自相关倒频谱。因此,在matlab中使用ifft函数对4中得到的对数功率谱进行傅里叶逆变换,并绘制图形,如图6.
图6五、 分析。
图2中截取5~5.1s,放大,如下图。
从上图中可以明显的看出基音周期的存在,a点横坐标为5.01,b点横坐标为5.016,所以,基音周期约为0.006s。
从对数功率谱(图5)中可清楚地看到‘a’音的频率约为172hz。
实验测得的‘a’音信号,是嗓音信号与声道信号在时域上的卷积,在频率上的乘积,倒频谱分析可以把嗓音信号与声道信号分别开来。倒频谱图(图6)中,点m的横坐标为xm=0.005825s,因此我发‘a’音时的嗓音频率为=171.
67hz。
六、 对比。
对一个男同学(饶阳)和一个女同学(李淑静)的‘a’音信号做同样的处理分析,绘出图形,如下:
男同学:女同学:
从对数功率谱图中可得出,男同学的嗓音频率为140hz, 女同学的嗓音频率为228hz;从对数倒频谱图中可得出,男同学的嗓音频率为1/x=1/0.007075=141.34hz,女同学的嗓音频率为1/x=1/0.
004375=228.57hz。
通过对比可知,嗓音频率男同学较女生低,这也是男同学声音低沉,女同学声音尖锐的原因所在。
七、 总结。
通过实验,我对信号采集、处理、分析的方法和过程更加清楚,对傅里叶变换、功率谱、对数功率谱、倒数谱的数学变换关系以及其在工程应用中的作用和意义更加明了,同时还明白了人声音信号的组成,每个人都有自己的声音频率,女生嗓音频率比男生高。通过对理论知识的实际应用,是我对理论知识的掌握更加牢靠。
信号处理作业
一 用傅里叶变换编程对复杂周期信号分解,对非周期信号分解。1 程序如下 定义傅里叶函数。function a,b,f fouriers f,t,t,a,b,k w 2 pi t a 1 t int f,t,a,b 求a0的值b f a for i 1 k ak 2 t int f cos i w t...
信号处理作业
200622120137 硕603班栗娜。思考题 傅立叶变换是一种什么模型,在什么情况下傅立叶变换不适合?答 傅立叶变换将满足一定条件的某个函数表示成很多正弦函数的线性组合或者积分。傅立叶变换具有正交性 完备性等很多有点。但是,傅立叶变换有其明显的缺点,就是没有时间局部信息,信号任何时刻的微小变化就...
信号处理作业
实验一基本信号。一 实验目的 1 本节专注于用matlab产生一些基本离散时间信号的问题。主要使用matlab内部向量程序来产生信号。2 熟悉matlab环境,产生和绘出各种基本信号。2 实验内容 1 冲激信号 产生并绘出下面的序列。在每种情形下,水平n轴应该只在指定的区间上展开并应该相应标注。使用...