はじめに
リンクアンドモチベーションのアドベントカレンダーです。
最近TTSをとても触る機会が多かったので記事にしてみました。
Text-to-Speechとは
Text-to-Speech(TTS)は、文字を音声に変える技術です。たとえば、スマホやカーナビで文章を読み上げるときに使われます。
TTSは次のような仕組みで音声を作ります:
- 文章の理解:テキストを分けて、文法や意味を調べる
- 音に変える:文章を音に変えるための情報にする
- 声を作る:情報を使って音声を作る
この辺はGPTに出してもらいました。へーそうなんだあ。
代表的なTTSのサービス
TTSを使えるサービスには、たくさんの種類があります。たとえば:
- Amazon Polly:いろいろな言葉に対応していて、感情を込めた声も作れる
- Google Cloud Text-to-Speech:高品質な音声を作れる
- Microsoft Azure Cognitive Services:自分だけのオリジナルの声を作る機能がある
- OpenAI Whisper:音声を作るだけでなく、音声を聞き取ることもできる
この辺もGPTに出してもらいました。へーそうなんだあ。
私はAmazon Pollyを使っていたので、ここからはAmazon Pollyの音声調整の方法を具体的に話していきます。
TTSの調整方法(Amazon Pollyを例に)
TTSでより自然な声を作るには、ただ文字を入れるだけではなく、いくつかの工夫が必要です。
1. 話す速さや声の高さを変える
Amazon Pollyでは、音声の速さや高さを調整するタグを使うことができます。
例:
<speak>
<prosody rate="slow">ゆっくり話します。</prosody>
<prosody rate="fast">はやく話します。</prosody>
</speak>
2. 発音を細かく調整する
Amazon Pollyでは、SSML(音声合成マークアップ言語)を使って発音をコントロールできます。発音記号やカスタム発音を指定することで、正確な発音を実現できます。
例:
<speak>
<phoneme alphabet="x-amazon-pron-kana" ph="アリ'ガトウ">ありがとう</phoneme>
</speak>
発音をコントロールできるということは関西弁を話させることもできます。
例:
<speak>
<phoneme alphabet="x-amazon-pron-kana" ph="アリガ'ト'ウ">ありがとう</phoneme>
</speak>
ふりがなを振る
日本語では、漢字にふりがなを振ることで正確な発音を指定できます。
たとえば、文脈によって読み仮名が変わるような「行った」という言葉は以下のように指定することができます。
<speak>
<phoneme alphabet="x-amazon-yomigana" ph="いった">行った</phoneme>
<phoneme alphabet="x-amazon-yomigana" ph="おこなった">行った</phoneme>
</speak>
TTSで読み取ってくれないがちな日本語
日本語は難しいらしく、調整が必要な言葉がたくさん出てきます。
たとえば以下のような言葉は発音や読み仮名を調整する必要がある場合が多いです。
- 漢字が続く言葉の発音:たとえば、「三寒四温」や「三杯酢」など、漢字が連続する言葉は、自然な発音にするのが難しいことがあります。
<speak>
<phoneme alphabet="x-amazon-pron-kana" ph="サ'ン'カ'ン'シ'オン">三寒四温</phoneme>
</speak>
<speak>
<phoneme alphabet="x-amazon-pron-kana" ph="サン'バ'イズ">三杯酢</phoneme>
</speak>
3. 間や区切りを追加する
音声に自然な間を作ることで、聞き取りやすくなります。
特に説明文やリストを読み上げる場合に効果的です。
これがマジで大事で、人間っぽい聞き取りやすい話し方は間があるかどうかにもよるなと思いました。
例:
<speak>
待って... それは何ですか?
<break time="1s"/>
今わかりました。
</speak>
終わりに
TTSの調整をすることで人間の喋りが上手になるかなと思ってたら
音声を聴きすぎてこっちの喋り方が機械に寄りました。