a2lgc.m
上传用户:shjsjz
上传日期:2022-07-09
资源大小:3k
文件大小:1k
源码类别:

语音合成与识别

开发平台:

Matlab

  1. function [sn,lgc]=a2lgc(a,lv)
  2. %得到区块,每帧10ms,模糊长度超过l*10ms,总长超过ll*10ms,能量超过lv的区块
  3. %sn列表区块[起始偏移量,帧数,最大值],lst帧列表,lgc列表向量
  4. s=10;       %ms
  5. l=3;        %模糊长度
  6. ll=8;       %总长度
  7. %lv=0.05;    %能量超过lv
  8. sn=[];      %区块列表
  9. for l=l:-1:0
  10.     
  11. lb=l+l+1;
  12. lgc=a>lv;
  13. lgc=d_lo0(lgc,lb);
  14. lgc=lgc>0.5;
  15. st=0;
  16. for i=1:size(a,1)
  17.     if lgc(i)>0 & st==0
  18.         st=i;
  19.     end
  20.     if lgc(i)==0 & st>0
  21.         k=i-st;
  22.         mx=max(a(st:i-1));
  23.         sn=[sn;st-1,k,mx];
  24.         st=0;
  25.     end
  26.     if lgc(i)>0 & i==size(a,1) & st>0
  27.         k=i-st+1;
  28.         mx=max(a(st:i));
  29.         sn=[sn;st-1,k,mx];
  30.         st=0;
  31.     end
  32. end
  33. if ~isempty(sn)
  34.     break;
  35. end
  36. end
  37. [p,q]=sort(sn(:,3));
  38. sn=sn([q(end:-1:1)],:);