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。

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

     

  • 相关阅读:
    jQuery 语法
    HTML DOM Document 对象
    JavaScript
    JavaScript Cookies
    JavaScript 计时事件
    九度OJ 1352 和为S的两个数字
    九度0J 1374 所有员工年龄排序
    九度OJ 1373 整数中1出现的次数(从1到n整数中1出现的次数)
    九度OJ 1370 数组中出现次数超过一半的数字
    九度OJ 1361 翻转单词顺序
  • 原文地址:https://www.cnblogs.com/cheetahw/p/2512970.html
Copyright © 2011-2022 走看看