2023年6月7日水曜日

MIDI で Text-to-speech ができる MIDI TTS を作った

MIDI で Text-to-speech ができる MIDI TTS を作ってみました。 少し前に作った Tone TTS の MIDI 版です。 Tone TTS と MIDI TTS を比較すると、基本的には Tone TTS のほうが優れています。 ただ MIDI と組み合わせたいような時には使えるかも知れないので、とりあえず公開しました。



サウンドフォント vs 音素ファイル

Tone TTS と MIDI TTS は音素データの持ち方に違いがあります。 Tone TTS では音素ごとに Opus ファイルで保持し、MIDI TTS ではサウンドフォント化しています。 サウンドフォント化して MIDI にする利点はあまりなく、今は AudioWorklet に対応しやすいことくらいでしょうか。 ループ処理を事前に定義できる利点はあるでしょうが、むしろ面倒くさいのであまり手を出したくないです。

一番の欠点は、あ→001:000、い→001:001 のような音素の配列仕様を決めないといけないところです。 こればかりは悩んでいても仕方ないので、UTAU の単独音の中で不要そうな音を排除し、 音素をローマ字でソートしたものとしました。 不要そうな音の判断が難しかったのですが、このページ を参考にするのが良さそうです。 このページ通りの 122音にすると1バンクで処理できていい感じなので、ひとまず採用することにしました。 122音に閉じているうちは良いのですが、音素を増やそうとすると手に負えなくなるのが一番の問題でしょうね。

MIDI である必要は特にない気がしなくもないのですが、音素を楽器として再生したい時には使えますし。 使い道がない訳でもないので、サンプルとして公開してみました。

0 件のコメント: