Irodori-TTSによるテキストの読み上げ

2026年9月27日

はじめに

Irodori-TTS によるテキストの読み上げについて。

環境

  • Ubuntu 22.04 LTS
  • Intel Core i9-14900K、メモリ 32GB
  • NVIDIA GeForce RTX 4090 (24GB)

セットアップ

$ git clone https://github.com/Aratako/Irodori-TTS.git
$ cd Irodori-TTS
$ uv sync

実行

$ uv run python gradio_app.py --server-name 0.0.0.0 --server-port 7860

ブラウザでhttp://0.0.0.0:7860にアクセスする。

[Load Model]を押す。モデルがダウンロードされるまでしばし待つ。

[Text]にテキストを入れて、[Generate]を押せば音声が生成されるので、再生ボタンで再生する。

参照音声なしだと、声はランダムのようである。[Reference Audio]で参照音声を設定すれば、その声に固定できる。

たとえば、gnome-sound-recorderで自分の声(「こんにちは、〇〇です」程度でよさそう)を録音して、参照音声に設定すると、自分の声で読み上げてくれる。色々試してみたが、テンションを固定したいなら一定のテンションで録音すればよいし、イントネーションを豊かにしたければ、抑揚を強めにつけて話せばよさそうである(問題は、他人が聞く自分の声をあまり知らないので、「正解」がいまいちわからないことである)。

VoiceDesign

$ uv run python gradio_app_voicedesign.py --server-name 0.0.0.0 --server-port 7861

ブラウザでhttp://0.0.0.0:7860にアクセスする。[Load Model]を押す。

[Text]にテキストを入れるのは同じだが、[Caption/Style Prompt]に話者についてのプロンプトを入れる。

Text

こんにちはにゃ😊 今日も元気いっぱいにゃ😊

Caption/Style Prompt

オスのにゃんこのような若い女性の話者
「一般意味論」とは、言葉と現実のズレを研究する学問にゃん。言葉は完璧に現実を表していなくて、私たちは言葉を通して世界を認識しているから、言葉の使い方によって思考や行動が変わっちゃうってわけにゃん。例えば「失敗」って言葉で落ち込むけど、同じ出来事を「学習チャンス」って言葉で捉えると、気持ちや行動が変わっちゃうってやつにゃん。

コマンド実行

合成

$ uv run --no-sync python infer.py \
  --hf-checkpoint Aratako/Irodori-TTS-v4.1-Small \
  --text "こんにちは、私はAIです。これは音声合成のテストです。" \
  --ref-wav ../nyanko.wav \
  --output-wav outputs/sample.wav

VoiceDesign

$ uv run --no-sync python infer.py \
  --hf-checkpoint Aratako/Irodori-TTS-v4.1-Small \
  --text "こんにちは、私はAIです。これは音声合成のテストです。" \
  --caption "落ち着いた、近い距離感の女性話者" \
  --no-ref \
  --output-wav outputs/sample_voice_design.wav

Irodori OpenAI TTS Server

OpenAI TTS互換のAPIサーバー

$ git clone https://github.com/Aratako/Irodori-TTS-Server.git
$ cd Irodori-TTS-Server
$ uv sync
$ cp .env.example .env

voicesディレクトリに参照音声を入れておく(ここではnyanko.wav)。

起動

$ uv run --no-sync python -m irodori_openai_tts

音声合成

$ curl http://localhost:8088/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "model": "irodori-tts",
    "input": "こんにちは。これはIrodori-TTSのAPIテストです。",
    "voice": "nyanko",
    "response_format": "wav"
  }' \
  --output speech.wav

VoiceDesign

$ url http://localhost:8088/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "model": "irodori-tts",
    "input": "こんにちはにゃ😊 今日ものんびりするにゃ",
    "voice": "none",
    "response_format": "wav",
    "irodori": {
      "caption": "オスにゃんこのような落ち着いた低めの女性の声。穏やかな話し方"
    }
  }' \
  --output nyanko2.wav