您现在的位置:首页 >> 技术文章 >> MATLAB技术 >> 内容

MATLAB代做|FPGA代做- 基于倒谱,分形,和谱熵的语音端点检测程序

时间:2020-10-13 20:43:56 点击:

  核心提示:MATLAB代做|FPGA代做- 基于倒谱,分形,和谱熵的语音端点检测程序...
clear all; 
clc; 
close all 
%��������Ӧ�Ӵ�Ƶ���ص��Ƚ��������˵��� 
N=512;%FFT�任�ĵ��� 
Winsiz=480;%֡�� 
Shift=240;%֡�� 
[x,Fs]=wavread('changdu.wav'); 
% len=length(x1); 
% nois=0.003*rand(len,1); 
% x=x1+nois; 
% x=x./max(x); 
% ���ź���Ԥ���ش��� 
x=filter([1 -0.9375], 1, x); 
 
nseg=floor((length(x)-Winsiz)/Shift)+1; 
A=zeros(Winsiz/2+1,nseg); 
 
%����ѭ����x�źŵļӴ��������������Ƶ������ 
for i=1:nseg 
    n1=(i-1)*Shift+1;n2=n1+(Winsiz-1); 
    xx=x(n1:n2);xx=xx.*hamming(Winsiz); 
    y=fft(xx,N); 
    y=y(1:Winsiz/2+1); 
    y=y.*conj(y); 
    A(:,i)=y; 
end 
%���������� 
Esum=zeros(1,nseg); 
for i=1:nseg 
    for j=1:Winsiz/2 
        Esum(i)=Esum(i)+A(j,i); 
    end 
end  
%�����Ǽ���ÿһ֡���׵����� 
for i=1:nseg 
    for n=1:Winsiz/2 
        E(n,i)=A(n,i); 
    end 
end    
%�����Ǽ���ÿ֡��ÿ��������ĸ��ʷֲ� 
for i=1:nseg 
    for n=1:Winsiz/2 
      P(n,i)=E(n,i)/Esum(i);   
    end 
end 
 
%�����Ǽ���ÿһ֡������ֵ 
H=zeros(1,nseg); 
for i=1:nseg 
    for n=1:Winsiz/2 
        H(i)=H(i)+P(n,i)*log(P(n,i)+eps); 
    end 
end    
H=-H; 
%_________________________________________________ 
 
T1=2; 
T2=1.8; 
maxsilence=2; 
minlen=20; 
status=0; 
count=0; 
silence=0; 
%��ʼ�˵��� 
x1 = 0;  
x2 = 0; 
xn=1; 
for n=1:length(H)             %xn��¼�����������ֵĶ����������֣�   
   switch status 
   case {0,1}                   % 0 = ����, 1 = ���ܿ�ʼ 
      if H(n) > T1          % ȷ�Ž��������� 
         x1(xn) = max(n-count(xn)-1,1); 
         status  = 2; 
         %silence(xn) = 0; 
         count(xn)   = count(xn) + 1; 
      elseif H(n) > T2  % ���ܴ��������� 
         status = 1; 
         count(xn)  = count(xn) + 1; 
      else                       % ����״̬ 
         status  = 0; 
         count(xn)= 0; 
         silence(xn)=0; 
         x1(xn)=0; 
         x2(xn)=0; 
      end 
   case 2,                       % 2 = ������ 
      if H(n) > T2     % ������������ 
         count(xn) = count(xn) + 1; 
      else                       % ���������� 
         silence(xn)  = silence(xn) +1; 
         if silence(xn) < maxsilence % ������������������� 
            count(xn)  = count(xn) + 1; 
         elseif count(xn) < minlen   % ��������̫�̣���Ϊ������ 
            status  = 0; 
            silence(xn)  = 0;          
         else                    % �������� 
            status  = 3; 
         end 
      end 
   case 3,        
        status  = 0;           
        xn=xn+1;   
        count(xn)= 0; 
        silence(xn)=0; 
        x1(xn)=0; 
        x2(xn)=0; 
   end 
end    
 
%--------------���»�ͼ���� 
FrameInc=Shift; 
count = count-silence./2; 
x2 = x1 + count -1; 
subplot(311); 
plot(x); 
axis([1 length(x) -0.1 0.1]); 
ylabel('Speech'); 
for(xn=1:length(x1)) 
line([x1(xn)*FrameInc x1(xn)*FrameInc],[-1 1],'Color','red'); 
line([x2(xn)*FrameInc x2(xn)*FrameInc],[-1 1],'Color','green'); 
end; 
 
subplot(312); 
plot(H); 
axis([1 length(H) min(H) max(H)]); 
ylabel('PuShang'); 
for(xn=1:length(x1)) 
line([x1(xn) x1(xn)],[min(H),max(H)],'Color','red'); 
line([x2(xn) x2(xn)],[min(H),max(H)],'Color','green'); 
end; 
 
 

联系:highspeedlogic

QQ :1224848052

微信:HuangL1121

邮箱:1224848052@qq.com

网站:http://www.mat7lab.com/

网站:http://www.hslogic.com/

微信扫一扫:

作者:语音端点检测 来源:语音端点检测
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
  • matlab代做|matlab专业代做|matlab淘宝代做|python人工智能代做|FPGA项目合作(www.hslogic.com) © 2020 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment