久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2709|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

利用MATLAB識(shí)別1-9語(yǔ)音的源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
自己做的,識(shí)別1-9的語(yǔ)音。


全部資料51hei下載地址:
MATLAB語(yǔ)音識(shí)別1-9.zip (397.37 KB, 下載次數(shù): 31)


源碼:
  1. function trimmedX = myVAD(x)

  2. Ini = 0.1;          %Initial silence duration in seconds
  3. Ts = 0.01;          %Frame width in seconds
  4. Tsh = 0.005;        %Frame shift in seconds
  5. Fs = 16000;         %Sampling Frequency
  6. counter1 = 0;   
  7. counter2 = 0;
  8. counter3 = 0;
  9. counter4 = 0;
  10. ZCRCountf = 0;      %Stores forward count of crossing rate > IZCT
  11. ZCRCountb = 0;      %As above, for backward count
  12. ZTh = 40;           %Zero crossing comparison rate for threshold
  13. w_sam = fix(Ts*Fs);                   %No of Samples/window
  14. o_sam = fix(Tsh*Fs);                  %No of samples/overlap
  15. lengthX = length(x);
  16. segs = fix((lengthX-w_sam)/o_sam)+1;  %Number of segments in speech signal
  17. sil = fix((Ini-Ts)/Tsh)+1;            %Number of segments in silent period
  18. win = hamming(w_sam);

  19. Limit = o_sam*(segs-1)+1;             %Start index of last segment

  20. FrmIndex = 1:o_sam:Limit;             %Vector containing starting index
  21.                                       %for each segment
  22. ZCR_Vector = zeros(1,segs);           %Vector to hold zero crossing rate
  23.                                       %for all segments
  24.                                     
  25. %Below code computes and returns zero crossing rates for all segments in
  26. %speech sample  
  27. for t = 1:segs
  28.     ZCRCounter = 0;
  29.     nextIndex = (t-1)*o_sam+1;
  30.     for r = nextIndex+1:(nextIndex+w_sam-1)
  31.         if (x(r) >= 0) && (x(r-1) >= 0)
  32.          
  33.         elseif (x(r) >= 0) && (x(r-1) < 0)
  34.          ZCRCounter = ZCRCounter + 1;
  35.         elseif (x(r) < 0) && (x(r-1) < 0)
  36.          
  37.         elseif (x(r) < 0) && (x(r-1) >= 0)
  38.          ZCRCounter = ZCRCounter + 1;
  39.         end
  40.     end
  41.     ZCR_Vector(t) = ZCRCounter;
  42. end

  43. %Below code computes and returns frame energy for all segments in speech
  44. %sample
  45. Erg_Vector = zeros(1,segs);
  46. for u = 1:segs
  47.     nextIndex = (u-1)*o_sam+1;
  48.     Energy = x(nextIndex:nextIndex+w_sam-1).*win;
  49.     Erg_Vector(u) = sum(abs(Energy));
  50. end

  51. IMN = mean(Erg_Vector(1:sil));  %Mean silence energy (noise energy)
  52. IMX = max(Erg_Vector);          %Maximum energy for entire utterance
  53. I1 = 0.03 * (IMX-IMN) + IMN;    %I1 & I2 are Initial thresholds
  54. I2 = 4 * IMN;
  55. ITL = min(I1,I2);               %Lower energy threshold
  56. ITU = 5 * ITL;                  %Upper energy threshold
  57. IZC = mean(ZCR_Vector(1:sil));  %mean zero crossing rate for silence region
  58. stdev = std(ZCR_Vector(1:sil)); %standard deviation of crossing rate for
  59.                                 %silence region
  60. IZCT = min(ZTh,IZC+2*stdev);    %Zero crossing rate threshold
  61. indexi = zeros(1,lengthX);      %Four single-row vectors are created
  62. indexj = indexi;                %in these lines to facilitate computation below
  63. indexk = indexi;
  64. indexl = indexi;

  65. %Search forward for frame with energy greater than ITU
  66. for i = 1:length(Erg_Vector)
  67.     if (Erg_Vector(i) > ITU)
  68.         counter1 = counter1 + 1;
  69.         indexi(counter1) = i;
  70.     end
  71. end
  72. ITUs = indexi(1);

  73. %Search further forward for frame with energy greater than ITL
  74. for j = ITUs:-1:1
  75.     if (Erg_Vector(j) < ITL)
  76.         counter2 = counter2 + 1;
  77.         indexj(counter2) = j;
  78.     end
  79. end
  80. start = indexj(1)+1;

  81. Erg_Vectorf = fliplr(Erg_Vector);%Flips round the energy vector
  82. %Search forward for frame with energy greater than ITU
  83. %This is equivalent to searching backward from last sample for energy > ITU
  84. for k = 1:length(Erg_Vectorf)
  85.     if (Erg_Vectorf(k) > ITU)
  86.         counter3 = counter3 + 1;
  87.         indexk(counter3) = k;
  88.     end
  89. end
  90. ITUf = indexk(1);

  91. %Search further forward for frame with energy greater than ITL
  92. for l = ITUf:-1:1
  93.     if (Erg_Vectorf(l) < ITL)
  94.         counter4 = counter4 + 1;
  95.         indexl(counter4) = l;
  96.     end
  97. end

  98. finish = length(Erg_Vector)-indexl(1)+1;%Tentative finish index
  99.    
  100. %Search back from start index for crossing rates higher than IZCT
  101.    
  102. BackSearch = min(start,25);
  103. for m = start:-1:start-BackSearch+1
  104.     rate = ZCR_Vector(m);
  105.     if rate > IZCT
  106.         ZCRCountb = ZCRCountb + 1;
  107.         realstart = m;
  108.     end
  109. end
  110. if ZCRCountb > 3
  111.     start = realstart;          %If IZCT is exceeded in more than 3 frames
  112.                                 %set start to last index where IZCT is exceeded
  113. end

  114. %Search forward from finish index for crossing rates higher than IZCT
  115. FwdSearch = min(length(Erg_Vector)-finish,25);
  116. for n = finish+1:finish+FwdSearch
  117.     rate = ZCR_Vector(n);
  118.     if rate > IZCT
  119.         ZCRCountf = ZCRCountf + 1;
  120.         realfinish = n;
  121.     end
  122. end
  123. if ZCRCountf > 3
  124.     finish = realfinish;        %If IZCT is exceeded in more than 3 frames
  125.                                 %set finish to last index where IZCT is
  126.                                 %exceeded
  127. end

  128. x_start = FrmIndex(start);      %actual sample index for frame 'start'
  129. x_finish = FrmIndex(finish-1);  %actual sample index for frame 'finish'
  130. trimmedX = x(x_start:x_finish); %Trim speech sample by start and finish
  131.                                 %indices
復(fù)制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:432988 發(fā)表于 2018-11-25 20:13 | 只看該作者
為啥我識(shí)別不出來(lái)....
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 自拍视频网站 | 国产免费av在线 | 欧美一级片中文字幕 | 精品国产乱码久久久久久影片 | 中文字幕高清视频 | 中文字幕av一区 | 日日夜夜精品 | 二区三区在线观看 | 天天拍天天操 | 中日字幕大片在线播放 | 久久久久香蕉视频 | 久久国产精品一区二区 | 91精品久久久久久久久久 | 亚洲人成人一区二区在线观看 | 99热热精品| 亚洲一区二区三区久久久 | 欧美日韩1区 | 黄色网址免费在线观看 | 国产在线观看av | 在线视频国产一区 | 日本黄色影片在线观看 | 国产一区二区在线视频 | 国产精品成人一区二区三区 | 97高清国语自产拍 | 99久久精品免费视频 | 亚洲三区在线观看 | 免费特黄视频 | 可以在线看的黄色网址 | 青青草网站在线观看 | 国产欧美精品一区二区 | 国产精品久久久久久久午夜片 | 亚洲在线观看视频 | 欧美精品综合在线 | 日本免费在线 | 成人精品视频在线 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲欧美日韩成人在线 | 成人精品视频在线 | 精品国产乱码久久久久久闺蜜 | 正在播放一区二区 | 一区二区日韩精品 |