原稿の音素記号化の難しさについて - akjava/Matcha-TTS-Japanese GitHub Wiki

ここでは、難しくなる原因を上げていく。

改めて検証するとDatasetには、無音や途中で読むのやめてたり、質の酷いのが混じってたりするが、それでもそこそこのモデルが仕上がっている。 そのため、どのぐらいの品質まで高めなければならないかは不明

最終的には、原稿を音素化した物と、読み上げた音声の音素化を比べないといけない。酷い差があるものは検証の必要がある。

こららの問題の解決のため、jyakoTenを作っているが、万人に勧められる状態じゃない。

解決に役立つツール

  • VAD - 万能ではないが、たまに混じっている無音声を除ける。VAD後の、容量の少ないファイルの音声を聞いてみるといい。
  • 音声認識 - そのまま原稿の代わりには使えないが、音声が壊れてたり、途中で読むのを止めたりしているのを、見つけることは可能

原因

原稿を正しく読めてない。

漢字が難しい場合もあるが、「てにをは」が結構抜けたりもする。

1文字程度だとエラーに引っかかりにくい。

漢字からの音素化で失敗する

例えば、openjtalkのg2pもたまに間違います。

原稿がカナであれば、ほぼ失敗しない。漢字から変換の場合、ある程度の確率で失敗する。 原稿の漢字の使い方が間違っていると、高い確率で変な音素に変換してしまう。

音声認識の精度に問題がある

 読み上げた音声を音声認識して、そのまま上げればいいと思うが、音声認識は、統計的に頻度が高い文章に強制的に認識してしまう。 つまりスクリプトの内容がレアなケースだと、特に人名とか、酷い漢字の結果になる。(たいてい、この漢字を音素化で全く違うものになる)

また、稀に、Whisperだと"ご視聴ありがとうございましたと。"と音声認識を放棄することもある

ただし、地名(Common-Voiceが大好きで頻繁に登場する)とか、大抵の辞書は、まともに変換できないので、読み上げたのを、そのまま採用した方がいいケースも有る

 #カナで認識するモデルは現状、確認出来ていない。

VAD時に、音をぶった切ってることもある。

 クリック音を除いてくれる、VAD(voice activity detection)だが、音の状態にもよるが、稀に最初の小声とか、切ってしまうこともある。 そもそも、VADの特性上、母音が混じらない、子音だけの音の検出は苦手。

 また別の話になるが、ある程度、音声が入っていないファイルはVADで検出できるが、人の声が交じる騒音は、VADを素通りしてしまう。原稿の長さと、ファイルの長さを比べるしかない。