音声認識メモ(DeepSpeech)その6
前回の続き。
プリエンファシスは必要か?
「ジェット機」という音声のスペクトログラム。
左が「pre-emphasis なし」、右が「pre-emphasis あり」
トレーニング時の学習セット(ATR503)
他コーパス(その1)
最初の「ジェット機」に関しては、プリエンファシスで特徴量が変わってしまっているように見える。
(高い周波数帯での反応はノイズだろうか)
他の2つは、プリエンファシスで期待どおりに高周波数が強調されている(1000Hzより低い周波数の反応が弱くなっている)
プリエンファシスなしのモデルだと?
認識結果
テストデータ1
ちいさなうなぎやに、ねっきのようなものがみなぎる。
['sil', 'sil', 'sil', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'ch', 'ch', 'ch', '_', '_', '_', '_', '_', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', '_', '_', '_', 's', 's', 's', 's', '_', '_', '_', '_', '_', '_', '_', 'a', 'a', 'a', '_', '_', '_', '_', 'n', 'n', 'n', '_', '_', '_', 'a', 'a', 'a', 'a', '_', '_', 'u', 'u', 'u', '_', '_', '_', '_', '_', '_', '_', 'n', 'n', 'n', '_', '_', 'a', 'a', 'a', 'a', '_', '_', '_', '_', '_', '_', '_', '_', 'g', 'g', 'g', 'i', 'i', '_', '_', '_', '_', '_', 'e', '_', '_', '_', '_', 'a', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'n', 'n', 'i', 'i', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'pau', 'pau', 'pau', 'pau', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'n', 'e', 'e', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'Q', 'Q', '_', '_', '_', '_', '_', 'k', 'k', '_', '_', 'i', 'i', '_', '_', '_', '_', '_', '_', 'n', 'n', 'n', 'o', '_', '_', '_', '_', '_', '_', '_', 'y', 'y', 'y', 'y', 'o', 'o', 'o', '_', '_', '_', '_', 'o', 'o', '_', '_', '_', '_', '_', '_', '_', 'n', 'n', '_', '_', '_', 'a', 'a', '_', '_', '_', 'm', 'm', 'm', 'o', 'o', '_', '_', '_', '_', '_', '_', '_', '_', 'n', 'n', 'o', 'o', '_', '_', '_', '_', '_', 'g', 'g', '_', '_', '_', '_', '_', 'a', 'a', '_', '_', '_', '_', '_', '_', '_', 'm', 'm', 'i', 'i', 'i', '_', '_', '_', '_', 'n', 'n', '_', '_', '_', '_', 'a', 'a', 'a', '_', '_', '_', '_', '_', '_', '_', '_', 'g', 'i', 'i', 'i', '_', '_', '_', '_', '_', '_', '_', '_', 'r', 'r', 'u', 'u', 'u', 'u', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'sil',
"うなぎやに"のところで、'y'の音素が'e'になってしまっている。
(「プリエンファシスあり」と同じ結果)
テストデータ2
どろぼうでもはいったかと、いっしゅんぼくはおもった。
['sil', 'sil', 'sil', 'sil', '_', '_', '_', '_', 't', 'o', 'o', 'o', 'o', '_', '_', '_', '_', 'r', 'r', 'r', 'o', 'o', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'b', 'o', 'o', 'o', '_', '_', '_', '_', 'o', 'o', 'o', 'o', '_', '_', '_', '_', '_', '_', '_', '_', 'd', 'e', 'e', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'm', 'm', 'm', '_', '_', '_', '_', '_', '_', '_', 'h', 'h', 'h', 'h', 'h', '_', '_', '_', 'a', 'a', 'a', '_', 'i', 'i', 'i', 'i', '_', '_', '_', '_', 'Q', 'Q', 'Q', '_', '_', '_', '_', '_', '_', 't', 't', '_', '_', 'a', 'a', '_', '_', '_', '_', 'k', 'k', 'k', 'k', '_', '_', '_', 'a', 'a', 'a', '_', '_', '_', '_', '_', '_', '_', 't', 't', 'o', 'o', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'pau', 'pau', 'pau', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'i', 'i', 'i', 'i', 'i', '_', '_', '_', '_', 'Q', 'Q', 'sh', 'sh', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'u', 'u', '_', '_', '_', 'N', 'N', 'N', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'b', 'o', 'o', 'o', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'k', 'k', 'k', 'u', 'u', '_', '_', '_', '_', '_', '_', 'w', 'w', '_', 'a', 'a', 'a', 'a', 'a', 'a', 'o', '_', '_', '_', '_', 'o', 'o', 'o', '_', '_', '_', '_', '_', '_', '_', 'm', 'm', 'o', 'o', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'Q', 'Q', 'Q', '_', '_', '_', '_', '_', '_', '_', '_', 't', 't', '_', '_', '_', 'a', 'a', 'a', 'a', 'a', 'a', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'sil', ..., 'sil']
"どろぼうでも"のところで、'd'の音素が't'になっている。
また、'm'-'o'となってほしいところで、'o'が欠落している。
(「プリエンファシスあり」と同じ結果)
「プリエンファシスなし」でもモデルは成立することを確認。
音声合成からのアプローチ
「World」を使って音声の特徴を推定し、補正してみる。
スペクトログラムを眺めていて、「低い音」に補正した方が認識しやすくなると予想。
「F0 scaling」と「Formant shift」のパラメータを変えていくつか試したところ、予想に反して、「高い音」に補正した音声に対する認識結果が一番、好ましかった。
['sil', 'sil', 'sil', 'sil', 'sil', 'sil', 'sil', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'sh', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'I', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 't', 't', 'k', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'I', 'I', 'I', 'I', 'I', 'I', 'I', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 'sil', ..., 'sil']
この時のパラメータは以下のとおり。
- F0 scaling: 2.0
- Formant shift: 1.2
音声合成後のスペクトログラムをプロット。
左がオリジナル。右が音声合成後。