zoukankan      html  css  js  c++  java
  • 毕业论文B.1 dtw和cdhmm代码学习

    代码结构

    已知函数或代码段详解

    testdtw.m是测试脚本。

     1 disp('正在计算参考模板的参数...')
     2 for i=1:10
     3     fname = sprintf('..\\ch6\\%da.wav',i-1);
     4     x = wavread(fname);
     5     [x1 x2] = vad(x);
     6     m = mfcc(x);
     7     m = m(x1-2:x2-2,:);
     8     ref(i).mfcc = m;
     9 end
    10 
    11 disp('正在计算测试模板的参数...')
    12 for i=1:10
    13     fname = sprintf('..\\ch6\\%db.wav',i-1);
    14     x = wavread(fname);
    15     [x1 x2] = vad(x);
    16     m = mfcc(x);
    17     m = m(x1-2:x2-2,:);
    18     test(i).mfcc = m;
    19 end
    20 
    21 disp('正在进行模板匹配...')
    22 dist = zeros(10,10);
    23 for i=1:10
    24 for j=1:10
    25     dist(i,j) = dtw(test(i).mfcc, ref(j).mfcc);
    26 end
    27 end
    28 
    29 disp('正在计算匹配结果...')
    30 for i=1:10
    31     [d,j] = min(dist(i,:));
    32     fprintf('测试模板 %d 的识别结果为:%d\n', i, j);
    33 end
    1. 使用同样的方法计算参考模板和测试模板的MFCC系数。
      其中经过读入输入数据、计算MFCC、端点检测、截取需要帧的MFCC系数。
    2. 利用dtw计算相异程度。
    3. 比较相异程度,最低的为匹配值。
    • VAD

    vad.m,端点检测。输入语音信号列向量,输出[x1 x2],x1开始点,x2结束点。

    • MFCC

    mfcc.m,Mel频率倒谱系数的算法里面的一行代码是

    bank=melbankm(24,256,8000,0,0.5,'m');

    里面的24即计算24阶Mel频率倒谱系数。该函数输入整段语音列向量,即wavread读出的向量。输出为矩阵,每行代表一个帧计算得来的24维特征。在进行MFCC计算时一般需要检测端点。

    • DTW和DTW2

    dtw/dtw.m和dtw/dtw2.m,这两个是动态时间规整算法,输入两个列数相同矩阵。矩阵每一行表示语音信号的每一个帧,一行中的每一个元素表示改帧通过特征提取而得来的一个值,比如24阶MFCC系数有24个特征值,那么一行就是24个元素。每一个帧的点数与这里的长度无关,因为这一步的输入是从特征提取函数而来比如MFCC。

    输入两个比较矩阵,每行为一个帧的特征。输出为一个值,即匹配程度。

     

  • 相关阅读:
    grunt in webstorm
    10+ Best Responsive HTML5 AngularJS Templates
    响应式布局
    responsive grid
    responsive layout
    js event bubble and capturing
    Understanding Service Types
    To add private variable to this Javascript literal object
    Centering HTML elements larger than their parents
    java5 新特性
  • 原文地址:https://www.cnblogs.com/cheetahw/p/2512970.html
Copyright © 2011-2022 走看看