对采集的语音信号进行matlab设计与分析课程设计报告30

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

语音信号采集与处理主题:Matlab与信息系统仿真课程设计组长:XXX组员:XXXXXXX班级:电子信息工程12012目录第一章课程设计情况概述1.1课程设计目的…………………………………………………31.2课程设计内容…………………………………………………31.3小组分工………………………………………………………3第二章具体实现方案及小结2.1第(1)、(2)版块:录制语以及频谱分析………………………………42.1.1板块要求…………………………………………………………………42.1.2版块分析及具体实现代码………………………………………………42.1.3Matlab仿真结果图……………………………………………………52.2第(3)版块:采样…………………………………………………………72.2.1版块要求…………………………………………………………………72.2.2板块分析及具体实现代码……………………………………………72.3第(4)版块:对语音实现几种常见变化……………………………………132.3.1版块要求………………………………………………………………132.3.2板块分析及具体实现代码……………………………………………132.4第(5)版块:调制、解调………………………………………………252.4.1板块要求………………………………………………………………252.4.2版块分析及具体实现代码……………………………………………252.4.3Matlab仿真结果图……………………………………………………282.5第(6)版块:加噪、滤波………………………………………………322.5.1板块要求………………………………………………………………322.5.2版块分析及具体实现代码……………………………………………322.6小结………………………………………………………………………413第一章课程设计情况概述1.1课程设计目的本课程设计要求掌握Matlab语言特性、数学运算和图形表示;掌握Matlab程序设计方法在信息处理方面的一些应用;掌握在Windows环境下,利用Matlab进行语音信号采集与处理的基本方法。综合设计实验方案设计5天分析题目,查找相关资料,利用已掌握知识、原理,提出设计具体方案,拟订设计步骤,确定方案,编写程序代码并上机调试,修改完善设计,记录数据,分析结果。1.2课程设计内容这次的课程设计大致分为两个阶段,一周为一个阶段。1.关于Matlab的基础训练Matlab在信号与系统、随机信号处理中的基本应用2.综合设计:语音信号的采集与处理(1)利用windows自带的录音机或者其它录音软件,录制几段语音信号(要有几种不同的声音,要有男声、女声)。(2)对录制的语音信号进行频谱分析,确定该段语音的主要频率范围,由此频率范围判断该段语音信号的特点(低沉or尖锐?)(3)利用采样定理,对该段语音信号进行采样,观察不同采样频率(过采样、欠采样、临界采样)对信号的影响。(4)实现语音信号的快放、慢放、倒放、回声、男女变声。(5)对采集到的语音信号进行调制与解调,观测调制与解调前后信号的变化。(6)对语音信号加噪,然后进行滤波,分析不同的滤波方式对信号的影响。1.3小组分工第(1)、(2)版块XXX,第(3)版块XXX,第(4)版块XXX,第(5)版块XXX,第(6)版块XXX,报告最终由组长统一整理。4第二章具体实现方案2.1第(1)、(2)版块:录制语音以及频谱分析2.1.1版块要求:①利用windows自带的录音机或者其它录音软件,录制几段语音信号(要有几种不同的声音,要有男声、女声)。②对录制的语音信号进行频谱分析,确定该段语音的主要频率范围,由此频率范围判断该段语音信号的特点(低沉还是尖锐?)2.1.2版块分析及具体实现代码:先录制几段音频,再利用Matlab编程对其进行频谱分析。[x1,fs,nbits]=wavread('D:\matlab\语音样本.wav');%读取音频文件,识别的是音频存放地址sound(x1,fs);%利用matlab中发声函数sound语句N=length(x1);M=log(N)/log(2);Q=round(M);%round函数是对所得数取整S=2^Q;%求得与N最接近的2的n次幂n=[0:N-1];%从0取到N-1X=fft(x1);%进行傅里叶变换Fs=1*fs;f=n/N*Fs;%图2的横坐标figure(1);subplot(2,1,1);plot(n,x1);%绘制原音频信号图title('原始音频信号');Amp=abs(X)/(S/2);Amp(1,:)=Amp(1,:)/2;subplot(2,1,2);plot(f,Amp);axis([0,3000,0,0.01])%绘制频谱图title('音频的幅度谱');5在设计算法的过程中,本段程序的难点在于如何找到与length(x1)最接近的2的n次幂,以及傅立叶变换之后的频谱值(即图中的纵坐标值)。通过先对length(x1)求2的对数,再利用round函数进行四舍五入求整,最终得到想要的最接近length(x1)的2的n次幂。2.1.3Matlab仿真结果图:从图中可以读出这段音频信号的频率大概在100~800赫兹,比较低沉,一般来说应该是男声。6从图中可以读出这段音频信号的频率大概在700~1400赫兹,比较尖锐,一般来说应该是女声。72.2第(3)版块:采样2.2.1版块要求利用采样定理,对该段语音信号进行采样,观察不同采样频率(过采样、欠采样、临界采样)对信号的影响。2.2.2板块分析及具体实现代码这里涉及到采样下重采样的问题。所谓重采样就是对一系列离散的数字信号进行插值(升频)或去值(降频),以改变原有信号的采样率,在Matlab中,可以用resample(x,p,q),decimate(x,r)函数实现。也可以将原有音频进行重构,对获得的波形进行二次采样,不过这样比较麻烦。本段程序采用的是resample(x,p,q)函数,所用的音频时间大概有3秒,更有利于观察对频谱的影响。RESAMPLE函数的原理:p/Q是确定采样频率的必要条件,由于系统录音所确定的采样频率由[x1,fs,nbits]=wavread('D:\matlab\nv.wav')所决定;%读取音频文件返回值为44100hz。对于所用音频,其频谱分析出来的最高频率是fm=1750hz。由采样定理得,采样频率fs=2fm=3500hz,大约是44100的1/13。当为临界采样时fs=2fm,确定p=1,Q=13,采样频率为3500hz;当为过采样时fs2fm,确定P=1,Q=10,采样频率为4410hz;当为欠采样时fs2fm,确定P=1,Q=18,采样频率为2450hz;程序代码:[x1,fs,nbits]=wavread('D:\matlab\nv.wav');%读取音频文件,识别的是地址sound(x1,fs);%利用matlab中发声函数sound语句N=length(x1);M=log(N)/log(2);Q=round(M);S=2^Q;n=[0:N-1];%n从0取到N-18X=fft(x1);%进行傅里叶变换Fs=1*fs;f=n/N*Fs;figure(1);subplot(2,1,1);plot(n,x1);%绘制原音频信号title('原始音频信号');Amp=abs(X)/(S/2);Amp(1,:)=Amp(1,:)/2;subplot(2,1,2);plot(f,Amp);axis([0,4000,0,0.01])%绘制频谱图title('音频的幅度谱');临界采样:[x,fs,nbits]=wavread('D:\matlab\nv.wav');%读取音频文件,识别的是地址x2=resample(x,1,13);%采样频率化为3500Hz9sound(x2,fs/13);%利用matlab中发声函数sound语句N=length(x2);M=log(N)/log(2);Q=round(M);S=2^Q;n=[0:N-1];%从0取到N-1X=fft(x2);%进行傅里叶变换Fs=fs/14;f=n/N*Fs;figure(2)subplot(2,1,1);plot(n,x2);%绘制原音频信号title('临界采样后原始音频信号');Amp=abs(X)/(S/2);Amp(1,:)=Amp(1,:)/2;subplot(2,1,2);plot(f,Amp);axis([0,4000,0,0.01])%绘制频谱图title('临界采样音频的幅度谱');10过采样:[x,fs,nbits]=wavread('D:\matlab\nv.wav');%读取音频文件,识别的是地址x3=resample(x,1,10);%采样频率化为4410Hzsound(x3,fs/10);%利用matlab中发声函数sound语句N=length(x3);M=log(N)/log(2);Q=round(M);S=2^Q;n=[0:N-1];%从0取到N-1X=fft(x3);%进行傅里叶变换Fs=fs/10;f=n/N*Fs;figure(3);subplot(2,1,1);plot(n,x3);%绘制原音频信号title('过采样后原始音频信号');Amp=abs(X)/(S/2);Amp(1,:)=Amp(1,:)/2;subplot(2,1,2);plot(f,Amp);axis([0,4000,0,0.01])%绘制频谱图title('过采样后音频的幅度谱');11欠采样[x,fs,nbits]=wavread('D:\matlab\nv.wav');%读取音频文件,识别的是地址x4=resample(x,1,18);%采样频率化为2450Hzsound(x4,fs/18);%利用matlab中发声函数sound语句N=length(x4);M=log(N)/log(2);Q=round(M);S=2^Q;n=[0:N-1];%从0取到N-1X=fft(x4);%进行傅里叶变换Fs=fs/18;f=n/N*Fs;figure(4);subplot(2,1,1);plot(n,x4);%绘制原音频信号title('欠采样后原始音频信号');Amp=abs(X)/(S/2);Amp(1,:)=Amp(1,:)/2;subplot(2,1,2);plot(f,Amp);axis([0,4000,0,0.01])%绘制频谱图title('欠采样后音频的幅度谱');12频谱分析:由第一段程序对所用的音频进行频谱分析所得频谱图可知,这段音频的最大频率为1750Hz,也就可以确定三种采样所用的采样频率。由采样定理知,临界采样和过采样对声音不会有太大影响,临界采样让相邻频谱紧靠,过采样让相邻频谱分开一段距离。而欠采样则让频谱不全,声音听起来低沉暗哑。132.3第(4)版块:对语音实现几种常见变化2.3.1板块要求实现语音信号的快放、慢放、倒放、回声、男女变声。2.3.2版块分析及具体实现代码①实现对录音内容倒放[x,fs,Nbits]=wavread('D:\matlab\语音样本.wav');x=flipud(x)wavplay(x,fs);%对加载的语音信号进行回放②实现录音内容回声[x,fs,bits]=wavread('D:\matlab\语音样本.wav');%读取语音信号n1=0:2000;b=x(:,1);%产生单声道信号N=3;M=length(x);yy2=filter(1,[1,zeros(1,80000/(N+1)),0.7],[b',zeros(1,40000)]);%IIR滤波器进行滤波figure(3)subplot(2,1,1);plot(yy2);%三次回声滤波器时域波形title('三次回声滤波器时域波形');YY2=fft(yy2);%对三次回声信号做FFT变换subplot(

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功