您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 用matlab实现录音以及语谱图的绘制
《语音信号处理》仿真作业院系电气与电子工程学院专业班级姓名学号指导教师2020年3月作业题目:语音采集与读写一、目的(1)了解matlab采集语音信号的原理与采用命令;(2)掌握基于matlab的语音文件的创建、读写等操作。二、要求(1)利用matlab程序实现录音语音信号“你好,武汉欢迎你”,并保存为wuhan.wav文件。(2)使用waveread函数读取wuhan.wav文件,并使用plot函数显示出来。要求:横纵坐标带有标注,横轴的单位为秒(s),纵轴显示归一化后的数值。三、具体步骤(包含原理、具体实现、结果对比等)1、基本原理利用matlab的语音工具箱进行录音,用电脑声卡进行声音捕获。利用matlab打开录音的wav文件,对录音进行分析和归一化,并生成语谱图。2、具体实现(步骤、代码)第一步,用matlab软件实现录音,并存储为wav文件,同时绘制语音数据波形,代码如下:recObj=audiorecorder;disp('Startspeaking.')recordblocking(recObj,5);%设置录音时间disp('EndofRecording.');%回放录音数据play(recObj);%获取录音数据myRecording=getaudiodata(recObj);%绘制录音数据波形plot(myRecording);%存储语音信号filename='G:\Desktop\专业学习教程\语音信号处理\wuhan.wav';audiowrite(filename,myRecording,12000);第二步,读取wav文件并生成语谱图,代码如下:clearall;[x,sr]=audioread('G:\Desktop\专业学习教程\语音信号处理\wuhan.wav');%#okDWVRD%sr为采样频率if(size(x,1)size(x,2))x=x';ends=length(x);w=round(44*sr/1000);%窗长,取离44*sr/100最近的整数n=w;%fft的点数ov=w/2;%50%的重叠h=w-ov;%win=hanning(n)';%哈宁窗win=hamming(n)';%汉明窗c=1;ncols=1+fix((s-n)/h);%fix函数是将(s-n)/h的小数舎去d=zeros((1+n/2),ncols);forb=0:h:(s-n)u=win.*x((b+1):(b+n));t=fft(u);d(:,c)=t(1:(1+n/2))';c=c+1;endtt=[0:h:(s-n)]/sr;ff=[0:(n/2)]*sr/n;imagesc(tt/1000,ff/1000,20*log10(abs(d)));colormap(gray);axisxyxlabel('时间/s');ylabel('频率/kHz');3、实验结果说明语音数据波形语谱图四、总结这次做了一些准备工作所以比较顺利,在语谱图的绘制过程中曾经忘了添加先前wav录音文件的具体位置导致编译失败,在matlab报错后可以仔细看看弹出的关于相关语句的解析,十分有助于更改错误并提高对语句的熟练程度。
本文标题:用matlab实现录音以及语谱图的绘制
链接地址:https://www.777doc.com/doc-5698741 .html