トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索   ヘルプ   最終更新のRSS

動的特徴量(デルタパラメータ)

Last-modified: 2015-08-29 (土) 08:29:32
Top / 動的特徴量(デルタパラメータ)

デルタ(メル)ケプストラム

デルタパラメータとは?

  • 音声認識の際、動的な特徴をあらわす指標として使われる。
    • 初出は Furui, 1986.*1
  • 意義
    • 中川, 2000.*2 より引用
      スペクトルの時間方向の動的変化の特徴は音声認識にとって重要なパラメータであり、これを回帰モデルでモデル化し、1次回帰係数(Δケプストラム)、2次回帰係数(ΔΔケプストラム)と呼ばれ広く用いられている(隣接スペクトルの差分もΔケプストラムと呼ばれており、同様に効果がある)
    • 和田ら, 2002.*3 より引用
      デルタケプストラムは、ケプストラムの時間変化の微分を差分ベクトルにより近似した動的特徴量である。(略) LPCケプストラムを取り除きデルタケプストラムのみを特徴量として用いることで耐雑音性が改善されると考えられる。しかしながらデルタケプストラムのみを特徴量とするには母音などの定常に近い音声の認識に不安を残す。
  • 計算方法
    • HTK の HCopy で求められるデルタパラメータは、MFCCの時間変化の回帰係数の値です*4
      • 回帰係数とは、メルケプストラム係数を目的変数 y、フレーム数(時間経過)を説明変数 x としたとき、回帰分析によって推定される関係式 y = ax + b の a の値( x に対する y の変化の傾き)です。
      • 回帰分析によって a を求める方法は、MATLAB Note/統計/回帰分析 を参照してください。
      • 回帰分析について、より詳しい情報は R Note/統計/回帰分析 にあります。
  • MATLAB でメルケプストラムデータを読み込みます。
    data = csvread('mfcc10.csv');
  • あるフレームの前後2フレームを加えた計5フレーム*5 に対して回帰係数を求めます。
    • 始端(0番目)のフレームでは、-1 番目、 -2 番目のフレームが 0 番目と同じであると考えて計算します(HCopy の仕様)。終端も同様に扱います。
      % 始端終端に2フレーム追加
      newdata = [ data(1,:) ; data(1,:) ; data(:,:) ; data(end,:) ; data(end, :) ];
    • MFCC-1 について、フレームごとに回帰係数を求めてみます。*6
      delta = [];
      for count = 3 : 1 : (length(newdata) - 2)
          %disp( newdata(count-2:count+2, 1) );
          %周囲 5 フレームの回帰係数を求める
          y = newdata(count-2:count+2, 1);
          x = [1 1 ; 1 2 ; 1 3 ; 1 4 ; 1 5];
          coefficient = polyfit(x, y, 1);  % 線形回帰
          delta = [ delta ; coefficient(1) ];
      end
      disp( delta );
  • 結果
      -0.6851
      -1.2122
      -1.4893
      -1.1270
      -0.5949
      -0.5687
      -0.5975
      -0.5635
       0.6535
       2.1154
       2.6034
       2.0400
       0.7457
      -0.1177
      -0.2742
      -0.1639
    • file0001_0001.txt の Del-1 と同じ値が出力されています。

デルタデルタパラメータ

  • 同様に、デルタメルケプストラムのデルタパラメータを求めてみます。
    • 上に続いて、以下を実行します。
      % 始端終端に2フレーム追加
      newdelta = [ delta(1,:) ; delta(1,:) ; delta(:,:) ; delta(end,:) ; delta(end, :) ];
      deltadelta = [];
      for count = 3 : 1 : (length(newdelta) - 2)
          y = newdelta(count-2:count+2, 1);
          x = [1 1 ; 1 2 ; 1 3 ; 1 4 ; 1 5];
          coefficient = regress(y, x);
          deltadelta = [ deltadelta ; coefficient(2) ];
      end
      disp( deltadelta );
    • 結果
        -0.2135
        -0.1688
         0.0266
         0.2181
         0.2342
         0.1124
         0.2502
         0.6619
         0.9081
         0.7157
         0.0109
        -0.6324
        -0.7913
        -0.5428
        -0.1865
         0.0018
      • file0001_0001.txt の Acc-1 と同じ値が出力されています。

計算プログラム

  • calcDelta.m
  • 使用例
    data = csvread('mfcc10.csv');        % データ読み込み
    delta = calcDelta( data, 2 );        % デルタパラメータ
    deltadelta = calcDelta( delta, 2 );  % デルタデルタパラメータ

応用

  • 母音のような定常的な音韻はメルケプストラムでよく表現できる。逆に子音や半母音のような動的な音韻はデルタメルケプストラムでよく表現できる。したがって、音声の定常性などを評価して、音韻によって特徴量の重み付けを変える手法が研究されている。
  • 時系列に対する回帰係数を求めるだけでなく、時間・周波数両方を考慮した動的特徴量も提案されている*7

*1 Furui, Speaker-independent isolated word recognition using dynamic features of speech spectrum, 1986.
*2 中川聖一, 音声認識研究の動向, 2000.
*3 和田直哉, 宮永喜一, 吉田則信, 吉澤真吾, 音声認識システムにおけるロバストな音声特徴抽出に関する一考察, 2002. より引用
*4 中村匡伸, 話し言葉音声の音響的・言語的特徴に関する研究, 2009. p.6 および HTK Book, "5.9 Delta, Acceleration and Third Differential Cofficients," p.79 を参考しました。
*5 中村匡伸, 話し言葉音声の音響的・言語的特徴に関する研究, 2009. によれば、「回帰係数を計算する範囲は20ms程度が一般的」とあります。
*6 回帰曲線は toolbox不要の polyfit 関数に差し替えました。法政大伊藤先生にご指摘いただきました。ありがとうございます!!
*7 相川清明, 河原英紀, 東倉洋一, 順向マスキングの時間周波数特性を模擬した動的ケプストラムを用いた音韻認識, 1993.

添付ファイル: file0001_0001.txt 2479件 [詳細] filemfcc10.csv 2530件 [詳細]