見出し画像

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はきびしくなります。



ではまた。

いいなと思ったら応援しよう!