SillyTavern VOICEVOXとAPI接続で、しゃべるLLMを構築 OpenWebUIでも
SillyTavernの記事を書くのもたぶんこれで一区切りですが、VOICEVOXとの連携でおしゃべりさせてみます。
実際、これが一番ハマった。もう無理かと諦めかけた。
環境のインストール
はじめに
SillyTavernはVOICEVOXとの連携ができるよと紹介されている記事をみつけたのはこちら。
書いてあることは、単純なんですが。
まず、はじめにに書かれていること。
問題になるのがOpenWebUIやSillyTavernといった海外製のフロントエンドでは、日本でよく使われているTTSエンジンのVOICEVOXなどのAPIには対応していない、という点です。
ようするに、単純にVOICEVOXを使うことはできないけど、やり方はあるってことです。
そのやり方が、こちら。
VOICEVOXなどのAPIをOpenAIのTTS API仕様に変換するソフトウェアを使います。
・Sunwood-ai-labs/voicevox-openai-tts
・nichiki/voicevox-openai-tts (上のfork版)
ここにあります。
これを動かせば、大丈夫ってことです。
Dockerのインストール(未インストールの場合)
インストールの手順ですが、大前提としてDockerが動く必要があります。
Windows版はDocker Desktopを入れておけば良いので、こちらから。
LLMを使ってみている人なら、OpenWebUIを試してみるのに、既に入っているのではないかいと。(うちはそうでした)
voicevox-openai-tts のインストール
まずは、git cloneでダウンロードします。C:\\ とか、適当なところで実行します。
git clone https://github.com/nichiki/voicevox-openai-tts
コピーしたフォルダに移動します。
cd voicevox-openai-tts
Docker Desktop を起動しておいて、Dockerのコンテナを追加します。
VOICEVOXをCPUで動かす場合は、
docker compose up -d
GPUにメモリの余裕があるなら、GPUを使う方がいいので、
docker compose -f docker-compose.gpu.yml up -d
これで、voicevox-openai というコンテナが追加されて、動いているはずです。で、この中身が、openai_tts_api と voicevox_engine です。
Docker Desktopの画面で確認できます。
これで準備完了です。
VOICEVOXを使う設定
で、最初に紹介した記事には、OpenWebUIとSillyTavernでの設定のやり方が書かれていますが、記事はLinuxサーバの環境のせいなのかなんなのか、その通りでは動きませんでした。ここから解決した結果を書きます。
どの声を使うかは、ID番号で指定するので、つぎのURLで確認しておきます。
http://localhost:50021/speakers

例えば、IDを4にすると、四国めたんのセクシーになります。
ここも参考になります。
まずは、OpenWebUIで試してみます。
OpenWebUIの設定
設定 → 管理者設定 → オーディオ に進みます。
そして、

テキスト音声変換エンジンを「OpenAI」に
その下の、APIのアドレスに「http://host.docker.internal:8000/v1」です。
上の記事では、例として、http://localhost:8000/v1 と書かれてますが、これでは動きませんでした。声のIDの確認はlocalhostで表示されるのに、APIは動きません。これに気づくまで、ドハマりしました。
右のKeyは関係ないので、適当に何か入れておいてください。何か入れないと設定が保存できません。
TTSボイスは「4」とか、声のIDを入れます。TTSモデルは「tts-1」のままでよいです。
今度は、設定 → オーディオ から、

TTS設定を、応答の自動再生を「オン」にすれば、LLMの回答をVOICEVOXが音声で読み上げてくれます。
SillyTavernの設定
拡張機能から、TTSのメニューを開きます。

Select TTS Providerを「OpenAI Compatible」にして、
EnabledとAuto Generationのチェックボックスをチェックします。
あとは、好みに合わせてチェックします。
そしてProvider Endpointを「http://host.docker.internal:8000/v1/audio/speech」とします。
ここもhttpl://localhost:8000/v1/audio/speechでは動きませんでした。
大体、SillyTavern自体が、httpl://localhost:8000/(http://127.0.0.1:8000/)で動いているのに、どういうこと?とは思っていましたが。
Model:は「tts-1」のままで。
Available Voicesは、今後使いそうなIDをカンマで並べておきます。そうすると、キャラクターの設定のときに、リストで表示されます。
次にキャラクターとのチャットを表示した状態で拡張機能を選択します。

Default Voiceと、自分の設定した名前と、キャラクターの名前が出てきます。
ここに、それぞれの声のIDを振ればいいですが、自分のコメントは読まない設定にしているので、デフォルトだけ設定しておけば、キャラがその音声でしゃべります。
もちろん、キャラにそれぞれIDを設定しておけば、キャラごとに設定できます。
ちなみに、20は「もち子ノーマル」です。
音声のデモはこちらで聞けます。
これで、チャット画面でどんどんしゃべってくれます。
ただし、毎回SillyTavernの起動のときには、Dockerも起動しないといけないことと、なんだかんだでVRAMを取り合いになるので、でかいLLMはきびしくなります。
ではまた。
