原谅我上课走神了,,结果用了更多的时间去补偿自己上课浪费的时间。。。
以后课前一定做好预习,课后及时做好反馈,整个下来其实花的时间也不是很多,归根结底还是自己tcl
基本要求
-
录音,自己读5个数字0-4,然后录下来转成单声道的wav文件
-
求基音
基音的求法可以比较简单,就是通过加w=20ms,160个样点的汉明窗,然后计算出短时自相关函数,取最大值就是基音的频率 -
通过LP,求预测增益,画出数字0的预测增益
m4a转wav格式
matlab
[y,fs] = audioread('5num.m4a');
audiowrite('5num.wav', y(:,1), 8000)
这样就转成了wav格式的文件
当然我比较偷懒,本来双声道应该是要做一点处理再变成单声道的,但是为了方便就直接变好了
求基音频率
这里当然我是不知道写代码的,所以用了别人的代码,下面好好分析一下:
说实话我有点晕不知道应该是怎么说比较好
栗1
x = audioread('5num.wav');
figure(1);
stem(x, '.');
n=160; %每一帧160个样点
for m=1:length(x)/n;%帧的个数
for k=1:n;%一帧有160个点
Rm(k)=0;
% 求自相关函数
for i=(k+1):n;
Rm(k)=Rm(k)+x(i+(m-1)*n)*x(i-k+(m-1)*n);
end
end
p=Rm(30:n);
[Rmax,N(m)]=max(p);
end
首先读入音频,然后分帧,每一帧是160个样点,取出每一帧来,通过
for i=(k+1):n;
Rm(k)=Rm(k)+x(i+(m-1)*