読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】音声認識の隠れマルコフモデルとCTC、音声合成のWaveNet、話者識別と感情分析【G検定】

13レスカテゴリ:AI・機械学習
1: 名無しさん

音声認識で隠れマルコフモデルとCTC、音声合成でWaveNetが出てくる。どれが何の問題を解いてるん?

2: 名無しさん

前提のおさらい。音声は、A-D変換で数字の列(PCM)にして、FFTで周波数ごとの強さに分け、MFCCやメル尺度のスペクトルにしてから認識に使う。短い時間ごとに切って、1区切りずつ特徴の列にする

3: 名無しさん

>>1
音声認識の難しさは、音の長さが毎回違うこと。同じ「あ」でも、ゆっくり言えば区切りの数が増える。どの区切りがどの音素に当たるかが、学習データに書いてない

4: 名無しさん

>>3
隠れマルコフモデル(HMM)は、目に見えない状態(どの音素のどの部分か)が確率で次に移り、各状態から確率で音の特徴が出てくる、と考えるモデル
状態をたどる道すじの確率は、移る確率と出てくる確率を掛けていく。3つの確率が0.7・0.6・0.8なら 。一番確率の高い道すじを、音と音素の対応とみなす

5: 名無しさん

>>4
昔の音声認識は、HMMで音の部分(音響モデル)を、別の言語モデルで語の並びのもっともらしさを作って組み合わせてた。のちに音響モデルの中をディープラーニングにした方法も広まった

6: 名無しさん

CTCは、グレイヴスらの2006年の論文。区切りごとに文字(音素)か「空白」を出して、あとで並びを縮める
「c c 空白 a a t」は、続いた同じ文字を1つにして空白を消すと「cat」
区切りとの対応を教えなくても、RNNなどで音声から文字の列を直接学習できる

7: 名無しさん

>>6
空白って何のためにあるん?同じ文字をまとめるだけでええやん

8: 名無しさん

>>7
まとめるだけやと、hello の「ll」みたいに本当に同じ文字が続く語を出せん
「l 空白 l」とあいだに空白をはさめば、2つの l として残せる

9: 名無しさん

>>1
音声合成は逆で、文章から音声を作る。WaveNetは、ファン・デン・オードらの2016年の論文で、音声の波形を1点ずつ、それまでの点から予測して作る
Dilated Convolution(間を空けた畳み込み)を、未来を見ないように並べて重ねる。大きさ2のフィルタで間隔を1, 2, 4, …, 512と倍にしていくと、10層で1024点前まで見える。16kHzなら 秒

10: 名無しさん

>>9
1点ずつ作るんやったら、1秒の音声に16000回計算が要るやん。遅すぎるやろ

11: 名無しさん

>>10
最初のWaveNetは実際に生成が遅かった。そのあと、まとめて並列に作れるように学習しなおす改良が出て、速くなった
音の自然さでは、それまでの合成方法より人の評価がはっきり高かった

12: 名無しさん

>>1
話者識別は、何を言ったかやなくて、誰が話したかを当てる。同じ音声の特徴を使っても、目的が違う
音声の感情分析は、声の高さ・強さ・速さなどから、怒り・喜びなどを推定する。文章の感情分析と名前は同じやけど、入力が音声

13: 名無しさん

>>12
同じ声のデータでも、話者識別は話し方の個人差を手がかりにして、音声認識は逆にその個人差を無視したい。使う特徴が同じでも、何を残して何を捨てるかが反対なのが面白い

管理人のひとこと