ホーム チュートリアル カテゴリ Skills サイトについて
ZH EN JA KO
上級テクニック

OpenClaw音声合成とTTS機能の設定

· 11 分で読了

はじめに

テキストは AI インタラクションの唯一の形式ではありません。OpenClaw には音声合成(Text-to-Speech, TTS)サポートが組み込まれており、AI Agent が音声メッセージの形式でユーザーに返信できます。Telegram でボイスメッセージを送信する場合でも、Discord のボイスチャンネルで返信を読み上げる場合でも、OpenClaw はシンプルな設定で実現できます。

本記事では、TTS 機能の設定方法、サポートされるエンジン、および高度な使い方を詳しく紹介します。

TTS 機能の有効化

基本設定

openclaw.json5 で TTS を有効にします。

{
  agents: {
    "my-agent": {
      tts: {
        enabled: true,
        // TTS エンジン
        engine: "openai",
        // デフォルトのボイス
        voice: "alloy",
        // オーディオフォーマット
        format: "opus",  // opus / mp3 / aac / flac
        // 読み上げ速度(0.5-2.0)
        speed: 1.0
      }
    }
  }
}

サポートされる TTS エンジン

エンジン 特徴 設定要件
openai 高品質・多言語・低遅延 OpenAI API Key が必要
azure エンタープライズグレード・豊富なボイス選択 Azure Speech サブスクリプションが必要
elevenlabs 極めて自然・クローン対応 ElevenLabs API Key が必要
edge 無料・品質良好 追加設定不要
local オフライン動作・プライバシー重視 piper または espeak のインストールが必要

各エンジンの設定例

OpenAI TTS

{
  tts: {
    engine: "openai",
    voice: "nova",       // alloy, echo, fable, onyx, nova, shimmer
    model: "tts-1-hd",  // tts-1 (高速) または tts-1-hd (高品質)
    apiKey: "${OPENAI_API_KEY}"
  }
}

Azure TTS

{
  tts: {
    engine: "azure",
    voice: "zh-CN-XiaoxiaoNeural",  // 中国語女性ボイス
    region: "eastasia",
    subscriptionKey: "${AZURE_SPEECH_KEY}",
    // オプション:SSML 高度な制御
    ssml: {
      rate: "medium",
      pitch: "default"
    }
  }
}

ElevenLabs TTS

{
  tts: {
    engine: "elevenlabs",
    voiceId: "21m00Tcm4TlvDq8ikWAM",
    apiKey: "${ELEVENLABS_API_KEY}",
    // ボイスパラメータの調整
    stability: 0.5,
    similarityBoost: 0.75
  }
}

Edge TTS(無料)

{
  tts: {
    engine: "edge",
    voice: "zh-CN-YunxiNeural",  // 中国語男性ボイス
    // API Key 不要
  }
}

音声返信モード

OpenClaw は 3 つの音声返信モードをサポートしています。

1. 音声のみモード

AI は音声メッセージのみを送信し、テキストは送信しません。

{
  tts: {
    enabled: true,
    mode: "voice_only"
  }
}

2. 音声 + テキストモード

音声とテキストメッセージを同時に送信します。

{
  tts: {
    enabled: true,
    mode: "voice_and_text"
  }
}

3. オンデマンドトリガーモード(推奨)

デフォルトではテキストを送信し、ユーザーがコマンドで音声をリクエストできます。

{
  tts: {
    enabled: true,
    mode: "on_demand",
    // 音声をトリガーするキーワード
    triggerWords: ["音声で返信", "読み上げて", "voice"]
  }
}

ユーザーの使い方:

ユーザー: voice 今日の天気はどう?
AI: [音声メッセージを送信] 今日の東京は晴れ、気温15度から25度です...

Voice コマンドシステム

OpenClaw は /voice コマンドセットを提供しており、チャット内で音声機能を柔軟に制御できます。

/voice on          - 音声返信をオンにする
/voice off         - 音声返信をオフにする
/voice mode <モード> - モードを切り替え(voice_only / voice_and_text / on_demand)
/voice speed 1.5   - 読み上げ速度を調整
/voice lang zh     - 音声言語を設定
/voice list        - 利用可能なボイスを一覧表示
/voice set <name>  - ボイスキャラクターを切り替え

Voice コマンドの設定

{
  agents: {
    "my-agent": {
      commands: {
        voice: {
          enabled: true,
          // ユーザーが調整可能なオプション
          allowUserControl: {
            speed: true,
            voice: true,
            mode: true,
            language: true
          }
        }
      }
    }
  }
}

音声入力認識(STT)

OpenClaw は音声出力だけでなく、音声入力認識もサポートしています。ユーザーが音声メッセージを送信すると、OpenClaw は自動的にテキストに変換できます。

{
  agents: {
    "my-agent": {
      stt: {
        enabled: true,
        engine: "openai",  // Whisper モデルを使用
        model: "whisper-1",
        language: "zh",    // 優先認識する言語
        // 認識後に書き起こしテキストを表示するか
        showTranscription: true
      }
    }
  }
}

完全な音声対話フロー:

ユーザー → [音声メッセージ送信] → OpenClaw STT → テキストに書き起こし → AI 処理
                                                        ↓
ユーザー ← [音声返信を受信] ← OpenClaw TTS ← テキスト返信 ← AI 生成

プラットフォーム適応

異なるチャットプラットフォームでの音声メッセージのサポート度合いは異なります。

プラットフォーム 音声送信 音声受信(STT) 最大時間 フォーマット
Telegram 対応 対応 60分 OGG/Opus
Discord 対応 対応 無制限 Opus
WhatsApp 対応 対応 無制限 OGG/Opus
Slack 一部対応 対応 無制限 MP3
WeChat 対応 対応 60秒 AMR/Silk
WebChat 対応 対応 無制限 MP3/WAV

OpenClaw はターゲットプラットフォームに応じて最適なオーディオフォーマットとエンコードパラメータを自動的に選択します。

WeChat の特殊処理

WeChat の音声メッセージには 60 秒の制限があり、OpenClaw は自動的に処理します。

{
  tts: {
    platformOverrides: {
      wechat: {
        // 60秒を超える場合に自動的に複数の音声に分割
        autoSplit: true,
        // または長すぎるコンテンツをテキストにフォールバック
        fallbackToText: true,
        maxDuration: 55  // 5秒のバッファを確保
      }
    }
  }
}

オーディオキャッシュ

TTS API の呼び出しを削減しレイテンシを低下させるために、OpenClaw はオーディオキャッシュをサポートしています。

{
  tts: {
    cache: {
      enabled: true,
      // キャッシュディレクトリ
      dir: "./cache/tts",
      // キャッシュ有効期限(秒)
      ttl: 86400,  // 24時間
      // 最大キャッシュサイズ(MB)
      maxSize: 500
    }
  }
}

キャッシュ戦略:同一テキスト + 同一ボイス設定 = キャッシュヒット。既に生成されたオーディオファイルを直接返し、TTS API の呼び出しをスキップします。

上級:SSML マークアップ

音声効果を精密に制御する必要があるシーンでは、システムプロンプトで AI に SSML マークアップの使用を指示できます。

{
  tts: {
    engine: "azure",
    ssmlEnabled: true
  }
}

AI は返信に SSML 命令を埋め込むことができます。

<speak>
  <prosody rate="slow" pitch="+2st">
    この部分はゆっくりとした速度と高いピッチで読み上げられます。
  </prosody>
  <break time="500ms"/>
  <emphasis level="strong">重要な内容</emphasis>が強調されます。
</speak>

コスト最適化

TTS サービスは文字数に基づいて課金されるため、以下の最適化提案があります。

  1. キャッシュを有効にする:同一コンテンツのオーディオの重複生成を避ける
  2. オンデマンドモードを使用する:すべてのメッセージに音声が必要なわけではない
  3. 音声の長さを制限する:長すぎる返信は自動的にテキストにフォールバック
  4. 適切なエンジンを選択する:Edge TTS は無料だが品質はやや劣る、OpenAI TTS は有料だが高品質
{
  tts: {
    // 500文字を超える返信は音声を生成しない
    maxChars: 500,
    // 制限超過時のフォールバック戦略
    fallback: "text_with_summary_voice"
    // まずテキスト全文を送信し、次に音声の要約を送信
  }
}

まとめ

OpenClaw の音声機能により、AI Agent はテキストのみのインタラクションの制約を突破できます。柔軟な TTS エンジン選択、複数の返信モード、Voice コマンドシステム、音声入力認識を通じて、真に音声対話をサポートする AI アシスタントを構築できます。プラットフォーム適応とキャッシュ最適化を組み合わせることで、体験を確保しつつコストを制御できます。

OpenClawは無料のオープンソースAIアシスタント。WhatsApp、Telegram、Discordなど多数のプラットフォームに対応