资源简介
语音信号分析与处理及其MATLAB实现LPCMFCCEDP-edp.rar
语音信号分析与处理及其MATLAB实现
Linear Predictive Coding
EDP
MFCC
运行lpc.m就可以:
lpc.jpg
edp.m运行结果
edp.jpg
mfcc.m运行结果:
mfcc.jpg
语音信号分析与处理及其MATLAB实现
Linear Predictive Coding
EDP
MFCC
运行lpc.m就可以:
lpc.jpg
edp.m运行结果
edp.jpg
mfcc.m运行结果:
mfcc.jpg
代码片段和文件信息
close all
clear
clc
web -browser http://www.ilovematlab.cn/thread-12335-1-1.html
[x]=wavread(‘speech.wav‘);
%幅度归一化到[-11]
x = double(x);
x = x / max(abs(x));
%常数设置
frameLen = 240;
frameInc = 80;
amp1 = 10;
amp2 = 2;
zcr1 = 10;
zcr2 = 5;
maxsilence = 10; % 10*10ms = 30ms
minlen = 20; % 15*10ms = 150ms
status = 0;
count = 0;
silence = 0;
%计算过零率
tmp1 = enframe(x(1:length(x)-1) frameLen frameInc);
tmp2 = enframe(x(2: length(x)) frameLen frameInc);
signs = (tmp1.*tmp2)<0;
diffs = (tmp1 -tmp2)>0.02;
zcr = sum(signs.*diffs 2)
%计算短时能量
amp = sum(abs(enframe(filter([1 -0.9375] 1 x) frameLen frameInc)) 2);
%调整能量门限
amp1 = min(amp1 max(amp)/4);
amp2 = min(amp2 max(amp)/8);
%开始端点检测
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 | ... % 保持在语音段
zcr(n) > zcr2
count = count + 1;
else % 语音将结束
silence = silence+1;
if silence < maxsilence % 静音还不够长,尚未结束
count = count + 1;
elseif count < minlen % 语音长度太短,认为是噪声
status = 0;
silence = 0;
count = 0;
else % 语音结束
status = 3;
end
end
case 3
break;
end
end
count = count-silence/2
x2 = x1 + count -1
subplot(311)
plot(x)
axis([1 length(x) -1 1])
ylabel(‘Speech‘);
title(‘语音信号检测结果‘)
line([x1*frameInc x1*frameInc] [-1 1] ‘Color‘ ‘red‘);
line([x2*frameInc x2*frameInc] [-1 1] ‘Color‘ ‘red‘);
subplot(312)
plot(amp);
axis([1 length(amp) 0 max(amp)])
ylabel(‘Energy‘);
title(‘短时能量‘)
line([x1 x1] [min(amp)max(amp)] ‘Color‘ ‘red‘);
line([x2 x2] [min(amp)max(amp)] ‘Color‘ ‘red‘);
subplot(313)
plot(zcr);
axis([1 length(zcr) 0 max(zcr)])
ylabel(‘ZCR‘);
title(‘过零率‘)
line([x1 x1] [min(zcr)max(zcr)] ‘Color‘ ‘red‘);
line([x2 x2] [min(zcr)max(zcr)] ‘Color‘ ‘red‘);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2146 2008-06-30 16:23 edp\edp.m
文件 2147 2006-06-22 19:07 edp\enfr
文件 122 2008-05-14 18:20 edp\Matlab中文论坛--助努力的人完成毕业设计.url
文件 620046 1998-04-10 02:34 edp\speech.wav
文件 3434 2008-05-15 08:26 edp\使用帮助:新手必看.htm
目录 0 2008-06-30 16:24 edp
----------- --------- ---------- ----- ----
627895 6
相关资源
- 卡尔曼定位程序
- 基于VC、MATLAB的汽车制动性能仿真
- MATLAB通信仿真及应用详解附超星阅读
- filtfilt C语言实现,可直接运行验证
- 台湾林智仁开发的libsvm-3.0.1
- Matlab与C++混合程序设计第三版
- 粒子群算法及其代码实现
- 九轴姿态解算matlab源代码 两种方法代
- 经纬度坐标转换为平面坐标的matlab实
- 数字图像处理与机器视觉——Visual
- 利用FFT计算频谱图
- 用matlab编的基于DTW和MFC算法的语音识
-
从Matlab_Simuli
nk模型到代码实现 - MUSIC算法C语言+MATLAB
- MATLAB科学计算及分析唐培培源代码
- 灰色预测模型资料和程序.rar
- matcom4.5绿色破解版
- matlab下的基于高斯混合模型的说话人
- Matlab中峰值计算函数findpeaks()的c
- 图像去雾代码集合
- 电容恒流充电模糊控制matlab仿真与实
- 基于mfcc的说话人语音识别matlb
- 图像识别算法,相关matlab编程
- Miguel的二维解包裹算法Matlab程序及C程
- 点云数据txt格式
- MATLAB Demystified中文版.最好的matlab自学
- 基于MFCC的GMM的语音识别
- Matlab6.5 与 VC6 利用动态链接库实现混
- 有限差分模拟电磁波场
- MATLAB图论工具箱,matlabBGL
评论
共有 条评论