7.2K Views
November 08, 23
スライド概要
Pythonで学ぶ音声認識の輪読会第3回の発表スライドです。
2023年10月19日(木) 18:30~
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
Pythonで学ぶ音声認識 ケプストラム特徴量 京都大学工学部電気電子工学科4回生 三宅大貴 0
3.6 メル周波数ケプストラム特徴量 1
ケプストラムのモチベーション そもそも人間はどう喋っているか? ➀肺 空気を送り出す 声道 ➁声帯 空気を振動させる 声帯 ③声道 口の形や舌で声を作る 2
ケプストラムのモチベーション 音声処理的に言うと, 声道 声帯 ➁声帯 特定の周波数成分(複数)を持つ信号を 生成する (声の高さ=基本周波数もここで決定) f [Hz] ③声道 口や舌で構成されるフィルタを適用 f [Hz] 3
ケプストラムのモチベーション 音声認識では,「声道がどうなっているか(どんなフィルタがかけ られているか)」が分かればOK →音声信号から声道の情報だけ抽出したい 声道の周波数特性のピークとなる周波数を フォルマントと呼ぶ F1 F2 F3 F1とF2で母音がほぼ決定する 画像引用: https://smartsoundlab.com/2019/01/000047.html 4
ケプストラム フィルタリング処理は以下の式で表される※ (𝑘 は周波数) 𝑋 𝑘 =𝐻 𝑘 𝑆 𝑘 ただし, 𝑋 𝑘 …音声信号のフーリエ変換 𝐻 𝑘 …声道のインパルス応答のフーリエ変換 (フィルタ関数) 𝑆 𝑘 …声帯振動のフーリエ変換 パワースペクトル 𝑃 𝑘 の対数を取り,和の形に log 𝑃 𝑘 = log 𝑋 𝑘 2 = 2 log 𝐻 𝑘 + 2 log 𝑆 𝑘 ※フィルタリングは時間領域では畳み込み積分,周波数領域では積の形で表せる 5
ケプストラム 声帯振動 𝑆 𝑘 はクシ形,フィルタの周波数特性 𝐻 𝑘 は緩やか → log 𝑃 𝑘 の高周波成分が 𝑆 𝑘 ,低周波成分が 𝐻 𝑘 → log 𝑃 𝑘 をフーリエ変換し,低域だけを抜き出せば 𝐻 𝑘 が得ら れるはず 6
ケプストラム まとめると, 音声信号 →離散フーリエ変換 →パワースペクトラム・対数 →離散フーリエ変換 (離散逆フーリエ変換※) →ケプストラム →低域だけを抜き出す ※フーリエ変換でも逆フーリエ変換でもOK 詳細は後述 7
用語 ケプストラムの横軸をケフレンシー(quefrency), 低域だけを抜き出す操作をリフタリング(liftering) と呼ぶ 時間領域→周波数領域→ケフレンシー領域 と変換される 8
パワースペクトラムのフーリエ変換/逆フーリエ変換 パワースペクトラムは 𝑘 = 𝑁/2 (ナイキスト周波数)で左右対称 (𝑋 k と 𝑋 𝑁 − 𝑘 は複素共役なので,二乗すると同じになる) 𝑁/2 𝑁/2 で左右対称な信号に対しては,離散フーリエ変換しても離散逆 フーリエ変換しても定数倍を除いて同じ結果が得られる 9
離散コサイン変換 実装上はパワースペクトラムの離散フーリエ変換に離散コサイン変 換が使われる場合が多い 離散コサイン変換(DCT)はJPEGにも使われる変換手法 10
離散コサイン変換 系列長 𝑁 の信号 𝑥 𝑛 に対する離散コサイン変換(DCT-Ⅱ) 𝑁−1 𝜋𝑘 𝑋 𝑘 = 𝑥 𝑛 cos 𝑛 + 0.5 𝑁 𝑛=0 これは何を表しているか? 11
離散コサイン変換 𝑥 𝑛 = 𝑥 2𝑁 − 1 − 𝑛 となるような系列長 2𝑁 の信号 𝑥 𝑛 を考える (𝑛 = 𝑁 − 0.5 で対称) これを離散フーリエ変換すると, 2𝑁−1 𝑗2𝜋𝑛𝑘 𝑋 𝑘 = 𝑥 𝑛 exp − 2𝑁 𝑛=0 𝑗𝜋𝑘 = 2 exp 2𝑁 𝑁−1 𝜋𝑘 𝑥 𝑛 cos 𝑛 + 0.5 𝑁 𝑛=0 12
離散コサイン変換 離散コサイン変換のイメージ →信号を左右反転させて繋げた信号を離散フーリエ変換している DFT 13
離散コサイン変換 離散コサイン変換の特徴 ⚫ ⚫ 出力は実数 窓関数が必要ない DFT 信号の端点が繋がらない (窓関数で修正) DCT 信号の端点が必ず繋がる 14
離散コサイン変換 パワースペクトラムは左右対称なので, 全体を離散フーリエ変換する代わりに半分を離散コサイン変換すれ ば計算量が半分で済む DFT DCT 15
リフタリング ケプストラムから低ケフレンシー成分を抜き出すために,以下の関 数で重みづけする 𝑄 𝜋𝑑 𝐿 𝑑 = 1.0 + sin 2 𝑄 𝑄 はリフタリング係数で,𝑄 = 22 が良い 16
MFCC メルフィルタバンクに対してケプストラムを計算したものを MFCCと呼ぶ 17
MFCC 実際にMFCCをプロットしてみる フィルタバンク数=20 リフタリングされたMFCCのうち,最初の13次元を表示 (ただしMFCCの1次元目は描画の関係上除外) データはJVSを使用 18
MFCC 話者は jvs001 と jvs002 発話内容は VOICEACTRESS100_006 と VOICEACTRESS100_033 →話者よりは発話内容に相関がある 19
3.7 特徴量の平均と標準偏差を計算してみよう 20
平均と標準偏差 ある発話 𝑢 のあるフレーム 𝑛 の特徴量 𝒙𝑢 𝑛 ∈ ℝ𝐷 (𝑢 = 0, ⋯ , 𝑈 − 1, 𝑛 = 0, ⋯ , 𝑁 𝑢 − 1) また, 𝒙𝑢 𝑛 の各要素を 𝑥𝑑𝑢 𝑛 で表す (発話とフレーム数に対する,特徴量のある次元の)平均 𝜇𝑑 = 1 𝑢 σ𝑈−1 𝑁 𝑢=0 𝑈−1 𝑁𝑢 −1 𝑥𝑑𝑢 𝑛 𝑢=0 𝑛=0 21
標準偏差 (発話とフレーム数に対する,特徴量のある次元の)標準偏差 𝜎𝑑 = = 𝑈−1 𝑁𝑢 −1 1 𝑢 σ𝑈−1 𝑁 𝑢=0 𝑥𝑑𝑢 𝑛 − 𝜇𝑑 2 𝑢=0 𝑛=0 1 𝑢 σ𝑈−1 𝑁 𝑢=0 𝑈−1 𝑁𝑢 −1 𝑥𝑑𝑢 𝑛 2 − 𝜇𝑑2 𝑢=0 𝑛=0 22
まとめ まとめ1 まとめ2 まとめ3 フーリエ変換したものをフーリエ変換したのがケプストラム ケプストラムの低ケフレンシー領域は声道情報に対応する メルフィルタバンクを適用したケプストラムの低ケフレンシー領域の特徴量(MFCC) を用いるとよい 23
24