はじめに
テキストは 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 |
| 対応 | 対応 | 無制限 | OGG/Opus | |
| Slack | 一部対応 | 対応 | 無制限 | MP3 |
| 対応 | 対応 | 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 サービスは文字数に基づいて課金されるため、以下の最適化提案があります。
- キャッシュを有効にする:同一コンテンツのオーディオの重複生成を避ける
- オンデマンドモードを使用する:すべてのメッセージに音声が必要なわけではない
- 音声の長さを制限する:長すぎる返信は自動的にテキストにフォールバック
- 適切なエンジンを選択する:Edge TTS は無料だが品質はやや劣る、OpenAI TTS は有料だが高品質
{
tts: {
// 500文字を超える返信は音声を生成しない
maxChars: 500,
// 制限超過時のフォールバック戦略
fallback: "text_with_summary_voice"
// まずテキスト全文を送信し、次に音声の要約を送信
}
}
まとめ
OpenClaw の音声機能により、AI Agent はテキストのみのインタラクションの制約を突破できます。柔軟な TTS エンジン選択、複数の返信モード、Voice コマンドシステム、音声入力認識を通じて、真に音声対話をサポートする AI アシスタントを構築できます。プラットフォーム適応とキャッシュ最適化を組み合わせることで、体験を確保しつつコストを制御できます。