2023年5月30日火曜日

お手軽な Text-to-speech アプリ Tone TTS を作った

お手軽な Text-to-speech アプリ Tone TTS を作りました。 Deep Learning も Web API も使わず、静的サイトで TTS ができます。 そして音声は自由に再利用できるので遊び甲斐があります。 ちなみに漢字対応は実装していないので、ひらがな/カタカナで入力してください。 また「こんにちは→こんにちわ」「わたしは→わたしわ」みたいな読み方の違いを自動で変換する機能はないのでユーザが指定する必要があります。



Deep Learning を使わない TTS

AI にしゃべらせたり歌わせる素材化するプロダクトとして、 歌唱では初音ミク、CoeFont、UTAU、NNSVS / ENUNU、ACE Studio、NEUTRINO、Synthesizer V などがあり、 朗読では VoiceBox、MYCOEIROINK、TALQu などがあるみたいです。 最近だと Bark とか RVC も出てきていますね。 ただどちらかと言えば、Mozilla TTS、cocui TTS、ESPnet、ブラウザの API のほうをよく使っています。

最近の TTS は朗読や歌唱で驚くべき精度で動作しますが、逆にもっと雑 (といっても実装は至って真面目) に作るとどんなもんだろうと思いました。 また Web上の静的サイトで準備ゼロ・低遅延・低帯域・低メモリで TTS を動作させてみたいなあと思って、モックっぽいなにかを作ってみました。 目指している (?) のは高性能な TTS ではなく、UTAU のようなハンドメイド型の TTS です。

今回試作してみたものが技術的にやっていることは簡単で、UTAU の音源を使わせて頂き、 Tone.js と組み合わせて TTS っぽくなるように音声を再生するだけです。 Tone.js を使えば音階調整やちょっとししたエフェクト処理ができるので、様々な応用ができます。 とは言っても現状たいしたことはしていないので、雑なボイスが流れます。 今のところ真面目な朗読や歌唱はやる気がないのですが、最初はこんなもんでしょう。

ボイスは Opus が最高

多少考えたことは音声フォーマットでしょうか。Opus 形式のビットレートなどを多少調査しました。 Opus 形式はスピーチ向きのエンコード SILK を内蔵しているのでボイスに強いです。 ボイスしかない場合は 48Kbps でも十分かなと思ったのですが、 以下を参考にすると 96Kbps 以下のビットレートだと不満のあるケースも多いので、デフォルトの 96Kbps にしました。 標準的な MP3 (LAME のデフォルト) より若干ファイルサイズが大きくなるのですが、 低遅延・高音質に期待してみました。
今後いい感じにしゃべらせるには、当然ながら学習が必要です。 たた現状では雑ボイスで遊んでもらうことを目的として作ったので、いまのところこれでヨシです。

0 件のコメント: