個人的な日本語ローカルLLM関連のメモ用Wikiです。一般の方は編集できません。

×

・はじめに

OpenWebUIやSillyTavernでLLMからの応答を読み上げてほしい人は、結構居ると思います。
この際、問題になるのがOpenWebUIやSillyTavernといった海外製のフロントエンドでは、日本でよく使われているTTSエンジンのVOICEVOXなどのAPIには対応していない、という点です。

そこで、VOICEVOXなどのAPIをOpenAIのTTS API仕様に変換するソフトウェアを使います。
VOICEVOXのAPIをOpenAIのTTS API仕様に変換する。
上記のfork版。VOICEVOXに加え、AivisSpeechにも対応している。

今回はAivisSpeechも使ってみたいので、fork版のnichiki/voicevox-openを使わせてもらいます。


合成音声モデルの規約によっては、利用、表現を制限しているものもあります。(例えば性的な利用不可、政治目的不可など)
規約をよく読んで、規約を守って利用しましょう。

編集履歴:
SillyTavern VOICEVOXとAPI接続で、しゃべるLLMを構築 OpenWebUIでもの記事からローカル環境でのURL例を記載

・インストール(Docker)

Linuxサーバーにインストールします。
Docker、Docker Composeをインストールしたものとして進めます。

このページではCPU版を動かしてみますが、GPU版を動かす方はNVIDIA製のGPU、GPUドライバのインストールなどが必要です。
git clone https://github.com/nichiki/voicevox-openai-tts
cd voicevox-openai-tts

AivisSpeechの音声合成モデル追加先ディレクトリを作成します。
mkdir -m 755 AivisSpeech-Engine

AivisSpeechの「「docker-compose.aivis-speech.yml」を一部、編集します。
9行目あたりに、AivisSpeechの音声合成モデルを追加するために以下の通りに記載します。
    volumes:
      - ./AivisSpeech-Engine:/home/user/.local/share/AivisSpeech-Engine-Dev

・VOICEVOXを使う

# VOICEVOX(CPU)
docker compose up -d
上記のコマンドでコンテナが立ち上がります。
・OpenWebUIでの設定など

「管理者設定」から「オーディオ」を開いて、「Text-to-Speech」の「テキスト音声変換エンジン」を「OpenAI」に、「APIベースURL」を下記の通りに入力します。
http://{サーバーのアドレス}:{Port}/v1
# 例:http://localhost:8000/v1
# ローカル環境なら:http://host.docker.internal:8000/v1
アドレスの末尾に「/v1」を忘れずに記載しましょう。
「API key」は何も入力しないと、OpenWebUIの設定を保存できないのでなんでも良いので入力します。
「TTSモデル」はデフォルトのままで大丈夫です。
「TTSボイス」については、下記のURLにアクセスして各モデル、ボイスタイプのスピーカーIDの値を確認の上、入力して設定を保存します。(ずんだもん、ノーマルなら”3”など)
http://{サーバーのアドレス}:50021/speakers
参考:VOICEVOXを用いた開発メモ (https://zenn.dev/naoya_tech/scraps/df2ca4c264af8f)
・SillyTavernでの設定など

SillyTavernの拡張機能タブを開いて、「TTS」の項目を開きます。
「Select TTS Provider」から「OpenAI Compatible」を選択して「Provider Endpoint:」に下記の通りに入力します。
http://{サーバーのアドレス}:{Port}/v1/audio/speech
# 例:http://localhost:8000/v1/audio/speech
# ローカル環境なら:http://host.docker.internal:8000/v1/audio/speech
[Model:]はデフォルトのままで大丈夫です。
「Available Voices (comma separated) (利用可能な音声(カンマ区切り))」に、下記のURLにアクセスして各モデル、ボイスタイプのスピーカーIDの値を確認の上、入力します。(ずんだもんなら、「3,1,7,5」(ノーマル,あまあま,ツンツン,セクシー)…など)
http://{サーバーのアドレス}:50021/speakers
ここまで設定したら一旦、SillyTavernのページを再読み込みします。
SillyTavernのキャラクターカードを選択してチャット画面に入ってからもう一度、SillyTavernの拡張機能タブを開いて、「TTS」の項目を開きます。


ユーザーやキャラクターに対して、ボイスタイプの指定ができます。
「Available voices」からボイステストを行えます。

そのほかのTTS設定など
  • 「Enabled」(有効化するかどうか)
  • 「Narrate user messages」(ユーザーメッセージをナレーション,ユーザーの入力したテキストを読み上げるかどうか)
  • 「Auto Generation」(自動生成,有効なら自動的に読み上げる)
  • 「Narrate by paragraphs (when streaming)」(段落ごとにナレーション(ストリーミング時))
  • 「Narrate by paragraphs (when not streaming)」(段落ごとにナレーション(ストリーミング時以外))
  • 「Only narrate "quotes"」(「引用符」のみをナレーション,キャラのセリフ部分だけを読み上げるかどうか)
  • 「Ignore text, even "quotes", inside asterisks」(*アスタリスク内のテキスト*(「引用符」も含む)を無視, 地の文を読み上げない)
  • 「Narrate only the translated text」(翻訳されたテキストのみを読み上げる)
  • 「Skip codeblocks」(コードブロックをスキップする)
  • 「Skip <tagged> blocks」(<tagged> ブロックをスキップする)
  • 「Pass Asterisks to TTS Engine」(アスタリスクをTTSエンジンに渡す, 地の文も読み上げる)

・AivisSpeechを使う


# AivisSpeech(Docker実行)
docker compose -f docker-compose.aivis-speech.yml up -d
上記のコマンドでコンテナが立ち上がります。

基本的な使い方、設定はVOICEVOXの方と同じですが、スピーカーIDを確認する際は下記のURLにアクセスして確認します。
http://{サーバーのアドレス}:10101/speakers
また、AivisHub(https://hub.aivis-project.com/)から合成音声モデルファイルをダウンロードした際は、インストール時に作成したAivisSpeechの音声合成モデル追加先ディレクトリに、音声合成モデルファイル (AIVMX 形式)を置けば上記のURLにスピーカーIDが出てくるはずです。

個人的なメモ

・Irodori-TTS-v2をOpenAI互換TTS APIにする

【TTS】Irodori-TTS-v2の簡単な使い方などページの「IrodoriTTSのOpenAI API互換ラッパーソフトを使ってSillyTavernでTTSしてみる」をご覧ください。

管理人/副管理人のみ編集できます

広告募集中