《语音信 处理》仿真作业
院 系 电气与电子工程学院
专业班级
姓 名
学
指导教师
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 %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;
% 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 错后可以仔细看看弹
出的关于相关语句的解析,十分有助于更改错误并提高对语句的熟练程度。
相关资源:Yalefree雅乐简谱打谱软件_打谱软件-WindowsServer工具类资源…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!