资源简介
matlab实现音频端点检测,需要有enframe.m文件
代码片段和文件信息
% 语音信号的端点检测matlab实现:
[xfsnbits]=wavread(‘E:\a\sun00.wav‘);%首先打开经录好的信号,一段口哨声。
x = x / max(abs(x));%幅度归一化到[-11]
%参数设置
frameLen = 256; %帧长,即每帧采样点
inc = 90; %未重叠部分,、帧移对于的点数
amp1 = 10; %短时能量阈值
amp2 = 2; %即设定能量的两个阈值。
zcr1 = 10; %过零率阈值
zcr2 = 5; %过零率的两个阈值,感觉第一个没有用到。
%minsilence = 5; %用无声的长度来判断语音是否结束
minlen = 10; %判断是语音的最小长度
status = 0; %记录语音段的状态
count = 0; %语音序列的长度
%silence = 0; %无声的长度
%计算过零率
tmp1 = enframe(x(1:end-1) frameLeninc);%数组x经过处理后得到二维数组y
tmp2 = enframe(x(2:end) frameLeninc);
signs = (tmp1.*tmp2)<0;
diffs = (tmp1 - tmp2)>0.02;
zcr = sum(signs.*diffs2);%表示矩阵signs.*diffs的横向相加,求每行的和,结果是列向量。
%sum(x)为竖向相加,求每列的和,结果为横向量。
%信号各帧的过零率值,放到zcr矩阵中。
%计算短时能量
%amp = sum((abs(enframe(filter([1 -0.9375] 1 x) frameLen inc))).^2 2);%不知道这里的filter是干啥的?但的出来的是各贞的能量了。
amp = sum((abs(enframe( x frameLen inc))).^2 2);%通过把filter给去掉,发现结果差不多,所以个人感觉没必要加一个滤波器,上边出现的enframe函数放到后边分析。这里知道是求出x各帧的能量值就行。
%调整能量门限
amp1 = min(amp1 max(amp)/4);
amp2 = min(amp2 max(amp)/8);%min函数是求最小值的,没必要说了。
for n=1:length(zcr)%Length(zcr)得到的是整个信号的帧数。
goto = 0;
switch status
case {01}
if amp(n) > amp1 % 确信进入语音段
x1 = max(n-count1); % 记录语音段的起始点 %count为在这之前的>amp2 or >zcr2,的帧的个数
%x1=n;
- 上一篇:matlab电机仿真同步发电机
- 下一篇:matlb 慢特征分析
相关资源
- Pattern Recognition and Machine Learning(高清
- MATLAB 编程 第二版 Stephen J. Chapman 著
- 均值滤波和FFT频谱分析Matlab代码
- 《MATLAB扩展编程》代码
- HDB3码、AMI码的MATLAB实现
- 3点GPS定位MATLAB仿真
- MATLAB数字信号处理85个实用案例精讲入
- matlab从入门到精通pdf94795
- 欧拉放大论文及matlab代码
- 跳一跳辅助_matlab版本
- 全面详解LTE MATLAB建模、仿真与实现
- MIMO-OFDM无线通信技术及MATLAB实现_孙锴
- MATLAB Programming for Engineers 4th - Chapman
- matlab 各种谱分析对比
- 分数阶chen混沌matlab程序
- 基于粒子群算法的非合作博弈的matl
- MATLAB车流仿真 包括跟驰、延误
- matlab空间桁架计算程序
- 基于MATLAB的图像特征点匹配和筛选
- DMA-TVP-FAVAR
- GPS信号的码捕获matlab代码.7z
- 一维光子晶体MATLAB仿真代码吸收率折
- newmark法源程序
- 传统关联成像、计算鬼成像matlab
- pri传统分选算法
- 摆动滚子推杆盘形凸轮设计
- 医学图像重建作业matlab源码
- Matlab实现混沌系统的控制
- 检测疲劳驾驶
- Matlab锁相环仿真-Phase Locked Loop.rar
评论
共有 条评论