TTS Models Overview

参照元: LiveKit Agents Documentation ロードマップ: 学習ロードマップ

What(何についてか)

LiveKit Agentsの音声合成(TTS)は、LLMが生成したテキスト応答を音声に変換するパイプラインの最終段に位置するコンポーネントである。音声プロファイル(voice)で話者のトーンやアクセントを制御し、エージェントが「喋る」ための仕組みを提供する。

TTSの利用ルートは2つある。LiveKit Inference経由(API Key不要、LiveKit Cloudが管理)と、Plugin経由(自前API Key、voice clone等のカスタム機能対応)である。

Why(なぜ必要か)

エージェントの音声出力はUXに直結する。STT(聞き取り)→ LLM(思考)→ TTS(発話)というパイプラインの末尾であり、モデル選択とvoice選択がエージェントのキャラクターを決定づける。対応言語、レイテンシ、品質の3軸でプロバイダーを選ぶ必要がある。

How(どう動くか)

AgentSessiontts パラメータにモデルとvoiceを指定して渡す。Inferenceの場合は inference.TTS(model=..., voice=..., language=...) を使い、Pluginの場合は各プロバイダーのプラグインクラス(例: cartesia.TTS())を使う。

from livekit.agents import AgentSession, inference
 
session = AgentSession(
    tts=inference.TTS(
        model="cartesia/sonic-3",
        voice="9626c31c-bec5-4cca-baa8-f8ba9e84c8bc",
        language="en",
    ),
)

LiveKit Inference対応モデル

6プロバイダー、20以上のモデルがInference経由で利用できる。主要なモデルを以下に整理する。

Cartesia

Sonic系がメインラインナップ。Sonic 3は30以上の言語に対応し、最も対応言語が広い。日付付きバージョン(例: cartesia/sonic-3-2026-01-12)はスナップショットで、モデル更新による挙動変化を防ぐ用途に使う。Sonic Turboは低レイテンシ向け。

モデル名モデルID特徴
Soniccartesia/sonic14言語対応
Sonic 2cartesia/sonic-214言語対応
Sonic 3cartesia/sonic-330+言語対応、最も広い
Sonic Turbocartesia/sonic-turbo低レイテンシ、14言語

Deepgram

Aura-2が現行モデル。Aura-1はRetired。日本語対応(ja-JP)。

モデル名モデルID特徴
Aura-2deepgram/aura-2多言語、日本語対応
Aura-1deepgram/auraRetired(使用不可)

ElevenLabs

Flash / Turbo系が低レイテンシ向け、Multilingual系が多言語向け。v2.5世代から多言語対応が拡大。

モデル名モデルID特徴
Eleven Flash v2elevenlabs/eleven_flash_v2英語のみ、高速
Eleven Flash v2.5elevenlabs/eleven_flash_v2_529言語、高速
Eleven Turbo v2.5elevenlabs/eleven_turbo_v2_529言語、高速
Eleven Multilingual v2elevenlabs/eleven_multilingual_v225言語

Inworld

TTS 1系と1.5系がある。Max/Miniで品質と速度のトレードオフを選べる。

モデル名モデルID特徴
Inworld TTS 1inworld/inworld-tts-113言語
Inworld TTS 1.5 Maxinworld/inworld-tts-1.5-max高品質、13言語
Inworld TTS 1.5 Miniinworld/inworld-tts-1.5-mini軽量、13言語

Rime

Mist系のバージョン展開。Arcanaは多言語向け。

モデル名モデルID特徴
Arcanarime/arcana8言語(日本語含む)
Mist v3rime/mistv35言語

xAI

単一モデル xai/tts-1。auto-detect対応で多言語(日本語含む)。

モデル名モデルID特徴
Text to Speechxai/tts-1auto-detect、18言語

Suggested Voices

各プロバイダーから品質とパフォーマンスのバランスが良いと推奨される音声プロファイル。UI上で検索・性別フィルタ・試聴が可能。voice ID(UUID)をコピーして voice パラメータに渡す。各プロバイダーの公式ドキュメントにはより多くの音声がある。

Plugins

Inference以外に30以上のオープンソースプラグインが存在。自前のAPI Keyで直接プロバイダーに接続する。voice clone等のカスタム機能が必要な場合に利用する。Python対応数がNode.jsを大きく上回る。

Python/Node.js両対応の主要プラグイン: Cartesia, Deepgram, ElevenLabs, OpenAI, Inworld, Rime, Resemble AI, Sarvam, Neuphonic。

Standalone Usage

AgentSession のパイプライン外でTTSを単体利用できる。tts.stream() でストリームを作成し、push_text() でテキストを投入、SynthesizedAudio として音声フレームを消費する。文境界(segment boundary)のイベントも含まれるため、再生位置のトラッキングに活用できる。

tts = cartesia.TTS(model="sonic-english")
tts_stream = tts.stream()
asyncio.create_task(send_audio(tts_stream))
 
async for text in text_stream:
    tts_stream.push_text(text)
tts_stream.end_input()

LanguageCodeの正規化

すべてのTTSプラグインとInferenceは LanguageCode 型で言語を指定する。この型は複数の形式を自動的にBCP-47に正規化するため、プロバイダーごとの形式差異を気にする必要がない。

対応形式: ISO 639-1("en")、BCP-47("en-US")、ISO 639-3("eng")、言語名("english")、アンダースコア区切り("en_us""en-US")。

Pythonでは LanguageCodestr のサブクラスで、.language(ベース言語)、.region(地域サブタグ)、.iso(ISO 639-1 + 地域)のプロパティを提供する。

Custom TTS

既存のプラグインやInferenceで要件を満たせない場合、Pipeline Nodesの tts_node をオーバーライドして独自TTS実装を差し込める。

実装時の判断軸

graph TD
    A["TTS選択"] --> B{"Inference or Plugin?"}
    B -->|"手軽さ優先"| C["Inference<br/>API Key不要"]
    B -->|"カスタム音声/clone"| D["Plugin<br/>自前API Key"]
    C --> E{"対応言語・品質・レイテンシ"}
    D --> E
    E --> F["モデル決定"]
    F --> G["Voice選択<br/>Suggested Voices"]
    G --> H["LanguageCodeで言語指定"]

まずInference or Pluginを決め、次に対応言語とレイテンシの要件でモデルを絞り、最後にvoice IDで話者を決定する。言語指定はLanguageCodeが正規化するため形式を気にしなくてよい。