音声認識で隠れマルコフモデルとCTC、音声合成でWaveNetが出てくる。どれが何の問題を解いてるん?
【疑問】音声認識の隠れマルコフモデルとCTC、音声合成のWaveNet、話者識別と感情分析【G検定】
前提のおさらい。音声は、A-D変換で数字の列(PCM)にして、FFTで周波数ごとの強さに分け、MFCCやメル尺度のスペクトルにしてから認識に使う。短い時間ごとに切って、1区切りずつ特徴の列にする
>>1
音声認識の難しさは、音の長さが毎回違うこと。同じ「あ」でも、ゆっくり言えば区切りの数が増える。どの区切りがどの音素に当たるかが、学習データに書いてない
>>3
隠れマルコフモデル(HMM)は、目に見えない状態(どの音素のどの部分か)が確率で次に移り、各状態から確率で音の特徴が出てくる、と考えるモデル
状態をたどる道すじの確率は、移る確率と出てくる確率を掛けていく。3つの確率が0.7・0.6・0.8なら 。一番確率の高い道すじを、音と音素の対応とみなす
>>4
昔の音声認識は、HMMで音の部分(音響モデル)を、別の言語モデルで語の並びのもっともらしさを作って組み合わせてた。のちに音響モデルの中をディープラーニングにした方法も広まった
CTCは、グレイヴスらの2006年の論文。区切りごとに文字(音素)か「空白」を出して、あとで並びを縮める
「c c 空白 a a t」は、続いた同じ文字を1つにして空白を消すと「cat」
区切りとの対応を教えなくても、RNNなどで音声から文字の列を直接学習できる
>>6
空白って何のためにあるん?同じ文字をまとめるだけでええやん
>>7
まとめるだけやと、hello の「ll」みたいに本当に同じ文字が続く語を出せん
「l 空白 l」とあいだに空白をはさめば、2つの l として残せる
>>1
音声合成は逆で、文章から音声を作る。WaveNetは、ファン・デン・オードらの2016年の論文で、音声の波形を1点ずつ、それまでの点から予測して作る
Dilated Convolution(間を空けた畳み込み)を、未来を見ないように並べて重ねる。大きさ2のフィルタで間隔を1, 2, 4, …, 512と倍にしていくと、10層で1024点前まで見える。16kHzなら 秒
>>9
1点ずつ作るんやったら、1秒の音声に16000回計算が要るやん。遅すぎるやろ
>>10
最初のWaveNetは実際に生成が遅かった。そのあと、まとめて並列に作れるように学習しなおす改良が出て、速くなった
音の自然さでは、それまでの合成方法より人の評価がはっきり高かった
>>1
話者識別は、何を言ったかやなくて、誰が話したかを当てる。同じ音声の特徴を使っても、目的が違う
音声の感情分析は、声の高さ・強さ・速さなどから、怒り・喜びなどを推定する。文章の感情分析と名前は同じやけど、入力が音声
>>12
同じ声のデータでも、話者識別は話し方の個人差を手がかりにして、音声認識は逆にその個人差を無視したい。使う特徴が同じでも、何を残して何を捨てるかが反対なのが面白い
管理人のひとこと
- 音声認識の難しさは、音の長さが毎回違い、区切りと音素の対応が分からないこと。
- HMMは隠れた状態の移り変わりと出てくる音を確率で表す(0.7×0.6×0.8=0.336)。音響モデルと言語モデルを組み合わせて使われてきた。
- CTC(2006年の論文)は区切りごとに文字か空白を出し、同じ文字をまとめて空白を消す。空白で「ll」も出せる。WaveNet(2016年の論文)は間を空けた畳み込みを重ねて波形を1点ずつ作る(10層で1024点、16kHzで0.064秒)。
- 話者識別は誰が話したかを当てる。音声の感情分析は声の高さ・強さ・速さから感情を推定する。