• 毕业论文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。

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

     

  • 相关阅读:
    python学习笔记 | 国内常用源镜像地址
    python学习笔记 | macOS Big Sur动态壁纸食用指南
    GitHub README.md文本编写指南
    FAT32、NTFS、exFAT有什么区别?
    python模块详解 | unittest(单元测试框架)(持续更新中)
    Linux学习笔记 | 常见错误之账户密码正确但是登录不进去系统
    数学建模学习笔记 | matlab基本命令及用法
    selenium自动化 | 借助百度AI开放平台识别验证码登录职教云
    JAVA集合框架
    JAVA集合框架
  • 原文地址:https://www.cnblogs.com/cheetahw/p/2512970.html
Copyright © 2020-2023  润新知