% 音频长一点 > 6秒
waveFile='长6秒的音频.wav ';
[y, fs] = audioread(waveFile);
time=(1:length(y))/fs;
frameSize=floor(40*fs/1000); % 帧长
% startIndex=round(15000); % 起始序号
startIndex=round(20000); % 起始序号
% endIndex=startIndex+frameSize-1; % 结束序号
endIndex=startIndex+frameSize-1; % 结束序号
frame = y(startIndex:endIndex); % 取出该帧
frameSize=length(frame);
frame2=frame.*hamming(length(frame)); % 加 hamming window
rwy= rceps(frame2); % 求倒谱
%ylen=length(rwy);
ylen=max(size(rwy)) ;
cepstrum=rwy(1:floor(ylen/2));
%基音检测
LF=floor(fs/500);
HF=floor(fs/70);
cn=cepstrum(LF:HF);
[mx_cep ind]=max(cn);
%共振峰检测核心代码:
% 找到最大的突起的位置
NN=ind+LF;
han= hamming (NN);
cep=cepstrum(1:NN);
ceps=cep.*han; % hamming window
formant1=20*log(abs(fft(ceps)));
formant(1:2)=formant1(1:2);
for t=3:NN
%--do some median filtering
z=formant1(t-2:t);
md=median(z);
formant2(t)=md;
end
for t=1:NN-1
if t<=2
formant(t)=formant1(t);
else
formant(t)=formant2(t-1)*0.25+formant2(t)*0.5+formant2(t+1)*0.25;
end
end
subplot(3,1,1);
plot(cepstrum);
title('倒谱');
xlabel('样点数');
ylabel('幅度')
axis([0,220,-0.5,0.5])
spectral=20*log10(abs(fft(frame2)));
subplot(3,1,2);
xj=(1:length(spectral)/2)*fs/length(spectral);
plot(xj,spectral(1:length(spectral)/2));
title('频谱');
xlabel('频率/Hz');
ylabel('幅度/dB')
axis([0,5500,-100,50])
subplot(3,1,3);
xi=(1:NN/2)*fs/NN;
plot(xi,formant(1:floor(NN/2)));
title('平滑对数幅度谱');
xlabel('频率/Hz');
ylabel('幅度/dB')
axis([0,5500,-80,0])
三.zip_语音实验
版权申诉
6 浏览量
2022-07-15
02:00:20
上传
评论
收藏 3.25MB ZIP 举报
钱亚锋
- 粉丝: 90
- 资源: 1万+
最新资源
- 2406011243520696.mp4
- sql语句及应用场景.zip
- 疯狂吃月饼游戏小程序前端源码
- 硬件工程师+电子类工程师岗位简历模板
- 知识领域: 人工智能 技术关键词: TensorFlow、Keras、深度学习、神经网络
- 知识领域: 自动化测试 技术关键词: pytest、unittest、自动化测试、测试框架
- 知识领域: 数据库管理 技术关键词: SQLAlchemy、数据库、ORM、SQL 内容关键词: 数据库连接、数据查询、数据操作
- 知识领域: 网络编程 技术关键词: socket、网络编程、异步IO、TCP/IP 内容关键词: 客户端、服务器、网络协议
- 知识领域: 自然语言处理 技术关键词: NLTK、spaCy、文本处理、语言模型
- ubuntu20.04安装教程.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈