Irodori-TTS-ServerでOpenWebUIが喋りだす
ついにAIがまともに喋るようになった。
ちょっと前振りが長いので、インストールについてご覧になりたい方は、目次から飛んでください。
過去からのいきさつ
過去には、VOICEVOXでしゃべるAIチャットに挑戦してみたり、
でも、いかにもテキスト読み上げでがっかりして、
次には、Qwen3-TTSが登場したのでそれでやってみたり、
音声が生成されるってのがすごいなぁとは思ったけど、片言の日本語みたいな感じで、やっぱりがっかりしてましたが、
ついに実用的なのが登場しました。これこそ最初に求めていたものそのものです。Irodori-TTSです。
これを知ったのは、こちらの記事。
ちょうどGemma4:12bも出たところで、日本語専用のTTSの登場にかなり期待が膨らみました。
で、この記事では専用のアプリを作って色々されているようですが、いや、OpenAIの互換APIサーバは無いの?
それがあればOpenWebUIが普通に喋りだすし、キャラも動かしたければSillyTavernで実現できるのにと思っていると、やっぱり登場しました。
欲しい物はみんな一緒って感じです。開発者様ありがとうございます。
インストールについてもそこに書かれていますが、より解りやすくかかれているのがこちら。
ここを参考に進めていきます。
Irodori-TTS-Serverのインストール
今回の目的は、OllamaでGemma4を動かして、そのUIにOpenWebUIを使って、OpenWebUIがIrodori-TTS-Serverにアクセスすることで、Gemma4が喋りだすってことをやります。
Linux環境ですが、Windowsでも同じようにできると思います。(適当)
Irodori-TTS-Server
Dockerで動かします。(Dockerインストール済み前提です。)
まずはレポジトリのクローンです。Homeとか適当なフォルダに移動して実行します。
git clone https://github.com/Aratako/Irodori-TTS-Server
cd Irodori-TTS-Server環境ファイルのサンプルをコピーします。
cp .env.example .env中身はとりあえず変えずにこのままにします。
リファレンス音声ファイルをvoicesフォルダに入れます。
適当な音声ファイルが無いので、ここから拝借してきました。
「ちょっと、そこのあなた。こんな所で一体何をしているのかしら?」
ツンケンした感じがいい。
これをvoicesフォルダに置きます。
noteでの試聴用に、mp3でも載せます。
ビルドして、Dockerで動かします。GPUありなので、こちら。
docker compose -f compose.yaml -f compose.gpu.yaml up --build --force-recreate結構時間がかかりますが、こんなのが出てくれば成功。
api-1 | INFO: Uvicorn running on http://0.0.0.0:8088 (Press CTRL+C to quit)
ちゃんと動くか、curlで試してみます。
time curl http://localhost:8088/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"model": "irodori-tts",
"input": "こんにちは。どんなご要件ですか。なんでもおっしゃってください。",
"voice": "clone_ref1",
"response_format": "wav"
}' \
--output speech.wavモデルは「irodori-tts」入力文はアルファベットが入るとうまく行かないこともあるようなので、日本語のみにした。ボイスはvoicesのフォルダに入れたファイル名の拡張子無し。これで実行したところにspeech.wavができれば成功。
「こんにちは。どんなご要件ですか。なんでもおっしゃってください。」
リファレンス音声のツンケンした感じはなくなり、文脈に合わせた丁寧なトーンになってる。
セリフを変えてみよう。
time curl http://localhost:8088/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"model": "irodori-tts",
"input": "あんたねぇ、何度言えばわかるの?まったく、使えないわね。",
"voice": "clone_ref1",
"response_format": "wav"
}' \
--output speech1.wav「あんたねぇ、何度言えばわかるの?まったく、使えないわね。」
すごい。ちゃんと演じている。
他にも雰囲気を変えてやってみよう。
「ねぇお願い。たまには私の言うことを聞いてくれてもいいでしょ。」
こういうのが欲しかったんだよ。
Ollama
Gemma4:12bをpullします。GGUFを使います。
ollama pull hf.co/unsloth/gemma-4-12b-it-GGUFGemma4はそのまま動かすと、思考モードで動くようで、チャットには向かないので、起動時に --think=false を付けるといいようです。Ollama単独で動かす場合はです。
OpenWebUI
OpenWebUIもDockerで動いている前提で書きます。
設定によりますが、http://localhost:3000/ にアクセスしてOpenWebUIを立ち上げます。

Gemma-4-12b-it-GGUFを選択します。
右上の3本スライダーみたいなのをクリックします。

Ollamaのオプションが選択できるので、thinkをオフにします。

設定の管理者設定から、TTSの設定を行います。

オーディオの設定ページを開きます。
テキスト音声変換エンジンをOpenAIにして、 http://host.docker.internal:8088/v1 と入れます。DockerでOpenWebUIとTTSサーバが動いている場合は、localhostでは動かないので注意です。
その横のキーはなんでもいいです。 key とかでいいです。
TTSボイスにvoicesのフォルダに入れたファイル名を入れます。ここではclone_ref1 です。
TTSモデルは irodori-tts です。
次に、普通の設定ページのオーディオで音声をオンにします。

応答の自動再生をオンにして、音声を設定のところに clone_ref1 を入力しておきます。
これで完了です。
OpenWebUIが、文脈に合わせてどんどん喋りだします。Gemma4は会話らしいちょうどいい文章を出してくれる感じです。
OllamaのモデルをLumiMaidなどのnsfw対応のものにすれば、まぁ想像のとおりです。
ではまた。
