资源简介
用matlab编写的语音信号处理程序。
我也是初学者,刚编的,拿过来和大家一起分享一下!大家共同进步!
代码片段和文件信息
%对语音信号采样分帧
clear
clc
X= wavread(‘s1‘);
%对信号进行预加重
x=X;
x4=filter([1-0.9375]1x);
figure(1)
subplot(211)plot(x)
title(‘原始语音信号‘);
xlabel(‘样本序列n‘);
ylabel(‘幅值‘);
subplot(212)plot(x4)
title(‘原始语音信号的预加重‘);
xlabel(‘样本序列n‘);
ylabel(‘幅值‘);
% 幅度归一化到[-1,1]
x=double(x);
x=x/max(abs(x));
% 常数设置
frameLen=240; % 帧长取30ms8kHz的采样率
frameInc=80; % 帧移取10ms1/3
amp1=3;
amp2=2;
zcr1=10;
zcr2=5;
maxsilence=3; % 3*10ms=30ms
minlen=15; % 15*10ms=150ms
status=0;
count=0;
silence=0;
% 短时过零率(矢量法)
tmp1=enframe(x(1:length(x)-1)frameLenframeInc);
tmp2=enframe(x(2:length(x))frameLenframeInc);
signs=(tmp1.*tmp2)< 0;
diffs=(tmp1-tmp2)> 0.02;
zcr=sum(signs.*diffs2);
figure(2)
subplot(211)
plot(zcr);
title(‘短时过零率‘);
ylabel(‘zcr‘)
%计算短时能量
amp=sum(abs(enframe(filter([1-0.9375]1x)frameLenframeInc))2);
inz=find(amp>1);
amm=amp(inz);
ll=min(amm);
figure(2)
subplot(212)
plot(amp);
title(‘短时能量‘);
ylabel(‘amp‘)
%调整能量门限
amp1=ll+(max(amp)-ll)/8;
amp2=ll+(max(amp)-ll)/16;
%开始端点检测
x1=0;
x2=0;
for n=1:length(zcr)
goto = 0;
switch status
case{01} % 0=静音,1=可能开始
if amp(n) > amp1 % 确信进入语音段
x1=max(n-count-11);
status=2;
silence=0;
count=count+1;
elseif amp(n) >amp2 | zcr(n) > zcr2 % 可能处于语音段
status=1;
count=count+1;
else % 静音状态
status=0;
count=0;
end
case 2 % 2=语音段
if amp(n) > amp2 | zc
- 上一篇:指纹识别的matlab代码
- 下一篇:项目进度管理project模板
相关资源
- 基于MATLAB的语音信号的滤波处理
- melp2.4k的编解码程序
- 基于matlab的一种语音加密程序
- 语音识别系统代码
- GMM模型,用MATlab编写的。可以用来训
- HMM算法的语音识别的matlab程序
- matlab在GUI下语音播放
- RLS语音信号去噪matlab代码
- 语音信号处理实验素材 wav语音文件
- 语音识别程序
- matlab语音消噪程序
- 基于MATLAB的语音信号基音周期检测的
- matlab自相关函数提取语音信号基频
- 语音编码Matlab代码及其论文
- 基于DTW语音识别matlab代码
- 小波变换进行语音增强的matlab代码
- 数字语音处理及matlab仿真配套代码完
- matlab语音信号特征值提取
- 基于matlab语音信号基音检测
- CELP语音编码
-
matlab 语音信号处理 enfr
ame.m - 基于MATLAB的语音信号处理课程设计
- 麦克风阵列语音增强源程序
- 基于Matlab的语音合成技术
- 基于 HMM算法的语音识别的matlab程序
- 谱减法语音增强Matlab
- 语音信号短时能量
- 语音变速变调matlab代码
- 自己编写的语音增强MATLAB代码
- 双门限法语音信号端点检测matlab可实
评论
共有 条评论