権利的に明らかにクリーンな音声以外を参照音声として使うのはやめましょう。
例えば有名人、政治家、アイドルなどの音声を使うのは絶対にやめましょう。
この記事では、参照音声にVoicevoxの「中国うさぎ」のボイスを利用させてもらいます。
・VOICEVOX ずんだもん、東北ずん子、東北きりたん、東北イタコ、四国めたん、九州そら、中国うさぎ、中部つるぎ音源利用規約
合成音声モデルの規約によっては、利用、表現を制限しているものもあります。(例えば性的な利用不可、政治目的不可など)
規約をよく読んで、規約を守って利用しましょう。
- ・はじめに / 大事なこと
- ・Irodori-TTS-v3ってなに?
- ・LinuxにDockerでインストール
- ・「python gradio_app.py」(「Base model」Aratako/Irodori-TTS-500M-v3)のWebUI
- ・「gradio_app_voicedesign.py」(「VoiceDesign model」Aratako/Irodori-TTS-600M-v3-VoiceDesign)のWebUI
- ・絵文字での感情表現について
- ・Irodori-TTSのOpenAI TTS API互換サーバーを使ってSillyTavernでTTSしてみる
- ・Citation
https://huggingface.co/Aratako/Irodori-TTS-600M-v3...
T5Gemma-TTSの作者、@Aratako_LMさんが作った絵文字によって声の感情表現に対応している日本語テキスト音声合成モデル、Irodori-TTSの最新版
※対応絵文字についてはこちらのページをご覧ください
Irodori-TTS-v2がリファレンス音声によるボイスクローニングに対応した「Base model」(Aratako/Irodori-TTS-500M-v2)とボイスクローニング不可だがキャプションによるボイスデザインが可能な「VoiceDesign model」(Aratako/Irodori-TTS-500M-v2-VoiceDesign)の2つだったのが、リファレンス音声によるボイスクローニングに対応した「Base model」(Aratako/Irodori-TTS-500M-v3)とボイスクローニング対応かつ、キャプションによるボイスデザインが可能な「VoiceDesign model」(Aratako/Irodori-TTS-600M-v3-VoiceDesign)になった。
T5Gemma-TTSの作者、@Aratako_LMさんが作った絵文字によって声の感情表現に対応している日本語テキスト音声合成モデル、Irodori-TTSの最新版
※対応絵文字についてはこちらのページをご覧ください
Irodori-TTS-v2がリファレンス音声によるボイスクローニングに対応した「Base model」(Aratako/Irodori-TTS-500M-v2)とボイスクローニング不可だがキャプションによるボイスデザインが可能な「VoiceDesign model」(Aratako/Irodori-TTS-500M-v2-VoiceDesign)の2つだったのが、リファレンス音声によるボイスクローニングに対応した「Base model」(Aratako/Irodori-TTS-500M-v3)とボイスクローニング対応かつ、キャプションによるボイスデザインが可能な「VoiceDesign model」(Aratako/Irodori-TTS-600M-v3-VoiceDesign)になった。
DockerやDocker Composeなどはインストール済みとして進めます。
Dockerあんまり詳しくないので無駄にデカいイメージ使ってたりいらないコマンドとか入ってるかもと思いますが生暖かい目で見逃してください。
※NVIDIA製GPUを載せたPC向けのDockerfile、docker-compose.ymlです。
Dockerあんまり詳しくないので無駄にデカいイメージ使ってたりいらないコマンドとか入ってるかもと思いますが生暖かい目で見逃してください。
※NVIDIA製GPUを載せたPC向けのDockerfile、docker-compose.ymlです。

「Text」欄に生成したい音声のテキストを入力します。(例えば"こんばんは。"など...)
「Emoji Palette」から対応絵文字を選択、入力できます。
ボイスクローニング機能を使う際はリファレンス音声を「Reference Audio Upload」からアップロードします。
ボイスクローニング機能を使わない場合はそのままで大丈夫です。

サンプリング設定などです。
- 「Num Steps」
ステップ数です。大きいいほど高品質ですが生成が遅くなります。
低ステップにすることで生成が高速になりますが音質は低下します。
- 「Num Candidates」
一度に生成する音声の数を増やせます。(シード値のみ違う)
- 「Seed」
生成に使用するシード値を指定できます。
シード値を固定して入力テキストの絵文字の有無のみを変えて結果を比較したするのに使えます。
- 「Duration Scale」
自動推定された長さに掛ける倍率です。
例えば1.2でゆっくりめ、0.9でやや短くなります。
- 「CFG Guidance Mode」
「independent」(独立)、「joint」(結合)、「alternating」(交互)から選択します。
- 「CFG Scale Text」
値を大きくするほど入力テキストが「強く」反映され、入力テキストにより忠実になりますが不自然、無感情になりやすくなります。
値を下げると自然な発音になりやすいですが、入力テキストが無視されやすくなります。
- 「CFG Scale Speaker」
値を大きくするほど参照音声が「強く」反映されますが、大きすぎると声が「硬い」ものになります。
【TTS】T5Gemma-TTSの簡単な使い方など/・リファレンス(参照)音声ありで生成してみる。のページで使ったVoicevoxの「中国うさぎ」のボイスをクローニングしてみます。
↓Voicevoxで出力したボイス(「おはようございます。」)
音声ファイルへのリンク
↓Irodori-TTS-500M-v3で「Reference Audio」Voicevoxで出力した上のボイスを、「Text」に「こんにちは、私はAIです。これは音声合成のテストです。」で生成してみた結果です。
音声ファイルへのリンク
↓ちなみにIrodori-TTS-v2で同様にクローニングした際の音声です。
音声ファイルへのリンク
↓Voicevoxで出力したボイス(「おはようございます。」)
音声ファイルへのリンク
↓Irodori-TTS-500M-v3で「Reference Audio」Voicevoxで出力した上のボイスを、「Text」に「こんにちは、私はAIです。これは音声合成のテストです。」で生成してみた結果です。
音声ファイルへのリンク
↓ちなみにIrodori-TTS-v2で同様にクローニングした際の音声です。
音声ファイルへのリンク

「Text」欄に生成したい音声のテキストを入力します。(例えば"こんばんは。"など...)
「Emoji Palette」から対応絵文字を選択、入力できます。

「Caption / Style Prompt (optional)」に声の特徴や読み上げ方など(※)のキャプションを入力します。(オプション)
(※)感情/話し方など (例:楽しげに喋っている, 悲しげにぼそぼそと話している)
ボイスクローニング機能を使う際はリファレンス音声を「Reference Audio Upload」からアップロードします。

サンプリング設定などです。
- 「Num Steps」
ステップ数です。大きいいほど高品質ですが生成が遅くなります。
低ステップにすることで生成が高速になりますが音質は低下します。
- 「Num Candidates」
一度に生成する音声の数を増やせます。(シード値のみ違う)
- 「Seed」
生成に使用するシード値を指定できます。
シード値を固定して入力テキストの絵文字の有無のみを変えて結果を比較したするのに使えます。
- 「Duration Scale」
自動推定された長さに掛ける倍率です。
例えば1.2でゆっくりめ、0.9でやや短くなります。
- 「CFG Guidance Mode」
「independent」(独立)、「joint」(結合)、「alternating」(交互)から選択します。
- 「CFG Scale Text」
値を大きくするほど入力テキストが「強く」反映され、入力テキストにより忠実になりますが不自然、無感情になりやすくなります。
値を下げると自然な発音になりやすいですが、入力テキストが無視されやすくなります。
- 「CFG Scale Speaker」
値を大きくするほど参照音声が「強く」反映されますが、大きすぎると声が「硬い」ものになります。
【TTS】T5Gemma-TTSの簡単な使い方など/・リファレンス(参照)音声ありで生成してみる。のページで使ったVoicevoxの「中国うさぎ」のボイスをクローニングしてみます。
↓Voicevoxで出力したボイス(「おはようございます。」)
音声ファイルへのリンク
↓Irodori-TTS-600M-v3-VoiceDesignで「Reference Audio」Voicevoxで出力した上のボイスを、「Text」に「こんにちは、私はAIです。これは音声合成のテストです。」、キャプションに「楽しそうにハキハキと喋っている。」で生成してみた結果です。
音声ファイルへのリンク
↓参考に、Irodori-TTS-500M-v3で「Reference Audio」Voicevoxで出力した上のボイスを、「Text」に「こんにちは、私はAIです。これは音声合成のテストです。」で生成してみた結果です。
音声ファイルへのリンク
↓Voicevoxで出力したボイス(「おはようございます。」)
音声ファイルへのリンク
↓Irodori-TTS-600M-v3-VoiceDesignで「Reference Audio」Voicevoxで出力した上のボイスを、「Text」に「こんにちは、私はAIです。これは音声合成のテストです。」、キャプションに「楽しそうにハキハキと喋っている。」で生成してみた結果です。
音声ファイルへのリンク
↓参考に、Irodori-TTS-500M-v3で「Reference Audio」Voicevoxで出力した上のボイスを、「Text」に「こんにちは、私はAIです。これは音声合成のテストです。」で生成してみた結果です。
音声ファイルへのリンク
Irodori-TTS-500M-v3 / EMOJI_ANNOTATIONS.mdから対応絵文字をご覧ください。
キャプションではなく、入力テキスト欄に配置する必要がある(?)
テキストの前に絵文字を配置するのが良いかも?
キャプションではなく、入力テキスト欄に配置する必要がある(?)
テキストの前に絵文字を配置するのが良いかも?
上記のソフトウェアを利用させてもらい、SillyTavernでTTSしてみます。
DockerやDocker Composeなどはインストール済みとして進めます。
起動したら「Irodori-TTS-Server」ディレクトリ内の「voices」ディレクトリに参照用の音声ファイルを置きます。
※ファイル名がそのままスピーカーIDになるので長い場合は変更しておいた方が良いかと
今回は参照音声に「001_中国うさぎ(ノーマル)_おはようございます。.wav」を「voices」ディレクトリに入れました。
この場合だとidは「001_中国うさぎ(ノーマル)_おはようございます。」になります。
Aratako / Irodori-TTS-ServerとSillyTavernでそのままTTSさせようとするとエラーが出てTTSが出来ませんのでSillyTavern側のファイルを修正します。

SillyTavernの拡張機能タブを開いて、「TTS」の項目を開きます。
「Select TTS Provider」から「OpenAI Compatible」を選択して「Provider Endpoint:」に下記の通りに入力します。
Portは弄ってなければ「8088」がデフォルトです。

「Model: 」に「irodori-tts」と入力します。
「Available Voices (comma separated):」に先ほど確認したidを「,」区切りで入力します。(例:「001_中国うさぎ(ノーマル)_おはようございます。,」)
あとはSillyTavernのキャラカードを開いて、そのキャラクターにVoices(id)を割り当てればOKです。
その他のSillyTavernのTTS拡張機能の詳細はVOICEVOXなどをOpenAI互換TTS APIにしてAIに喋らせる / SillyTavernでの設定などページをご覧ください。
DockerやDocker Composeなどはインストール済みとして進めます。
# リポジトリをクローン&ディレクトリ移動 git clone https://github.com/Aratako/Irodori-TTS-Server.git cd Irodori-TTS-Server # 環境変数を設定 cp .env.example .env
# ビルド・起動 docker compose up -d
起動したら「Irodori-TTS-Server」ディレクトリ内の「voices」ディレクトリに参照用の音声ファイルを置きます。
※ファイル名がそのままスピーカーIDになるので長い場合は変更しておいた方が良いかと
今回は参照音声に「001_中国うさぎ(ノーマル)_おはようございます。.wav」を「voices」ディレクトリに入れました。
この場合だとidは「001_中国うさぎ(ノーマル)_おはようございます。」になります。
Aratako / Irodori-TTS-ServerとSillyTavernでそのままTTSさせようとするとエラーが出てTTSが出来ませんのでSillyTavern側のファイルを修正します。
SillyTavern/public/scripts/extensions/tts/openai-compatible.jsをテキストエディタで開き、169行目の「response_format: 'mp3',」を「response_format: 'wav',」に変更、保存します。

SillyTavernの拡張機能タブを開いて、「TTS」の項目を開きます。
「Select TTS Provider」から「OpenAI Compatible」を選択して「Provider Endpoint:」に下記の通りに入力します。
Portは弄ってなければ「8088」がデフォルトです。
http://{サーバーのアドレス}:{Port}/v1/audio/speech
# 例:http://localhost:8088/v1/audio/speech
# ローカル環境なら:http://host.docker.internal:8088/v1/audio/speech

「Model: 」に「irodori-tts」と入力します。
「Available Voices (comma separated):」に先ほど確認したidを「,」区切りで入力します。(例:「001_中国うさぎ(ノーマル)_おはようございます。,」)
あとはSillyTavernのキャラカードを開いて、そのキャラクターにVoices(id)を割り当てればOKです。
その他のSillyTavernのTTS拡張機能の詳細はVOICEVOXなどをOpenAI互換TTS APIにしてAIに喋らせる / SillyTavernでの設定などページをご覧ください。