【Pythonで学ぶ音声認識】第3章:音声処理の基礎と特徴量抽出(3.6・3.7節)

1.7K Views

November 08, 23

スライド概要

Pythonで学ぶ音声認識の輪読会第3回の発表スライドです。
2023年10月19日(木) 18:30~

profile-image

AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Pythonで学ぶ音声認識 ケプストラム特徴量 京都大学工学部電気電子工学科4回生 三宅大貴 0

2.

3.6 メル周波数ケプストラム特徴量 1

3.

ケプストラムのモチベーション そもそも人間はどう喋っているか? ➀肺 空気を送り出す 声道 ➁声帯 空気を振動させる 声帯 ③声道 口の形や舌で声を作る 2

4.

ケプストラムのモチベーション 音声処理的に言うと, 声道 声帯 ➁声帯 特定の周波数成分(複数)を持つ信号を 生成する (声の高さ=基本周波数もここで決定) f [Hz] ③声道 口や舌で構成されるフィルタを適用 f [Hz] 3

5.

ケプストラムのモチベーション 音声認識では,「声道がどうなっているか(どんなフィルタがかけ られているか)」が分かればOK →音声信号から声道の情報だけ抽出したい 声道の周波数特性のピークとなる周波数を フォルマントと呼ぶ F1 F2 F3 F1とF2で母音がほぼ決定する 画像引用: https://smartsoundlab.com/2019/01/000047.html 4

6.

ケプストラム フィルタリング処理は以下の式で表される※ (𝑘 は周波数) 𝑋 𝑘 =𝐻 𝑘 𝑆 𝑘 ただし, 𝑋 𝑘 …音声信号のフーリエ変換 𝐻 𝑘 …声道のインパルス応答のフーリエ変換 (フィルタ関数) 𝑆 𝑘 …声帯振動のフーリエ変換 パワースペクトル 𝑃 𝑘 の対数を取り,和の形に log 𝑃 𝑘 = log 𝑋 𝑘 2 = 2 log 𝐻 𝑘 + 2 log 𝑆 𝑘 ※フィルタリングは時間領域では畳み込み積分,周波数領域では積の形で表せる 5

7.

ケプストラム 声帯振動 𝑆 𝑘 はクシ形,フィルタの周波数特性 𝐻 𝑘 は緩やか → log 𝑃 𝑘 の高周波成分が 𝑆 𝑘 ,低周波成分が 𝐻 𝑘 → log 𝑃 𝑘 をフーリエ変換し,低域だけを抜き出せば 𝐻 𝑘 が得ら れるはず 6

8.

ケプストラム まとめると, 音声信号 →離散フーリエ変換 →パワースペクトラム・対数 →離散フーリエ変換 (離散逆フーリエ変換※) →ケプストラム →低域だけを抜き出す ※フーリエ変換でも逆フーリエ変換でもOK 詳細は後述 7

9.

用語 ケプストラムの横軸をケフレンシー(quefrency), 低域だけを抜き出す操作をリフタリング(liftering) と呼ぶ 時間領域→周波数領域→ケフレンシー領域 と変換される 8

10.

パワースペクトラムのフーリエ変換/逆フーリエ変換 パワースペクトラムは 𝑘 = 𝑁/2 (ナイキスト周波数)で左右対称 (𝑋 k と 𝑋 𝑁 − 𝑘 は複素共役なので,二乗すると同じになる) 𝑁/2 𝑁/2 で左右対称な信号に対しては,離散フーリエ変換しても離散逆 フーリエ変換しても定数倍を除いて同じ結果が得られる 9

11.

離散コサイン変換 実装上はパワースペクトラムの離散フーリエ変換に離散コサイン変 換が使われる場合が多い 離散コサイン変換(DCT)はJPEGにも使われる変換手法 10

12.

離散コサイン変換 系列長 𝑁 の信号 𝑥 𝑛 に対する離散コサイン変換(DCT-Ⅱ) 𝑁−1 𝜋𝑘 𝑋 𝑘 = ෍ 𝑥 𝑛 cos 𝑛 + 0.5 𝑁 𝑛=0 これは何を表しているか? 11

13.

離散コサイン変換 𝑥 𝑛 = 𝑥 2𝑁 − 1 − 𝑛 となるような系列長 2𝑁 の信号 𝑥 𝑛 を考える (𝑛 = 𝑁 − 0.5 で対称) これを離散フーリエ変換すると, 2𝑁−1 𝑗2𝜋𝑛𝑘 𝑋 𝑘 = ෍ 𝑥 𝑛 exp − 2𝑁 𝑛=0 𝑗𝜋𝑘 = 2 exp 2𝑁 𝑁−1 𝜋𝑘 ෍ 𝑥 𝑛 cos 𝑛 + 0.5 𝑁 𝑛=0 12

14.

離散コサイン変換 離散コサイン変換のイメージ →信号を左右反転させて繋げた信号を離散フーリエ変換している DFT 13

15.

離散コサイン変換 離散コサイン変換の特徴 ⚫ ⚫ 出力は実数 窓関数が必要ない DFT 信号の端点が繋がらない (窓関数で修正) DCT 信号の端点が必ず繋がる 14

16.

離散コサイン変換 パワースペクトラムは左右対称なので, 全体を離散フーリエ変換する代わりに半分を離散コサイン変換すれ ば計算量が半分で済む DFT DCT 15

17.

リフタリング ケプストラムから低ケフレンシー成分を抜き出すために,以下の関 数で重みづけする 𝑄 𝜋𝑑 𝐿 𝑑 = 1.0 + sin 2 𝑄 𝑄 はリフタリング係数で,𝑄 = 22 が良い 16

18.

MFCC メルフィルタバンクに対してケプストラムを計算したものを MFCCと呼ぶ 17

19.

MFCC 実際にMFCCをプロットしてみる フィルタバンク数=20 リフタリングされたMFCCのうち,最初の13次元を表示 (ただしMFCCの1次元目は描画の関係上除外) データはJVSを使用 18

20.

MFCC 話者は jvs001 と jvs002 発話内容は VOICEACTRESS100_006 と VOICEACTRESS100_033 →話者よりは発話内容に相関がある 19

21.

3.7 特徴量の平均と標準偏差を計算してみよう 20

22.

平均と標準偏差 ある発話 𝑢 のあるフレーム 𝑛 の特徴量 𝒙𝑢 𝑛 ∈ ℝ𝐷 (𝑢 = 0, ⋯ , 𝑈 − 1, 𝑛 = 0, ⋯ , 𝑁 𝑢 − 1) また, 𝒙𝑢 𝑛 の各要素を 𝑥𝑑𝑢 𝑛 で表す (発話とフレーム数に対する,特徴量のある次元の)平均 𝜇𝑑 = 1 𝑢 σ𝑈−1 𝑁 𝑢=0 𝑈−1 𝑁𝑢 −1 ෍ ෍ 𝑥𝑑𝑢 𝑛 𝑢=0 𝑛=0 21

23.

標準偏差 (発話とフレーム数に対する,特徴量のある次元の)標準偏差 𝜎𝑑 = = 𝑈−1 𝑁𝑢 −1 1 𝑢 σ𝑈−1 𝑁 𝑢=0 ෍ ෍ 𝑥𝑑𝑢 𝑛 − 𝜇𝑑 2 𝑢=0 𝑛=0 1 𝑢 σ𝑈−1 𝑁 𝑢=0 𝑈−1 𝑁𝑢 −1 ෍ ෍ 𝑥𝑑𝑢 𝑛 2 − 𝜇𝑑2 𝑢=0 𝑛=0 22

24.

まとめ まとめ1 まとめ2 まとめ3 フーリエ変換したものをフーリエ変換したのがケプストラム ケプストラムの低ケフレンシー領域は声道情報に対応する メルフィルタバンクを適用したケプストラムの低ケフレンシー領域の特徴量(MFCC) を用いるとよい 23