tktts_irodori.py ドキュメント

ライブラリの機能や目的

tktts_irodori.py は、tktts ライブラリ群の一部として、Irodori-TTSのバックエンド機能を提供します。このモジュールは、tktts_voicevox.py や tktts_qwen3.py と同様のインターフェースに準拠しており、Irodori-TTSの公式 InferenceRuntime API を直接呼び出すことで音声合成を行います。これにより、Gradio UI や HTTP サーバーを別途実行する必要がありません。

ロードされたIrodori-TTSランタイムは内部でキャッシュされ、後続のすべての音声合成リクエストで再利用されるため、効率的な処理が可能です。

テキストの分割や読み方・発音の変換は意図的に呼び出し元に委ねられており、speak_dialogue 関数は他のバックエンドと同様に tktts によって渡される置換辞書を適用するのみです。

importする方法

このライブラリを他のPythonプログラムからインポートするには、以下のように記述します。

import tktts_irodori
# または特定の関数をインポート
from tktts_irodori import speak, speak_dialogue

必要な非標準ライブラリとインストール方法

tktts_irodori.py は以下の非標準ライブラリに依存しています。

  • torch: PyTorchライブラリ。ディープラーニングモデルの実行に必要です。

  • irodori_tts: Irodori-TTSの公式ライブラリ。音声合成のコア機能を提供します。

さらに、tktts ライブラリの基本機能を提供する tktts_base.py も必要となりますが、これは tktts ライブラリファミリーの一部として提供されることが想定されています。

これらのライブラリをインストールするには、Irodori-TTSの uv 環境内で以下のコマンドを実行することが推奨されます。

uv sync --extra cu128

もし uv 環境を使用しない場合は、pip を使用して個別にインストールできます。Irodori-TTSのインストール手順については、公式ドキュメントを参照してください。通常、GPUを最大限に活用するためにCUDA対応版のPyTorchをインストールすることをお勧めします。

pip install torch irodori-tts

importできる変数と関数

変数

tktts_irodori.py でimportできる主要な定数および変数です。

  • TTS_ENGINE_NAME:

    • このTTSエンジンの名前を表す文字列です。値は "irodori" です。

  • DEFAULT_IRODORI_MODEL:

    • デフォルトで使用されるIrodori-TTSモデルのHugging FaceリポジトリIDです。値は "Aratako/Irodori-TTS-v4.1-Small" です。

  • DEFAULT_IRODORI_VOICE:

    • Irodori-TTSで使用される仮想的なデフォルトボイス名です。値は "default" です。

  • DEFAULT_CAPTION:

    • 音声合成時に使用されるデフォルトのキャプションです。これは音声のスタイルや感情を制御するために利用できます。値は "落ち着いた自然な声で、明瞭に読み上げる。" です。

  • DEFAULT_DEVICE:

    • デフォルトで使用される推論デバイスです。値は "auto" で、Irodori-TTSが利用可能な最適なデバイス(例: CUDAまたはCPU)を自動的に選択します。

  • DEFAULT_PRECISION:

    • デフォルトで使用される計算精度です。値は "auto" で、デバイスに応じて bf16 または fp32 が自動的に選択されます。

  • DEFAULT_NUM_STEPS:

    • デフォルトのサンプリングステップ数です。音声合成の品質と速度に影響を与えます。値は 40 です。

  • DEFAULT_CFG_SCALE_TEXT:

    • テキスト条件付けのデフォルトCFG(Classifier-Free Guidance)スケールです。値は 3.5 です。

  • DEFAULT_CFG_SCALE_CAPTION:

    • キャプション条件付けのデフォルトCFGスケールです。値は 3.0 です。

  • DEFAULT_CFG_SCALE_SPEAKER:

    • 話者条件付けのデフォルトCFGスケールです。値は 5.0 です。

  • DEFAULT_SEED:

    • 音声合成に使用されるデフォルトの乱数シードです。値は 0 です。

  • _AVAILABLE_VOICES:

    • Irodori-TTSが提供する仮想的な声の情報を格納する内部リストです。Irodori-TTSは固定の話者リストを持たないため、「default」という仮想エントリが定義されています。この情報は get_available_voices_info 関数で利用されます。

関数

load_model(

model_id: str = DEFAULT_IRODORI_MODEL, device: str = DEFAULT_DEVICE, precision: str = DEFAULT_PRECISION, *, codec_device: str | None = None, codec_precision: str | None = None, force_reload: bool = False, )

  • 動作: Irodori-TTSの推論ランタイムをロードし、キャッシュします。すでにロードされている場合はキャッシュされたインスタンスを再利用します。

  • 引数:

    • model_id (str): ロードするIrodori-TTSモデルのID(Hugging FaceリポジトリIDまたはローカルパス)。デフォルトは DEFAULT_IRODORI_MODEL。

    • device (str): モデルが実行されるデバイス(例: "cuda", "cpu", "auto")。デフォルトは DEFAULT_DEVICE。

    • precision (str): モデルの計算精度(例: "bf16", "fp32", "auto")。デフォルトは DEFAULT_PRECISION。

    • codec_device (str | None): コーデックが実行されるデバイス。None の場合、device に従います。

    • codec_precision (str | None): コーデックの計算精度。None の場合、precision に従います。

    • force_reload (bool): True に設定すると、既存のキャッシュされたランタイムをクリアし、強制的にモデルを再ロードします。

  • 戻り値: ロードされたIrodori-TTSの InferenceRuntime オブジェクト。

unload_models() -> None

  • 動作: Irodori-TTSによってキャッシュされたランタイムを解放し、利用可能な場合はCUDAメモリキャッシュをクリアします。

  • 引数: なし

  • 戻り値: なし

get_available_voices_info(model=None)

  • 動作: Irodori-TTSが提供する仮想的なデフォルト音声の情報を返します。Irodori-TTSは固定の話者リストを持たず、音声の同一性は参照オーディオによって、スタイルはキャプションによって制御されるため、仮想的な「default」エントリが提供されます。model 引数は tktts インターフェース互換性のために受け入れられますが、内部では使用されません。

  • 引数:

    • model: tktts インターフェース互換性のためのダミー引数。

  • 戻り値: 仮想的な音声情報を含む辞書のリスト。例: [{"name": "default", "description": "..."}]

get_available_voices(model=None)

  • 動作: tktts の音声セレクターと互換性のある音声名(仮想的なデフォルト音声名)のリストを返します。

  • 引数:

    • model: tktts インターフェース互換性のためのダミー引数。

  • 戻り値: 利用可能な音声名の文字列のリスト。例: ["default"]

list_available_voices(model=None) -> bool

  • 動作: Irodori-TTSの仮想的な音声エントリを標準出力に表示します。

  • 引数:

    • model: tktts インターフェース互換性のためのダミー引数。

  • 戻り値: 表示された音声エントリがあれば True、なければ False。

resolve_speaker_id(speaker_name, voices_info=None, model=None)

  • 動作: 与えられた話者名(例: "default", "irodori")を、Irodori-TTSの仮想的なデフォルト音声に解決します。Irodori-TTSは固定の話者を持たないため、ほとんどの入力はデフォルトに解決されます。

  • 引数:

    • speaker_name: 解決する話者の名前。

    • voices_info: 利用可能な音声情報(通常は get_available_voices_info() の結果)。None の場合は内部で取得されます。

    • model: tktts インターフェース互換性のためのダミー引数。

  • 戻り値: (voices_info, 解決された話者名) のタプル。

  • 例外: 話者が見つからない場合、ValueError を発生させます。

speak(

outfile, text, voice=DEFAULT_IRODORI_VOICE, speak_rate=None, speak_pitch=None, *, caption: str | None = DEFAULT_CAPTION, ref_wav: str | os.PathLike | None = None, ref_wavs: Iterable[str | os.PathLike] | str | None = None, model=None, model_id: str = DEFAULT_IRODORI_MODEL, device: str = DEFAULT_DEVICE, precision: str = DEFAULT_PRECISION, codec_device: str | None = None, codec_precision: str | None = None, num_steps: int = DEFAULT_NUM_STEPS, cfg_scale_text: float = DEFAULT_CFG_SCALE_TEXT, cfg_scale_caption: float = DEFAULT_CFG_SCALE_CAPTION, cfg_scale_speaker: float = DEFAULT_CFG_SCALE_SPEAKER, duration_scale: float = 1.0, seed: int | str | None = DEFAULT_SEED, lora_adapter: str | None = None, )

  • 動作: 指定されたテキストをIrodori-TTS v4.1-Smallモデルを使用して音声合成し、WAVファイルとして出力します。

  • 引数:

    • outfile: 生成されたWAVファイルの出力パス。

    • text: 読み上げるテキスト文字列。

    • voice: 使用する音声の名前。Irodori-TTSでは仮想的な "default" が主に使われます。

    • speak_rate, speak_pitch: 音声の速度とピッチ。Irodori-TTSでは直接制御できないため無視されます。

    • caption (str | None): 音声のスタイルを制御するためのキャプション。None の場合は DEFAULT_CAPTION が使用されます。

    • ref_wav (str | os.PathLike | None): 参照オーディオファイルへのパス。音声の同一性を制御するために使用されます。複数のファイルを指定することも可能です。

    • ref_wavs (Iterable[str | os.PathLike] | str | None): ref_wav と同様に参照オーディオファイルを指定します。セミコロン区切りの文字列またはパスのイテラブルとして指定できます。

    • model: 既にロードされたIrodori-TTSランタイムオブジェクト。None の場合、内部で load_model が呼び出されます。

    • model_id: モデルのID。model が None の場合に使用されます。

    • device, precision, codec_device, codec_precision: model が None の場合、load_model に渡されるデバイスと精度設定。

    • num_steps: サンプリングステップ数。

    • cfg_scale_text, cfg_scale_caption, cfg_scale_speaker: CFGスケール。

    • duration_scale: 音声の全体的な長さを調整するスケールファクター。

    • seed: 乱数シード。None の場合はランダムなシードが使用されます。

    • lora_adapter: LoRAアダプターのパスまたはID。

  • 戻り値: 生成されたWAVファイルのパス (str)。テキストが空の場合や生成に失敗した場合は None。

speak_dialogue(

dialogue, replacements, target_voices, speakers=None, temp_dir=".", outfile=None, ext="wav", cfg=None, *, caption: str | None = None, ref_wav: str | os.PathLike | None = None, ref_wavs: Iterable[str | os.PathLike] | str | None = None, model=None, model_id: str = DEFAULT_IRODORI_MODEL, device: str = DEFAULT_DEVICE, precision: str = DEFAULT_PRECISION, )

  • 動作: tktts の対話シーケンスを受け取り、各セリフをIrodori-TTSで音声合成し、一時的なWAVファイルとして出力します。この関数は、tktts_base の split_dialogue および apply_replacements と連携します。

  • 引数:

    • dialogue: 読み上げる対話シーケンスのリスト。

    • replacements: テキストに適用する置換辞書。

    • target_voices: ターゲットとなる音声(speak 関数に渡されます)。

    • speakers: 話者名の辞書。

    • temp_dir: 一時WAVファイルを保存するディレクトリ。デフォルトは "."。

    • outfile: tktts バックエンド互換性のためのダミー引数。

    • ext: 出力する一時ファイルの拡張子。デフォルトは "wav"。

    • cfg: グローバル設定オブジェクト(属性としてIrodori-TTS関連のパラメータを含むことができます)。

    • caption, ref_wav, ref_wavs: 個々の speak 呼び出しに渡されるキャプションと参照WAVファイル。None の場合、cfg から値が取得される可能性があります。

    • model, model_id, device, precision: load_model および speak に渡されるモデルとデバイス設定。

  • 戻り値: (成功フラグ: bool, 生成された一時ファイルのパスリスト: list[str]) のタプル。

main scriptとして実行したときの動作

tktts_irodori.py をメインスクリプトとして直接実行した場合(例: python tktts_irodori.py)、list_available_voices() 関数が呼び出されます。

この動作により、Irodori-TTSが提供する仮想的なデフォルト音声のエントリが標準出力に表示されます。これは、ライブラリが正しくセットアップされ、基本的な音声情報が取得できることを確認するための簡単なテストとして機能します。

=== 利用可能な irodori voices ===
  Name: default, Description: Irodori-TTS voice. Use irodori_caption and/or reference WAV files to define voice identity and speaking style.