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

1.8K Views

November 08, 23

スライド概要

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

profile-image

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

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

Pythonで学ぶ音声認識 3.4~3.5節 2023/10/19 Thu. 京都大学 工学研究科 電気工学専攻 栗林 雷旗

2.

本日のキーワードおさらい • 短時間フーリエ変換 • ディザリング処理 • 直流(DC)成分処理 • 広域強調(プリエンファシス) • フィルタバンク分析 • メルフィルタバンク分析

3.

3.3節のおさらい • 音声波形をフーリエ変換, スペクトルを計算 →音声の音色情報を視覚的に確認

4.

時間, 周波数による音声分解 • 問題点: 時間に関する情報が不明 • 解決策: 短い時間ごとに音声を区切ってフーリエ変換 →短時間フーリエ変換

5.

ハミング窓関数 • 波の分析区間においては、始端と終端の値が一致していることが望 ましいが、現実の波形分析では予め信号の周期を知ることは困難。 →分析区間の始端と終端の値が異なると、フーリエ変換が解釈する波は不連 続な継ぎ目を含み、ノイズが生じる • ハミング窓(窓関数のひとつ)を使用する。 • 𝑤 𝑛 = 0.54 − 0.46 cos 2𝜋𝑛 𝑁−1 • n: 時刻, N: 分析区間内のサンプル数 • ハミング窓の特徴: 始端, 終端付近で0に近づく →入力波形にハミング窓を掛けることによりノイズを低減できる

6.

ディザリング処理 • 入力された音声は無音区間を含む場合がある。 →振幅スペクトルの対数を計算すると-無限大となる →入力信号全体に微小ノイズを加える(ディザリング処理) 𝑑𝑖𝑡ℎ𝑒𝑟 𝑥 𝑛 = 𝑥 𝑛 + 𝐷 2𝑑 𝑛 − 1 𝐷: ノイズの大きさを決める正の数 𝑑 𝑛 : [0.0, 1.0] の一様乱数

7.

直流(DC)成分除去 • 音は空気の振動→振幅値は正の値と負の値を交互に変化 →平均振幅の理論値は0付近 • 現実の収録環境ではノイズにより平均振幅が0から離れた値に →フレームごとに振幅値の平均を引く(直流(DC)成分除去) 𝑁−1 𝑑𝑐𝑐𝑢𝑡 𝑥 𝑛 1 =𝑥 𝑛 − ෍𝑥 𝑛 𝑁 𝑛=0

8.

高域強調(減衰した音声信号の補填) • 音声伝播において、高周波数帯ほど減衰が著しい →減衰を補うため、入力音声信号に対してフィルタを畳み込む(高域強調) 𝑁−1 𝑝𝑟𝑒_𝑒𝑚𝑝ℎ𝑎𝑠𝑖𝑠 𝑥 𝑛 = ෍ ℎ 𝜏 𝑥 𝑛 − 𝜏 = 𝑥 𝑛 − 𝛼𝑥 𝑛 − 1 𝜏=0 1 𝜏=0 ℎ 𝜏 = ൞−𝛼 𝜏 = 1 0 𝜏>1 𝛼: フィルタ特性を操作する係数(0.97とされることが多い)

9.

高域強調 高域強調フィルタを離散フーリエ変換したものを𝐻とすると、 𝐻の対数スペクトルは次のように計算される 𝑁−1 log 𝐻 𝑘 = log ෍ ℎ 𝑛 𝑒 −𝑗 2𝜋𝑛𝑘 𝑁 = log 1 − 𝛼𝑒 −𝑗 2𝜋𝑘 𝑁 𝑛=0 2𝜋𝑘 2𝜋𝑘 = log 1 − 𝛼 cos − 𝑗𝛼 sin 𝑁 𝑁 = log 2𝜋𝑘 1 − 𝛼 cos 𝑁 2 2𝜋𝑘 + 𝛼 sin 𝑁 1 2𝜋𝑘 2 = log 1 + 𝛼 − 2𝛼 cos 2 𝑁 2

10.

(線形)フィルタバンク分析 • 一般に、機械学習への入力は多変量データ • 多変量データの各値を次元と呼び, 値の個数を次元数と呼ぶ 次元数が大きいほど、きめ細かな表現ができるから良いことでは? →解像度の高さ故、微小ノイズでも振幅スペクトルの形状に影響を及ぼし認識が失敗する →課題: 重要な情報は残しつつ次元削減が必要 ・振幅スペクトルの周波数成分を一定範囲ごとに集約 (フィルタバンク分析) ・振幅スペクトル 𝑦 𝑘 の周波数成分𝑘に対応する周波数は 𝑘𝐹𝑠 𝑓𝑟𝑒𝑞 𝑘 = 2𝐾 𝐾: 周波数成分の数(振幅スペクトルの次元数) 𝐹𝑠 : サンプリング周波数

11.

フィルタバンク分析の手順(1) • 分析する周波数範囲を設定(簡易バンドパスフィルタに相当) バンドパスフィルタ: 特定の周波数の信号のみ通過させ、 それ以外の周波数の信号をカットするフィルタ回路(出典: Panasonic) • 分析する周波数帯 𝐹𝑙𝑜𝑤 , 𝐹ℎ𝑖𝑔ℎ において 分割後の周波数範囲(フィルタ)を𝐿個とする →𝐿個の三角フィルタが均等に並ぶ必要がある • 𝐹𝑙𝑜𝑤 から𝐹ℎ𝑖𝑔ℎ までを均等分割した𝑓𝑙 を定義 𝑙 𝐹𝑙𝑜𝑤 − 𝐹ℎ𝑖𝑔ℎ 𝑓𝑙 = + 𝐹𝑙𝑜𝑤 𝐿+1 三角フィルタ

12.

フィルタバンク分析の手順(2) • 三角フィルタ𝑤𝑙 𝑘 を定義 1 𝑓𝑟𝑒𝑞 𝑘 − 𝑓𝑙 𝑓𝑙+1 − 𝑓𝑙 𝑤𝑙 𝑘 = 𝑓𝑙+2 − 𝑓𝑟𝑒𝑞 𝑘 𝑓𝑙+2 − 𝑓𝑙+1 0 0 𝑓𝑙+1 𝑓𝑙 • フィルタ作成後は振幅スペクトルを各フィルタと畳み込み 𝐾 𝑏 𝑙 = ෍ 𝑤𝑙 𝑘 𝑦 𝑘 𝑏 𝑙 : フィルタバンク特徴量 𝑘=0 𝑓𝑙+2

13.

線形フィルタバンク分析の不完全性 • 線形フィルタバンク分析では、次元削減に伴い重要な情報も削ぎ 落としてしまう • 解決手法: メルフィルタバンク(人間の聴覚特性に近づけた手法) 高周波数帯の音波に鈍感/低周波数帯の音波に敏感 →高周波数帯は粗い単位で集約/低周波数帯は細かな単位で集約 • 周波数をメル尺度(人間が知覚する音の高さに相当)に変換 𝑓 𝑚𝑒𝑙 𝑓 = 1127.0 log +1 700

14.

メルフィルタバンク解析の手順 𝑚𝑙 = 𝑤𝑙𝑚𝑒𝑙 𝑙 𝑚𝑒𝑙 𝐹ℎ𝑖𝑔ℎ − 𝑚𝑒𝑙 𝐹𝑙𝑜𝑤 𝐿+1 𝑚𝑒𝑙 𝑓𝑟𝑒𝑞 𝑘 − 𝑚𝑙 𝑚𝑙 < 𝑚𝑒𝑙 𝑓𝑟𝑒𝑞 𝑘 < 𝑚𝑙+1 𝑚𝑙+1 − 𝑚𝑙 𝑘 = 𝑚𝑙+2 − 𝑚𝑒𝑙 𝑓𝑟𝑒𝑞 𝑘 𝑚𝑙+1 < 𝑚𝑒𝑙 𝑓𝑟𝑒𝑞 𝑘 < 𝑚𝑙+2 𝑚𝑙+2 − 𝑚𝑙+1 0 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 メルフィルタバンク特徴量は 𝐾 𝑏 𝑚𝑒𝑙 𝑙 = ෍ 𝑤𝑙𝑚𝑒𝑙 𝑘 𝑦 𝑘 𝑘=0 𝐹𝐵𝐴𝑁𝐾 𝑙 = log 𝑏 𝑚𝑒𝑙 𝑙

15.

本日のキーワードおさらい • 短時間フーリエ変換 • ディザリング処理 • 直流(DC)成分処理 • 広域強調(プリエンファシス) • フィルタバンク分析 • メルフィルタバンク分析