资源简介
语音信号时频分析,包括语谱图,过零率,自编的自相关,用了三种方法(短时能量和过零率、谱熵法、Teager算子)进行端点检测,代码完整且测试通过
代码片段和文件信息
clc
clear
[y1Fs]=wavread(‘clearspeech.wav‘);
[yFs]=wavread(‘clearspeech.wav‘);
%[yFs]=wavread(‘noisyspeech.wav‘);
l=length(y);
subplot(211);
plot(linspace(0(l-1)/Fsl)y1);
xlabel(‘time(s)‘);
title(‘The original signal‘);
hold on;
%find the endpoints of the original signal manully
plot([0.320.32][-11]‘r‘);
hold on;
plot([1.151.15][-11]‘g‘);
hold on;
plot([1.31.3][-11]‘r‘);
hold on;
plot([22][-11]‘g‘);
hold on;
plot([2.082.08][-11]‘r‘);
hold on;
plot([2.62.6][-11]‘g‘);
hold on;
plot([2.82.8][-11]‘r‘);
hold on;
plot([3.423.42][-11]‘g‘);
hold off;
tw=input(‘Please input the length of window(s):‘);
wl=floor(tw*Fs);
tm=input(‘Please input the length of moving step(s):‘);
ml=floor(tm*Fs);
%calculate the short time characteristics
[energymagnitudezerocro]=st_ener_mag_zc(yFswlml);
le=length(energy);
lz=length(zerocro);
%the threshold of energy
noise=energy(1:floor((0.3*Fs+1)/ml));
thresh_e=0.3;
%the threshold of zerocrossing rate
thresh_z=32;
%put the final signal in vector ys
ys=zeros(1l);
%preallocate
tp=zeros(1le);
j=1;
m=0;
for i=1:le
%if energy is not less than thresh_ewe decide this frame is speechand
%most likely voiced speech
if energy(i)>thresh_e
ys((i-1)*ml+1:(i-1)*ml+wl)=y((i-1)*ml+1:(i-1)*ml+wl);
%if the former frame is a silence segment(m==0)then the index of
%this frame is stored as the starting point of a speech segment
if m==0
tp(j)=i;
j=j+1;
m=1;
end
%if the zerocrossing rate is not less than thresh_zthis frame is most
%likely unvoiced speech
elseif zerocro(i)>thresh_z
ys((i-1)*ml+1:(i-1)*ml+wl)=y((i-1)*ml+1:(i-1)*ml+wl);
if m==0
tp(j)=i;
j=j+1;
m=1;
end
else
%a silence frame is found
if m==1
tp(j)=i;
j=j+1;
m=0;
end
end
end
wavwrite(ysFs[‘edp_double_‘num2str(thresh_e)‘_‘num2str(thresh_z)‘.wav‘]);
subplot(212);
plot(linspace(0(l-1)/Fsl)ys);
title(‘The result of endpoint detection using short time energy and zerocrossing‘);
xlabel(‘time(s)‘);
% hold on;
% %mark the endpoints of the signal after detection
% %note that the number of none-zero elements in vector tp is j-1not j
% for i=1:2:j-2
% plot([(tp(i)-1)*ml/Fs(tp(i)-1)*ml/Fs][-11]‘r‘);
% hold on;
% plot([(tp(i+1)-1)*ml/Fs(tp(i+1)-1)*ml/Fs][-11]‘g‘);
% hold on;
% end
% hold off;
%
%
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-02-18 18:56 project1\
文件 1828 2013-04-04 16:10 project1\Unti
文件 1834 2013-04-08 08:54 project1\Unti
文件 330824 2002-06-25 12:47 project1\clearspeech.wav
文件 330824 2013-04-08 09:32 project1\edp_double_0.3_32.wav
文件 330824 2013-04-08 08:51 project1\edp_double_18_49.wav
文件 330824 2013-04-04 19:55 project1\edp_double_18_49_noisy.wav
文件 330824 2013-04-08 09:02 project1\edp_entropy_16_3.5.wav
文件 330824 2013-04-08 08:58 project1\edp_entropy_16_3.wav
文件 330824 2013-04-04 19:46 project1\edp_entropy_20_3.6.wav
文件 330824 2013-04-08 09:03 project1\edp_entropy_64_4.6.wav
文件 330824 2013-04-08 09:11 project1\edp_teager_0.004.wav
文件 2025132 2013-04-30 09:08 project1\eg_f1.wav
文件 2600 2013-04-08 08:42 project1\epd_doublethresh.asv
文件 2604 2013-04-08 09:32 project1\epd_doublethresh.m
文件 3388 2013-04-08 08:57 project1\epd_spec_entropy.asv
文件 3388 2013-04-08 09:03 project1\epd_spec_entropy.m
文件 2616 2013-04-08 09:07 project1\epd_teager.asv
文件 2615 2013-04-08 09:10 project1\epd_teager.m
文件 1835 2013-04-14 19:34 project1\find_thresh_ez.asv
文件 1839 2013-04-14 20:04 project1\find_thresh_ez.m
文件 3525 2013-04-02 08:52 project1\my_spectrogram.asv
文件 3504 2013-04-02 08:55 project1\my_spectrogram.m
文件 330824 2002-06-25 12:47 project1\noisyspeech.wav
文件 1409 2013-03-31 15:38 project1\project1_1.asv
文件 1402 2013-04-30 09:26 project1\project1_1.m
文件 422 2013-03-25 16:51 project1\project1_2.asv
文件 421 2013-04-08 20:36 project1\project1_2.m
文件 2193 2013-04-03 21:40 project1\project1_3.asv
文件 2183 2013-04-13 23:30 project1\project1_3.m
文件 598 2013-05-05 16:43 project1\revised_autocor.asv
............此处省略3个文件信息
- 上一篇:DATCOM弹道计算工具
- 下一篇:风电场建模与仿真
相关资源
- 胡广书的现代信号处理Word版以及Mat
- 线性调频信号短时傅里叶时频分析
- 短时傅里叶变换matlab程序126786
- 语音处理_短时能量 _短时幅度_过零率
- 短时傅里叶变换Matlab程序
- 短时傅里叶变换,画出时间频率图L
- 基于小波神经网络的时间序列预测的
- 能量算子解调程序
- 小波神经网络的时间序列预测-短时交
- 短时傅里叶变换的matlab实现
- 短时傅立叶
- matlab仿真 短时谱 语谱图 倒谱复倒谱
- stft短时傅里叶变换函数
- 短时傅立叶变换 Wigner-Ville分布 小波变
- 计算短时过零率MATLAB
- 频谱感知-能量检测法代码
- 基于小波神经网络的短时交通流量预
- 高斯窗的短时傅里叶变换变换程序
- 语音信号短时能量
- 提取语音特征短时能量,平均幅度、
- 短时傅里叶变换的MATLAB代码
- matlab PROPACK函数库 包含短时傅里叶变
- 短时傅里叶变换STFT
- 语音信号时域波形\\短时幅值和短时过
- STOI 短时客观可懂度MATLAB代码
- Stft短时傅里叶变换matlab实现
- 能量算子解调matlab程序
- 短时傅里叶和魏格纳变换的matlab函数
- STFT 短时傅里叶变换的一些简单的演示
- Teager 自编的Teager能量算子程序
评论
共有 条评论