资源简介
用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扩展编程》代码
- 基于BP神经网络的语音情感识别系统
- 基于倒谱图判断浊音的基音周期MATL
- LMS语音信号去噪matlab代码
- 语音信号的采集与处理课程设计
- 语音共振峰检测的MATLAB程序
- 格型法线性预测分析预测系数和功率
- 语音增强—matlab
- MATLAB车牌[GUI,语音播报,论文,详细
- 基于MATLAB的语音识别GMM
- 一种基于Matlab的语音信号采集与分析
- 基于MATLAB的语音识别简明代码完整版
- MATLAB实现语音信号的仿真以及软件界
- 语音通信系统的matlab仿真
- 语音处理,改变声调、语速等,matl
- 基于hmm的数字语音识别_matlab版
- MATLAB在语音信号分析与合成中的应用
- MATLAB在语音信号分析与合成中的应用
- 语音信号子带编码matlab程序subband_co
- 基于MATLAB的语音共振峰的估计
- 语音识别算法matlab 源代码!完整!可
- 《Matlab语音信号分析与合成》第2版程
- 基于matlab的语音加密器的设计
- matlab语音合成详细版
- 数字信号处理课程设计语音信号的采
- bp神经网络 matlab代码 识别0到10的数字
- MATLAB语音信号分析与合成代码
- 盲信号的语音分离MATLAB程序
- 基于神经网络的语音识别
- matlab语音识别含界面
评论
共有 条评论