《语音信号处理》仿真作业
院系电气与电子工程学院专业班级
姓名
学号
指导教师
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('Start speaking.')
recordblocking(recObj, 5);%设置录音时间
disp('End of Recording.');% 回放录音数据
play(recObj);% 获取录音数据
myRecording = getaudiodata(recObj);% 绘制录音数据波形
plot(myRecording);%存储语音信号
filename = 'G:\Desktop\专业学习教程\语音信号处理\wuhan.wav'; audiowrite(filename,myRecording,12000);
第二步,读取wav文件并生成语谱图,代码如下:
clear all;
[x,sr]=audioread(' G:\Desktop\专业学习教程\语音信号处理\wuhan.wav');                %#ok<DWVRD> %sr为采样频率
if (size(x,1)>size(x,2))
x=x';
end
s=length(x);
w=round(44*sr/1000);                    %窗长,取离44*sr/100最近的整数 n=w;                                  %fft 的点数 ov=w/2;                                %50%的重叠 h=w-ov;round函数怎么使用matlab
% win=hanning(n)';                      %哈宁窗 win=hamming(n)';                        %汉明窗 c=1;
ncols=1+fix((s-n)/h);                      %fix 函数是将(s-n)/h 的小数舎去 d=zeros((1+n/2),ncols); for b=0:h:(s-n)
u=win.*x((b+1):(b+n));    t=fft(u);
d(:,c)=t(1:(1+n/2))';    c=c+1; end
tt=[0:h:(s-n)]/sr; ff=[0:(n/2)]*sr/n;
imagesc(tt/1000,ff/1000,20*log10(abs(d))); colormap(gray); axis xy xlabel('时间/s'); ylabel('频率/kHz'); 3、实验结果说明
语音数据波形                                语谱图
四、总结
这次做了一些准备工作所以比较顺利,在语谱图的绘制过程中曾经忘了添加先前wav录音文件的具体位置导致编译失败,在matlab报错后可以仔细看看弹出的关于相关语句的解析,十分有助于更改错误并提高对语句的熟练程度。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。