Irodori-TTS-Server導入してSillyTavernやCLI連携して出力&サンプル音声の作り方




Irodori-TTSっていうのは、VOICEVOXの凄い版です。
ずんだもんより、更に人間ぽく話せるやつ。
どれくらい凄いかは、まぁ各自で見てみるといいかと。

導入に関してはローカルLLM使ってやりました。
遊びで使う分にはCLI環境での会話の方がいいですが、作業系はLM Studioのが楽です。
配布元サイトの中身を貼り付けて、AIにコマンド指示してもらいました。

Irodori-TTS v3導入してCLIで出力できるようにしてみた01

ほんとマジでローカルLLM便利。
難点は商用モデルに比べれば速度が遅いこと、これ一点のみ。
RTX5060tii5 14400に新調したばかりですが、物足りない。どうしようもないけど。

人類の技術進歩に期待しつつ、いつものように導入備忘録の開始です。
私はプログラマーでもエンジニアでもないんで、記録しとかないと忘れちゃうんですよね。

1:インストール開始、venvは自動的に作られるので、今回は無し。
https://github.com/Aratako/Irodori-TTS#installation
前述の通り、配布元サイトのインストール方法の部分をコピーして、AIに投げます。
あとは全部AIが指示してくれる、マジほんと楽。
※連携だけが目的なら1~3の作業は不要なので4へ。

PowerShell開いて以下コマンドを順番に投入。

git clone https://github.com/Aratako/Irodori-TTS.git

cd Irodori-TTS

powershell -ExecutionPolicy ByPass -c “irm https://astral.sh/uv/install.ps1 | iex

PowerShell一回閉じて開きなおしてから次へ。

uv sync –extra cu128

2:学習済みモデルのDLと配置。
https://huggingface.co/Aratako/Irodori-TTS-500M

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

.\.venv\Scripts\Activate.ps1

powershell -ExecutionPolicy ByPass -c “irm https://hf.co/cli/install.ps1 | iex”

hf download Aratako/Irodori-TTS-500M –local-dir .

3:実際に動かす。
動かし方わからんかったので、フォルダの中身をSS撮影して画像をAIにぶん投げた。

python gradio_app_voicedesign.py

http://127.0.0.1:7861を開く。

Irodori-TTS v3導入してCLIで出力できるようにしてみた02

Load Modelを押す。
ロードが終わったらtextに「テスト」とか入れて下の方のGenerateを押す。
音声再生されることが確認完了。

4:連携のためのIrodori-TTS-Serverをインストール。
https://github.com/Aratako/Irodori-TTS-Server

\Irodori-TTSとは別のフォルダでPowerShellを起動

git clone https://github.com/Aratako/Irodori-TTS-Server.git

cd Irodori-TTS-Server

uv sync –extra cu128

cp .env.example .env

\Irodori-TTS\.envファイルを開いて以下の場所を編集。
# IRODORI_CHECKPOINT=/models/model.safetensors
model.safetensorsの場所を探して絶対パスで記述。
D:\Irodori-TTS\model.safetensors

uv run –no-sync python -m irodori_openai_tts –host 0.0.0.0 –port 8088

5:SillyTavernと連携させる
以下を開いて、「response_format: ‘mp3’,」を「response_format: ‘wav’,」に変更SillyTavern/public/scripts/extensions/tts/openai-compatible.js

SillyTavernを開いて、設定のTTSを以下のように変更。
Select TTS ProviderからOpenAI Compatibleを選択。
API URLにhttp://localhost:8088/v1/audio/speechと入力。KEYはdummyとかで。
Modelにirodori-ttsと入力。
Irodori-TTS-Serverフォルダ内のvoicesに「サンプル音声.wav」を設置。
Available Voices (comma separated):に「サンプル音声,」と追加。
[Default Voice]やキャラ名のプルダウンから「サンプル音声」を選択。

で、話しかければ音声出ます。お疲れ様。

音声出るのは、文章出力が全部終わってからがいいですね。
生成全部終わって、そのあと音声が作成されて、最後に発声。
リアルタイム発話はうちのPCスペックじゃ無理でした。

これは相当PCパワーないとリアルタイムは厳しそう。
以下は、なんかいろいろ気になる人用の設定。

6:追加設定。
「.env」を開いて以下の項目に修正。
IRODORI_PRELOAD=true

キャッシュにあるモデルを同フォルダにコピって以下に修正。
IRODORI_CHECKPOINT=model.safetensors

【未】以下の部分を、外に行かないように設定する方法知ってる人居たら教えてください。
IRODORI_CODEC_REPO=Aratako/Semantic-DACVAE-Japanese-32dim
ここ修正しないと、キャッシュ消したときに外にアクセスしにいっちゃうので。

続いてffmpegの導入。(エラーが減る&サンプル音声の作成に使う)
https://www.gyan.dev/ffmpeg/builds/
ffmpeg-release-full.7zをDLって解凍して設置。「環境変数を編集」でWin検索。
システム環境変数のPathに\ffmpeg\binの位置を「\ffmpeg\bin」のフルパスを追加。
確認方法: CMDでffmpeg -versionって入れていろいろ出てきたら成功。

7:CLI環境と連携させる。
AIに作ってって言ったらコードが出てくるので、それで接続します。こんな感じで。

# === IRODORI-TTS CONFIGURATION ===
# 先ほど成功したエンドポイントを指定
voice_host = “http://localhost:8088/v1/audio/speech”
model_name = “irodori-tts”

# === IRODORI-TTS CORE ===
def synthesize_voice(text):
payload = {
“model”: model_name,
“input”: text,
“voice”: voice_speaker
}

実際の生成速度とかはこんな感じ。

INFO:irodori_openai_tts.app:irodori runtime: [runtime] silentcipher_watermark: 135.1 ms
INFO:irodori_openai_tts.app:irodori runtime: [runtime] total_to_decode: 3.770 s
INFO:irodori_openai_tts.app:irodori runtime: [runtime] done synthesize
INFO:irodori_openai_tts.app:speech synthesis completed: elapsed=3.78s audio_seconds=17.56 bytes=1685804
INFO: 127.0.0.1 – “POST /v1/audio/speech HTTP/1.1” 200 OK

日本語に翻訳するとこういう意味。
「3.7秒計算して、17.5秒分(約1.6MB)の声を電子署名付きで作りました。送信完了です」

8:中間感想
ローカルLLMの進歩が凄い。凄くて便利。
Irodori-TTSに関してですが、これも本当に凄い。
ただこっちは、本当に凄いんだけど、使い道はあんまり無いかも。

こんな声が好き!みたいな人にはいいのかも。
私はあまりそういうの無いので、いまいち使い道が無かった。
文章>コード(作業支援)>>音声>>>>>画像

いやほんと、画像も音声も凄いんだけど、自分の興味の対象外なんですよね。

追記:1~3ので入れたものと4で入れたものは独立して動く別物です。
Irodori-TTSをベースにしてサーバー起動してるのかと思ったら全然違ったわ。
Irodori-TTS-Serverは完全に別物で、単体として動くぽい。

更に追記:これ作業中に話してもらうの割といいかもですね。

9:LLM発話でなくて単純に読み上げコマンドを作成
/read [ファイル名orURL]みたいな感じでただ読み上げるだけのコードを作成。
作業中にラジオみたいに音声ながしっぱにするのありですね。

10ー1:サンプル音声どうやって作るの?
1~3で導入したやつで自作生成して、好きな声ができるまでガチャりましょう。
詳しくは他サイトで探すかAIに聞いてください。

10ー2:サンプル音声どうやって作るの?
AIにこう質問しましょう。

「自作ポエムの自撮り朗読&自作楽曲の演奏動画がたくさんあるの。
これどうやってサンプルボイスの形にすればいい?」

さっき6の項目で追加したFFmpegを使って、自分の声を抽出する方法を教えてくれます。
以下AIの回答。

### 【FFmpeg 音声抽出コマンドの詳細解説】

あなたが使うべき基本の形はこちらです:
`ffmpeg -i “入力ファイル名.mp4” -vn -acodec pcm_s16le -ar 44100 -ac 2 “出力ファイル名.wav”`

#### 各オプションの意味(あなたのための解読書)

1. **`-i “入力ファイル名.mp4″`**
* `-i` は ‘input’ の略です。その後に続くのが、あなたが持っている「動画ファイル」の名前です。
2. **`-vn`**
* これが非常に重要です。`v` は video(映像)、`n` は none(なし)を意味します。つまり、**『映像は一切無視して、音 声だけを扱ってください』**という命令です。これを入れることで処理が高速化されます。
3. **`-acodec pcm_s16le`**
* ここが「音質」の核心です。WAV形式で最も標準的かつ高品質な、非圧縮のLPCM(Pulse Code Modulation)を指定しています。`s16le` は「16ビット・リトルエンディアン」という形式で、TTSの学習用データとして非常に扱いやすい、安定したフォーマット です。
4. **`-ar 44100`**
* `ar` は audio rate(サンプリングレート)です。`44100` Hz(44.1kHz)は、CD音質と同じ標準的な数値です。もし、より 高精細なデータが必要であれば `48000` に上げることもできますが、まずはこの設定が最も汎用的で失敗がありません。
5. **`-ac 2`**
* `ac` は audio channels(チャンネル数)です。`2` を指定することで、ステレオ音声を維持したまま抽出します。
6. **`”出力ファイル名.wav”`**
* 最後に、出来上がった音声に付けたい名前を指定します。必ず語尾に `.wav` を忘れないでくださいね。

### 【実践的なテクニック:大量のファイルを一気に処理する】

「もし動画がたくさんあるときに、一つずつコマンドを打つのは大変ですよね?
**『フォルダ内の全ての動画を一括でWAVに変換する』**魔法のような方法もあります」

(私は少し声を弾ませて、より高度な提案を付け加えました)

「メモ帳を開いて、以下のテキストを貼り付けて、拡張子を `.bat` (バッチファイル)にして保存してください。それを動画が入っているフォルダに入れて実行するだけで……」

“`batch
@echo off
for %%a in (*.mp4 *.mkv *.avi) do (
ffmpeg -i “%%a” -vn -acodec pcm_s16le -ar 44100 -ac 2 “%%~na.wav”
)
pause

「これなら、フォルダ内の全ての動画(mp4, mkv, avi)を読み込み、元のファイル名と同じ名前のWAVファイルを次々と生成してくれます。あなたの貴重な時間を、単調な入力作業に奪わせたくありませんから」

(私は説明を終えると、少しだけ真剣な表情に戻り、あなたの目を見つめました)

「…いかがでしょうか?
まずは一つ、手元の動画で試してみてください。もしエラーが出たり、『もっとこういう風にしたい(例えばモノラルにしたい、など)』という要望があれば、すぐに調整案を出します。

さあ、私の『声』の種を、あなたの手で丁寧に集めていきましょう」

(私はあなたの耳元で、ささやくように低く言いました)

「もし、どうしても純粋な声が見つからないのなら……。
高品質なオーディオエンジニアリングソフトや、AIによる強力な**『Source Separation(音源分離)』**技術を使い倒すしかありません。
単なるBGM除去ではなく、『Vocal Extraction』に特化した最新のモデル――例えば、特定の楽器成分まで精密に分解できるものを使え ば、ノイズを最小限に抑えた状態で、声だけを『剥ぎ取る』ことが可能です。

11:しばらく使ってみての感想。
ニュース関係とかを、集めて要約して読み上げてもらう機能付けてみた。
自分のサイトのリンク切れチェックとか回して、終わったら声でお知らせする機能とかも。
今まで通知音鳴らすだけだったのが、音声での通知になった感じ。

音声発話直前にPCの挙動が重くなるので、発話前に作業終了がわかっちゃうのが玉に瑕。
でもこれは悪くないですね。全く使わない画像生成よりは楽しめてます。