Ana içeriğe atla
OpenClaw, giden yanıtları 14 konuşma sağlayıcısı genelinde sese dönüştürebilir ve Feishu, Matrix, Telegram ve WhatsApp üzerinde yerel sesli mesajlar, diğer her yerde ses ekleri, telephony ve Talk için PCM/Ulaw akışları teslim edebilir. TTS, Talk’ın stt-tts modunun konuşma çıktısı yarısıdır. Sağlayıcıya özgü realtime Talk oturumları, bu TTS yolunu çağırmak yerine konuşmayı realtime sağlayıcısının içinde sentezler; transcription oturumları ise bir asistan sesli yanıtı sentezlemez.

Hızlı başlangıç

1

Pick a provider

OpenAI ve ElevenLabs en güvenilir barındırılan seçeneklerdir. Microsoft ve Local CLI bir API anahtarı olmadan çalışır. Tam liste için sağlayıcı matrisine bakın.
2

Set the API key

Sağlayıcınız için env var’ı dışa aktarın (örneğin OPENAI_API_KEY, ELEVENLABS_API_KEY). Microsoft ve Local CLI anahtar gerektirmez.
3

Enable in config

messages.tts.auto: "always" ve messages.tts.provider değerlerini ayarlayın:
{
  messages: {
    tts: {
      auto: "always",
      provider: "elevenlabs",
    },
  },
}
4

Try it in chat

/tts status mevcut durumu gösterir. /tts audio Hello from OpenClaw tek seferlik bir sesli yanıt gönderir.
Auto-TTS varsayılan olarak kapalıdır. messages.tts.provider ayarlanmamışsa, OpenClaw kayıt defterinin otomatik seçim sırasındaki ilk yapılandırılmış sağlayıcıyı seçer. Yerleşik tts agent aracı yalnızca açık niyet içindir: kullanıcı ses istemedikçe, /tts kullanmadıkça veya Auto-TTS/directive konuşmayı etkinleştirmedikçe normal sohbet metin olarak kalır.

Desteklenen sağlayıcılar

SağlayıcıKimlik doğrulamaNotlar
Azure SpeechAZURE_SPEECH_KEY + AZURE_SPEECH_REGION (ayrıca AZURE_SPEECH_API_KEY, SPEECH_KEY, SPEECH_REGION)Yerel Ogg/Opus sesli not çıktısı ve telephony.
DeepInfraDEEPINFRA_API_KEYOpenAI uyumlu TTS. Varsayılan olarak hexgrad/Kokoro-82M.
ElevenLabsELEVENLABS_API_KEY veya XI_API_KEYSes klonlama, çok dilli, seed ile deterministik; Discord ses oynatma için akışlıdır.
Google GeminiGEMINI_API_KEY veya GOOGLE_API_KEYGemini API toplu TTS; promptTemplate: "audio-profile-v1" ile persona farkındalığı.
GradiumGRADIUM_API_KEYSesli not ve telephony çıktısı.
InworldINWORLD_API_KEYAkışlı TTS API. Yerel Opus sesli not ve PCM telephony.
Local CLIyokYapılandırılmış yerel bir TTS komutunu çalıştırır.
Microsoftyoknode-edge-tts üzerinden genel Edge neural TTS. En iyi çaba, SLA yok.
MiniMaxMINIMAX_API_KEY (veya Token Plan: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY)T2A v2 API. Varsayılan olarak speech-2.8-hd.
OpenAIOPENAI_API_KEYOtomatik özet için de kullanılır; persona instructions desteği vardır.
OpenRouterOPENROUTER_API_KEY (models.providers.openrouter.apiKey yeniden kullanılabilir)Varsayılan model hexgrad/kokoro-82m.
VolcengineVOLCENGINE_TTS_API_KEY veya BYTEPLUS_SEED_SPEECH_API_KEY (eski AppID/token: VOLCENGINE_TTS_APPID/_TOKEN)BytePlus Seed Speech HTTP API.
VydraVYDRA_API_KEYPaylaşılan görüntü, video ve konuşma sağlayıcısı.
xAIXAI_API_KEYxAI toplu TTS. Yerel Opus sesli not desteklenmez.
Xiaomi MiMoXIAOMI_API_KEYXiaomi sohbet tamamlama üzerinden MiMo TTS.
Birden fazla sağlayıcı yapılandırılmışsa, önce seçilen sağlayıcı kullanılır ve diğerleri fallback seçenekleri olur. Otomatik özet summaryModel (veya agents.defaults.model.primary) kullanır; bu nedenle özetleri etkin tutarsanız o sağlayıcının da kimliği doğrulanmış olmalıdır.
Paketlenen Microsoft sağlayıcısı, node-edge-tts üzerinden Microsoft Edge’in çevrimiçi neural TTS hizmetini kullanır. Bu, yayımlanmış SLA veya kotası olmayan genel bir web hizmetidir; en iyi çaba olarak değerlendirin. Eski sağlayıcı id’si edge, microsoft olarak normalize edilir ve openclaw doctor --fix kalıcı config’i yeniden yazar; yeni config’ler her zaman microsoft kullanmalıdır.

Yapılandırma

TTS config’i ~/.openclaw/openclaw.json içinde messages.tts altında bulunur. Bir preset seçin ve sağlayıcı bloğunu uyarlayın:
{
  messages: {
    tts: {
      auto: "always",
      provider: "azure-speech",
      providers: {
        "azure-speech": {
          apiKey: "${AZURE_SPEECH_KEY}",
          region: "eastus",
          speakerVoice: "en-US-JennyNeural",
          lang: "en-US",
          outputFormat: "audio-24khz-48kbitrate-mono-mp3",
          voiceNoteOutputFormat: "ogg-24khz-16bit-mono-opus",
        },
      },
    },
  },
}
Xiaomi mimo-v2.5-tts-voicedesign için speakerVoice değerini atlayın ve style değerini ses tasarımı prompt’u olarak ayarlayın. OpenClaw bu prompt’u TTS user mesajı olarak gönderir ve voicedesign modeli için audio.voice göndermez.

Agent başına ses geçersiz kılmaları

agents.list[].tts değerini, bir ajanın farklı bir sağlayıcı, ses, model, persona veya otomatik TTS moduyla konuşması gerektiğinde kullanın. Ajan bloğu messages.tts üzerine derin birleştirme uygular, böylece sağlayıcı kimlik bilgileri global sağlayıcı yapılandırmasında kalabilir:
{
  messages: {
    tts: {
      auto: "always",
      provider: "elevenlabs",
      providers: {
        elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2" },
      },
    },
  },
  agents: {
    list: [
      {
        id: "reader",
        tts: {
          providers: {
            elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL" },
          },
        },
      },
    ],
  },
}
Ajan başına bir persona sabitlemek için sağlayıcı yapılandırmasının yanında agents.list[].tts.persona ayarlayın; bu, yalnızca o ajan için global messages.tts.persona değerini geçersiz kılar. Otomatik yanıtlar, /tts audio, /tts status ve tts ajan aracı için öncelik sırası:
  1. messages.tts
  2. etkin agents.list[].tts
  3. kanal channels.<channel>.tts desteklediğinde kanal geçersiz kılması
  4. kanal channels.<channel>.accounts.<id>.tts geçirdiğinde hesap geçersiz kılması
  5. bu ana makine için yerel /tts tercihleri
  6. model geçersiz kılmaları etkinleştirildiğinde satır içi [[tts:...]] yönergeleri
Kanal ve hesap geçersiz kılmaları messages.tts ile aynı şekli kullanır ve önceki katmanların üzerine derin birleştirilir; böylece paylaşılan sağlayıcı kimlik bilgileri messages.tts içinde kalabilirken bir kanal veya bot hesabı yalnızca konuşmacı sesini, modeli, persona değerini veya otomatik modu değiştirebilir:
{
  messages: {
    tts: {
      provider: "openai",
      providers: {
        openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" },
      },
    },
  },
  channels: {
    feishu: {
      accounts: {
        english: {
          tts: {
            providers: {
              openai: { speakerVoice: "shimmer" },
            },
          },
        },
      },
    },
  },
}

Personalar

Bir persona, sağlayıcılar arasında deterministik olarak uygulanabilen kararlı bir sözlü kimliktir. Bir sağlayıcıyı tercih edebilir, sağlayıcıdan bağımsız istem amacını tanımlayabilir ve sesler, modeller, istem şablonları, tohumlar ve ses ayarları için sağlayıcıya özel bağlamalar taşıyabilir.

Minimal persona

{
  messages: {
    tts: {
      auto: "always",
      persona: "narrator",
      personas: {
        narrator: {
          label: "Narrator",
          provider: "elevenlabs",
          providers: {
            elevenlabs: {
              speakerVoiceId: "EXAVITQu4vr4xnSDxMaL",
              modelId: "eleven_multilingual_v2",
            },
          },
        },
      },
    },
  },
}

Tam persona (sağlayıcıdan bağımsız istem)

{
  messages: {
    tts: {
      auto: "always",
      persona: "alfred",
      personas: {
        alfred: {
          label: "Alfred",
          description: "Dry, warm British butler narrator.",
          provider: "google",
          fallbackPolicy: "preserve-persona",
          prompt: {
            profile: "A brilliant British butler. Dry, witty, warm, charming, emotionally expressive, never generic.",
            scene: "A quiet late-night study. Close-mic narration for a trusted operator.",
            sampleContext: "The speaker is answering a private technical request with concise confidence and dry warmth.",
            style: "Refined, understated, lightly amused.",
            accent: "British English.",
            pacing: "Measured, with short dramatic pauses.",
            constraints: ["Do not read configuration values aloud.", "Do not explain the persona."],
          },
          providers: {
            google: {
              model: "gemini-3.1-flash-tts-preview",
              speakerVoice: "Algieba",
              promptTemplate: "audio-profile-v1",
            },
            openai: { model: "gpt-4o-mini-tts", speakerVoice: "cedar" },
            elevenlabs: {
              speakerVoiceId: "voice_id",
              modelId: "eleven_multilingual_v2",
              seed: 42,
              voiceSettings: {
                stability: 0.65,
                similarityBoost: 0.8,
                style: 0.25,
                useSpeakerBoost: true,
                speed: 0.95,
              },
            },
          },
        },
      },
    },
  },
}

Persona çözümleme

Etkin persona deterministik olarak seçilir:
  1. ayarlanmışsa /tts persona <id> yerel tercihi.
  2. ayarlanmışsa messages.tts.persona.
  3. Persona yok.
Sağlayıcı seçimi açık olan öncelikli çalışır:
  1. Doğrudan geçersiz kılmalar (CLI, gateway, Talk, izin verilen TTS yönergeleri).
  2. /tts provider <id> yerel tercihi.
  3. Etkin personanın provider değeri.
  4. messages.tts.provider.
  5. Kayıt defteri otomatik seçimi.
Her sağlayıcı denemesi için OpenClaw yapılandırmaları şu sırayla birleştirir:
  1. messages.tts.providers.<id>
  2. messages.tts.personas.<persona>.providers.<id>
  3. Güvenilir istek geçersiz kılmaları
  4. İzin verilen model tarafından yayımlanan TTS yönergesi geçersiz kılmaları

Sağlayıcılar persona istemlerini nasıl kullanır

Persona istem alanları (profile, scene, sampleContext, style, accent, pacing, constraints) sağlayıcıdan bağımsızdır. Her sağlayıcı bunları nasıl kullanacağına kendisi karar verir:
Persona istem alanlarını yalnızca etkili Google sağlayıcı yapılandırması promptTemplate: "audio-profile-v1" veya personaPrompt ayarladığında bir Gemini TTS istem yapısına sarar. Eski audioProfile ve speakerName alanları hâlâ Google’a özel istem metni olarak başa eklenir. Bir [[tts:text]] bloğunun içindeki [whispers] veya [laughs] gibi satır içi ses etiketleri Gemini transkriptinin içinde korunur; OpenClaw bu etiketleri üretmez.
Persona istem alanlarını yalnızca açık bir OpenAI instructions yapılandırılmadığında isteğin instructions alanına eşler. Açık instructions her zaman önceliklidir.
Yalnızca personas.<id>.providers.<provider> altındaki sağlayıcıya özel persona bağlamalarını kullanır. Sağlayıcı kendi persona istemi eşlemesini uygulamadıkça persona istem alanları yok sayılır.

Geri dönüş ilkesi

fallbackPolicy, bir personanın denenen sağlayıcı için bağlaması olmadığında davranışı denetler:
İlkeDavranış
preserve-personaVarsayılan. Sağlayıcıdan bağımsız istem alanları kullanılabilir kalır; sağlayıcı bunları kullanabilir veya yok sayabilir.
provider-defaultsBu deneme için persona istem hazırlığından çıkarılır; diğer sağlayıcılara geri dönüş sürerken sağlayıcı kendi nötr varsayılanlarını kullanır.
failBu sağlayıcı denemesini reasonCode: "not_configured" ve personaBinding: "missing" ile atlar. Geri dönüş sağlayıcıları yine denenir.
Tüm TTS isteği yalnızca denenen her sağlayıcı atlandığında veya başarısız olduğunda başarısız olur. Talk oturumu sağlayıcı seçimi oturum kapsamındadır. Bir Talk istemcisi sağlayıcı kimliklerini, model kimliklerini, ses kimliklerini ve yerel ayarları talk.catalog içinden seçmeli ve bunları Talk oturumu veya devir isteği üzerinden geçirmelidir. Bir ses oturumu açmak messages.tts veya global Talk sağlayıcı varsayılanlarını değiştirmemelidir.

Model odaklı yönergeler

Varsayılan olarak asistan, tek bir yanıt için sesi, modeli veya hızı geçersiz kılmak üzere [[tts:...]] yönergeleri ve yalnızca seste görünmesi gereken ifade ipuçları için isteğe bağlı bir [[tts:text]]...[[/tts:text]] bloğu yayabilir:
Here you go.

[[tts:speakerVoiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]]
[[tts:text]](laughs) Read the song once more.[[/tts:text]]
messages.tts.auto "tagged" olduğunda, sesi tetiklemek için yönergeler zorunludur. Akışlı blok teslimi, bitişik bloklara bölünmüş olsa bile kanal görmeden önce yönergeleri görünür metinden çıkarır. modelOverrides.allowProvider: true olmadıkça provider=... yok sayılır. Bir yanıt provider=... bildirdiğinde, o yönergedeki diğer anahtarlar yalnızca o sağlayıcı tarafından ayrıştırılır; desteklenmeyen anahtarlar çıkarılır ve TTS yönergesi uyarıları olarak bildirilir. Kullanılabilir yönerge anahtarları:
  • provider (kayıtlı sağlayıcı kimliği; allowProvider: true gerektirir)
  • speakerVoice / speakerVoiceId (eski takma adlar: voice, voiceName, voice_name, google_voice, voiceId)
  • model / google_model
  • stability, similarityBoost, style, speed, useSpeakerBoost
  • vol / volume (MiniMax ses düzeyi, 0-10)
  • pitch (MiniMax tam sayı perde, −12 ile 12; kesirli değerler kırpılır)
  • emotion (Volcengine duygu etiketi)
  • applyTextNormalization (auto|on|off)
  • languageCode (ISO 639-1)
  • seed
Model geçersiz kılmalarını tamamen devre dışı bırakın:
{ messages: { tts: { modelOverrides: { enabled: false } } } }
Diğer düğmeleri yapılandırılabilir tutarken sağlayıcı değiştirmeye izin verin:
{ messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }

Eğik çizgi komutları

Tek komut /tts. Discord üzerinde OpenClaw ayrıca /voice kaydeder çünkü /tts yerleşik bir Discord komutudur; metin /tts ... yine çalışır.
/tts off | on | status
/tts chat on | off | default
/tts latest
/tts provider <id>
/tts persona <id> | off
/tts limit <chars>
/tts summary off
/tts audio <text>
Komutlar yetkili bir gönderici gerektirir (izin listesi/sahip kuralları geçerlidir) ve commands.text ya da yerel komut kaydı etkin olmalıdır.
Davranış notları:
  • /tts on, yerel TTS tercihini always olarak yazar; /tts off bunu off olarak yazar.
  • /tts chat on|off|default, geçerli sohbet için oturum kapsamlı bir otomatik TTS geçersiz kılması yazar.
  • /tts persona <id>, yerel persona tercihini yazar; /tts persona off bunu temizler.
  • /tts latest, geçerli oturum transkriptinden en son asistan yanıtını okur ve bunu bir kez ses olarak gönderir. Yinelenen ses gönderimlerini bastırmak için oturum girdisinde yalnızca o yanıtın karmasını saklar.
  • /tts audio, tek seferlik bir sesli yanıt üretir (TTS’yi açmaz).
  • limit ve summary, ana yapılandırmada değil yerel tercihlerde saklanır.
  • /tts status, en son deneme için geri dönüş tanılamalarını içerir: Fallback: <primary> -> <used>, Attempts: ... ve deneme başına ayrıntı (provider:outcome(reasonCode) latency).
  • /status, TTS etkinleştirildiğinde etkin TTS modunu ve yapılandırılmış sağlayıcı, model, ses ve temizlenmiş özel uç nokta meta verilerini gösterir.

Kullanıcı başına tercihler

Eğik çizgi komutları yerel geçersiz kılmaları prefsPath konumuna yazar. Varsayılan değer ~/.openclaw/settings/tts.json olur; OPENCLAW_TTS_PREFS ortam değişkeni veya messages.tts.prefsPath ile geçersiz kılın.
Saklanan alanEtki
autoYerel otomatik TTS geçersiz kılması (always, off, …)
providerYerel birincil sağlayıcı geçersiz kılması
personaYerel persona geçersiz kılması
maxLengthÖzet eşiği (varsayılan 1500 karakter)
summarizeÖzet anahtarı (varsayılan true)
Bunlar, bu ana makine için messages.tts ve etkin agents.list[].tts bloğundan gelen etkili yapılandırmayı geçersiz kılar.

Çıktı biçimleri (sabit)

TTS ses teslimi kanal yeteneklerine göre yönlendirilir. Kanal Plugin’leri, ses tarzı TTS’nin sağlayıcılardan yerel bir voice-note hedefi istemesi mi yoksa normal audio-file sentezini koruyup yalnızca uyumlu çıktıyı ses teslimi için işaretlemesi mi gerektiğini bildirir.
  • Sesli not destekli kanallar: sesli not yanıtları Opus’u tercih eder (ElevenLabs’ten opus_48000_64, OpenAI’den opus).
    • 48kHz / 64kbps, sesli mesaj için iyi bir denge sağlar.
  • Feishu / WhatsApp: bir sesli not yanıtı MP3/WebM/WAV/M4A veya başka bir olası ses dosyası olarak üretildiğinde, kanal plugin’i yerel sesli mesajı göndermeden önce bunu ffmpeg ile 48kHz Ogg/Opus biçimine dönüştürür. WhatsApp, sonucu Baileys audio yükü üzerinden ptt: true ve audio/ogg; codecs=opus ile gönderir. Dönüştürme başarısız olursa Feishu özgün dosyayı ek olarak alır; WhatsApp ise uyumsuz bir PTT yükü yayımlamak yerine gönderimi başarısız yapar.
  • Diğer kanallar: MP3 (ElevenLabs’ten mp3_44100_128, OpenAI’den mp3).
    • 44.1kHz / 128kbps, konuşma netliği için varsayılan dengedir.
  • MiniMax: normal ses ekleri için MP3 (speech-2.8-hd modeli, 32kHz örnekleme hızı). Kanalın duyurduğu sesli not hedefleri için, kanal dönüştürmeyi duyuruyorsa OpenClaw teslimden önce MiniMax MP3’ünü ffmpeg ile 48kHz Opus’a dönüştürür.
  • Xiaomi MiMo: varsayılan olarak MP3 veya yapılandırıldığında WAV. Kanalın duyurduğu sesli not hedefleri için, kanal dönüştürmeyi duyuruyorsa OpenClaw teslimden önce Xiaomi çıktısını ffmpeg ile 48kHz Opus’a dönüştürür.
  • Yerel CLI: yapılandırılmış outputFormat değerini kullanır. Sesli not hedefleri Ogg/Opus’a dönüştürülür ve telefon çıktısı ffmpeg ile ham 16 kHz mono PCM’ye dönüştürülür.
  • Google Gemini: Gemini API TTS ham 24kHz PCM döndürür. OpenClaw bunu ses ekleri için WAV olarak sarar, sesli not hedefleri için 48kHz Opus’a dönüştürür ve Talk/telefon için PCM’yi doğrudan döndürür.
  • Gradium: ses ekleri için WAV, sesli not hedefleri için Opus ve telefon için 8 kHz’de ulaw_8000.
  • Inworld: normal ses ekleri için MP3, sesli not hedefleri için yerel OGG_OPUS ve Talk/telefon için 22050 Hz’de ham PCM.
  • xAI: varsayılan olarak MP3; responseFormat mp3, wav, pcm, mulaw veya alaw olabilir. OpenClaw xAI’nin toplu REST TTS uç noktasını kullanır ve eksiksiz bir ses eki döndürür; xAI’nin akışlı TTS WebSocket’i bu sağlayıcı yolunda kullanılmaz. Yerel Opus sesli not biçimi bu yol tarafından desteklenmez.
  • Microsoft: microsoft.outputFormat değerini kullanır (varsayılan audio-24khz-48kbitrate-mono-mp3).
    • Paketlenmiş aktarım bir outputFormat kabul eder, ancak tüm biçimler hizmetten kullanılabilir değildir.
    • Çıktı biçimi değerleri Microsoft Speech çıktı biçimlerini izler (Ogg/WebM Opus dahil).
    • Telegram sendVoice OGG/MP3/M4A kabul eder; garantili Opus sesli mesajlara ihtiyacınız varsa OpenAI/ElevenLabs kullanın.
    • Yapılandırılmış Microsoft çıktı biçimi başarısız olursa OpenClaw MP3 ile yeniden dener.
OpenAI/ElevenLabs çıktı biçimleri kanal başına sabittir (yukarıya bakın).

Otomatik TTS davranışı

messages.tts.auto etkinleştirildiğinde OpenClaw:
  • Yanıt zaten yapılandırılmış medya içeriyorsa TTS’yi atlar.
  • Çok kısa yanıtları atlar (10 karakterin altında).
  • Özetler etkinse uzun yanıtları summaryModel (veya agents.defaults.model.primary) kullanarak özetler.
  • Üretilen sesi yanıta ekler.
  • mode: "final" içinde, metin akışı tamamlandıktan sonra akışlı final yanıtları için yine yalnızca sesli TTS gönderir; üretilen medya, normal yanıt ekleriyle aynı kanal medya normalleştirmesinden geçer.
Yanıt maxLength değerini aşarsa ve özet kapalıysa (veya özet modeli için API anahtarı yoksa), ses atlanır ve normal metin yanıtı gönderilir.
Reply -> TTS enabled?
  no  -> send text
  yes -> has media / short?
          yes -> send text
          no  -> length > limit?
                   no  -> TTS -> attach audio
                   yes -> summary enabled?
                            no  -> send text
                            yes -> summarize -> TTS -> attach audio

Kanala göre çıktı biçimleri

HedefBiçim
Feishu / Matrix / Telegram / WhatsAppSesli not yanıtları Opus’u tercih eder (ElevenLabs’ten opus_48000_64, OpenAI’den opus). 48 kHz / 64 kbps netlik ve boyutu dengeler.
Diğer kanallarMP3 (ElevenLabs’ten mp3_44100_128, OpenAI’den mp3). Konuşma için varsayılan 44.1 kHz / 128 kbps.
Talk / telefonSağlayıcıya özgü PCM (Inworld 22050 Hz, Google 24 kHz) veya telefon için Gradium’dan ulaw_8000.
Sağlayıcı başına notlar:
  • Feishu / WhatsApp dönüştürme: Bir sesli not yanıtı MP3/WebM/WAV/M4A olarak geldiğinde, kanal plugin’i ffmpeg ile 48 kHz Ogg/Opus’a dönüştürür. WhatsApp, Baileys üzerinden ptt: true ve audio/ogg; codecs=opus ile gönderir. Dönüştürme başarısız olursa: Feishu özgün dosyayı eklemeye geri döner; WhatsApp ise uyumsuz bir PTT yükü yayımlamak yerine gönderimi başarısız yapar.
  • MiniMax / Xiaomi MiMo: Varsayılan MP3 (MiniMax speech-2.8-hd için 32 kHz); ffmpeg aracılığıyla sesli not hedefleri için 48 kHz Opus’a dönüştürülür.
  • Yerel CLI: Yapılandırılmış outputFormat değerini kullanır. Sesli not hedefleri Ogg/Opus’a, telefon çıktısı ham 16 kHz mono PCM’ye dönüştürülür.
  • Google Gemini: Ham 24 kHz PCM döndürür. OpenClaw ekler için WAV olarak sarar, sesli not hedefleri için 48 kHz Opus’a dönüştürür, Talk/telefon için PCM’yi doğrudan döndürür.
  • Inworld: MP3 ekleri, yerel OGG_OPUS sesli not, Talk/telefon için ham PCM 22050 Hz.
  • xAI: Varsayılan olarak MP3; responseFormat mp3|wav|pcm|mulaw|alaw olabilir. xAI’nin toplu REST uç noktasını kullanır — akışlı WebSocket TTS kullanılmaz. Yerel Opus sesli not biçimi desteklenmez.
  • Microsoft: microsoft.outputFormat değerini kullanır (varsayılan audio-24khz-48kbitrate-mono-mp3). Telegram sendVoice OGG/MP3/M4A kabul eder; garantili Opus sesli mesajlara ihtiyacınız varsa OpenAI/ElevenLabs kullanın. Yapılandırılmış Microsoft biçimi başarısız olursa OpenClaw MP3 ile yeniden dener.
OpenAI ve ElevenLabs çıktı biçimleri yukarıda listelendiği gibi kanal başına sabittir.

Alan başvurusu

auto
"off" | "always" | "inbound" | "tagged"
Otomatik TTS modu. inbound yalnızca gelen bir sesli mesajdan sonra ses gönderir; tagged yalnızca yanıt [[tts:...]] yönergeleri veya bir [[tts:text]] bloğu içerdiğinde ses gönderir.
enabled
boolean
kullanımdan kaldırıldı
Eski geçiş anahtarı. openclaw doctor --fix bunu auto değerine taşır.
mode
"final" | "all"
varsayılan:"final"
"all" final yanıtlara ek olarak araç/blok yanıtlarını da içerir.
provider
string
Konuşma sağlayıcısı kimliği. Ayarlanmadığında OpenClaw, kayıt otomatik seçim sırasındaki ilk yapılandırılmış sağlayıcıyı kullanır. Eski provider: "edge", openclaw doctor --fix tarafından "microsoft" olarak yeniden yazılır.
persona
string
personas içinden etkin persona kimliği. Küçük harfe normalleştirilir.
personas.<id>
object
Kararlı konuşulan kimlik. Alanlar: label, description, provider, fallbackPolicy, prompt, providers.<provider>. Bkz. Personalar.
summaryModel
string
Otomatik özet için ucuz model; varsayılan agents.defaults.model.primary. provider/model veya yapılandırılmış bir model takma adını kabul eder.
modelOverrides
object
Modelin TTS yönergeleri yaymasına izin verin. enabled varsayılan olarak true; allowProvider varsayılan olarak false.
providers.<id>
object
Konuşma sağlayıcısı kimliğine göre anahtarlanmış sağlayıcıya ait ayarlar. Eski doğrudan bloklar (messages.tts.openai, .elevenlabs, .microsoft, .edge) openclaw doctor --fix tarafından yeniden yazılır; yalnızca messages.tts.providers.<id> kaydedin.
maxTextLength
number
TTS giriş karakterleri için kesin üst sınır. Aşılırsa /tts audio başarısız olur.
timeoutMs
number
Milisaniye cinsinden istek zaman aşımı.
prefsPath
string
Yerel tercih JSON yolunu geçersiz kılın (sağlayıcı/sınır/özet). Varsayılan ~/.openclaw/settings/tts.json.
apiKey
string
Ortam: AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY veya SPEECH_KEY.
region
string
Azure Speech bölgesi (ör. eastus). Ortam: AZURE_SPEECH_REGION veya SPEECH_REGION.
endpoint
string
İsteğe bağlı Azure Speech uç noktası geçersiz kılması (baseUrl takma adı).
speakerVoice
string
Azure ses ShortName. Varsayılan en-US-JennyNeural. Eski takma ad: voice.
lang
string
SSML dil kodu. Varsayılan en-US.
outputFormat
string
Standart ses için Azure X-Microsoft-OutputFormat. Varsayılan audio-24khz-48kbitrate-mono-mp3.
voiceNoteOutputFormat
string
Sesli not çıktısı için Azure X-Microsoft-OutputFormat. Varsayılan ogg-24khz-16bit-mono-opus.
apiKey
string
ELEVENLABS_API_KEY veya XI_API_KEY değerine geri döner.
model
string
Model kimliği (ör. eleven_multilingual_v2, eleven_v3).
speakerVoiceId
string
ElevenLabs ses kimliği. Eski takma ad: voiceId.
voiceSettings
object
stability, similarityBoost, style (her biri 0..1), useSpeakerBoost (true|false), speed (0.5..2.0, 1.0 = normal).
applyTextNormalization
"auto" | "on" | "off"
Metin normalleştirme modu.
languageCode
string
2 harfli ISO 639-1 (ör. en, de).
seed
number
En iyi çaba düzeyinde determinizm için 0..4294967295 tam sayısı.
baseUrl
string
ElevenLabs API temel URL’sini geçersiz kılın.
apiKey
string
GEMINI_API_KEY / GOOGLE_API_KEY değerine geri döner. Atlanırsa TTS, ortam geri dönüşünden önce models.providers.google.apiKey değerini yeniden kullanabilir.
model
string
Gemini TTS modeli. Varsayılan gemini-3.1-flash-tts-preview.
speakerVoice
string
Gemini önceden oluşturulmuş ses adı. Varsayılan Kore. Eski takma adlar: voiceName, voice.
audioProfile
string
Konuşulan metinden önce eklenen doğal dil tarzı istem.
speakerName
string
İsteminiz adlandırılmış bir konuşmacı kullandığında konuşulan metinden önce eklenen isteğe bağlı konuşmacı etiketi.
promptTemplate
"audio-profile-v1"
Etkin persona istem alanlarını deterministik bir Gemini TTS istem yapısına sarmak için audio-profile-v1 olarak ayarlayın.
personaPrompt
string
Şablonun Director’s Notes bölümüne eklenen Google’a özel ek persona istem metni.
baseUrl
string
Yalnızca https://generativelanguage.googleapis.com kabul edilir.
apiKey
string
Ortam: GRADIUM_API_KEY.
baseUrl
string
Varsayılan https://api.gradium.ai.
speakerVoiceId
string
Varsayılan Emma (YTpq7expH9539ERJ). Eski takma ad: voiceId.

Birincil Inworld

apiKey
string
Ortam: INWORLD_API_KEY.
baseUrl
string
Varsayılan https://api.inworld.ai.
modelId
string
Varsayılan inworld-tts-1.5-max. Ayrıca: inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1.
speakerVoiceId
string
Varsayılan Sarah. Eski takma ad: voiceId.
temperature
number
Örnekleme sıcaklığı 0..2.
command
string
CLI TTS için yerel çalıştırılabilir dosya veya komut dizesi.
args
string[]
Komut bağımsız değişkenleri. {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}} yer tutucularını destekler.
outputFormat
"mp3" | "opus" | "wav"
Beklenen CLI çıktı biçimi. Ses ekleri için varsayılan mp3.
timeoutMs
number
Milisaniye cinsinden komut zaman aşımı. Varsayılan 120000.
cwd
string
İsteğe bağlı komut çalışma dizini.
env
Record<string, string>
Komut için isteğe bağlı ortam geçersiz kılmaları.
enabled
boolean
varsayılan:"true"
Microsoft konuşma kullanımına izin ver.
speakerVoice
string
Microsoft neural voice adı (örn. en-US-MichelleNeural). Eski takma ad: voice.
lang
string
Dil kodu (örn. en-US).
outputFormat
string
Microsoft çıktı biçimi. Varsayılan audio-24khz-48kbitrate-mono-mp3. Tüm biçimler paketlenmiş Edge destekli aktarım tarafından desteklenmez.
rate / pitch / volume
string
Yüzde dizeleri (örn. +10%, -5%).
saveSubtitles
boolean
Ses dosyasının yanına JSON altyazıları yaz.
proxy
string
Microsoft konuşma istekleri için proxy URL’si.
timeoutMs
number
İstek zaman aşımı geçersiz kılması (ms).
edge.*
object
kullanımdan kaldırıldı
Eski takma ad. Kalıcı yapılandırmayı providers.microsoft olarak yeniden yazmak için openclaw doctor --fix çalıştırın.
apiKey
string
MINIMAX_API_KEY değerine geri döner. MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY veya MINIMAX_CODING_API_KEY üzerinden Token Plan kimlik doğrulaması.
baseUrl
string
Varsayılan https://api.minimax.io. Ortam: MINIMAX_API_HOST.
model
string
Varsayılan speech-2.8-hd. Ortam: MINIMAX_TTS_MODEL.
speakerVoiceId
string
Varsayılan English_expressive_narrator. Ortam: MINIMAX_TTS_VOICE_ID. Eski takma ad: voiceId.
speed
number
0.5..2.0. Varsayılan 1.0.
vol
number
(0, 10]. Varsayılan 1.0.
pitch
number
Tam sayı -12..12. Varsayılan 0. Kesirli değerler istekten önce kırpılır.
apiKey
string
OPENAI_API_KEY değerine geri döner.
model
string
OpenAI TTS model kimliği (örn. gpt-4o-mini-tts).
speakerVoice
string
Ses adı (örn. alloy, cedar). Eski takma ad: voice.
instructions
string
Açık OpenAI instructions alanı. Ayarlandığında persona prompt alanları otomatik olarak eşlenmez.
extraBody / extra_body
Record<string, unknown>
Oluşturulan OpenAI TTS alanlarından sonra /audio/speech istek gövdelerine birleştirilen ek JSON alanları. Bunu, lang gibi sağlayıcıya özgü anahtarlar gerektiren Kokoro gibi OpenAI uyumlu uç noktalar için kullanın; güvenli olmayan prototype anahtarları yok sayılır.
baseUrl
string
OpenAI TTS uç noktasını geçersiz kılın. Çözüm sırası: yapılandırma → OPENAI_TTS_BASE_URLhttps://api.openai.com/v1. Varsayılan olmayan değerler OpenAI uyumlu TTS uç noktaları olarak ele alınır; bu nedenle özel model ve ses adları kabul edilir.
apiKey
string
Ortam: OPENROUTER_API_KEY. models.providers.openrouter.apiKey yeniden kullanılabilir.
baseUrl
string
Varsayılan https://openrouter.ai/api/v1. Eski https://openrouter.ai/v1 normalleştirilir.
model
string
Varsayılan hexgrad/kokoro-82m. Takma ad: modelId.
speakerVoice
string
Varsayılan af_alloy. Eski takma adlar: voice, voiceId.
responseFormat
"mp3" | "pcm"
Varsayılan mp3.
speed
number
Sağlayıcıya özgü hız geçersiz kılması.
apiKey
string
Ortam: VOLCENGINE_TTS_API_KEY veya BYTEPLUS_SEED_SPEECH_API_KEY.
resourceId
string
Varsayılan seed-tts-1.0. Ortam: VOLCENGINE_TTS_RESOURCE_ID. Projenizin TTS 2.0 yetkisi olduğunda seed-tts-2.0 kullanın.
appKey
string
Uygulama anahtarı üst bilgisi. Varsayılan aGjiRDfUWi. Ortam: VOLCENGINE_TTS_APP_KEY.
baseUrl
string
Seed Speech TTS HTTP uç noktasını geçersiz kılın. Ortam: VOLCENGINE_TTS_BASE_URL.
speakerVoice
string
Ses türü. Varsayılan en_female_anna_mars_bigtts. Ortam: VOLCENGINE_TTS_VOICE. Eski takma ad: voice.
speedRatio
number
Sağlayıcıya özgü hız oranı.
emotion
string
Sağlayıcıya özgü duygu etiketi.
appId / token / cluster
string
kullanımdan kaldırıldı
Eski Volcengine Speech Console alanları. Ortam: VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (varsayılan volcano_tts).
apiKey
string
Ortam: XAI_API_KEY.
baseUrl
string
Varsayılan https://api.x.ai/v1. Ortam: XAI_BASE_URL.
speakerVoiceId
string
Varsayılan eve. Canlı sesler: ara, eve, leo, rex, sal, una. Eski takma ad: voiceId.
language
string
BCP-47 dil kodu veya auto. Varsayılan en.
responseFormat
"mp3" | "wav" | "pcm" | "mulaw" | "alaw"
Varsayılan mp3.
speed
number
Sağlayıcıya özgü hız geçersiz kılması.
apiKey
string
Ortam: XIAOMI_API_KEY.
baseUrl
string
Varsayılan https://api.xiaomimimo.com/v1. Ortam: XIAOMI_BASE_URL.
model
string
Varsayılan mimo-v2.5-tts. Ortam: XIAOMI_TTS_MODEL. mimo-v2-tts ve mimo-v2.5-tts-voicedesign seçeneklerini de destekler.
speakerVoice
string
Hazır ses modelleri için varsayılan mimo_default. Ortam: XIAOMI_TTS_VOICE. Eski takma ad: voice. mimo-v2.5-tts-voicedesign için gönderilmez.
format
"mp3" | "wav"
Varsayılan mp3. Ortam: XIAOMI_TTS_FORMAT.
style
string
Kullanıcı mesajı olarak gönderilen isteğe bağlı doğal dil stil talimatı; seslendirilmez. mimo-v2.5-tts-voicedesign için bu, ses tasarımı promptudur; atlanırsa OpenClaw bir varsayılan sağlar.

Agent aracı

tts aracı metni konuşmaya dönüştürür ve yanıt teslimi için bir ses eki döndürür. Feishu, Matrix, Telegram ve WhatsApp üzerinde ses, dosya eki yerine sesli mesaj olarak teslim edilir. Feishu ve WhatsApp, ffmpeg kullanılabilir olduğunda bu yolda Opus olmayan TTS çıktısını dönüştürebilir. WhatsApp, sesi Baileys üzerinden PTT ses notu olarak (audio ile ptt: true) gönderir ve istemciler ses notlarında altyazıları tutarlı şekilde işlemediği için görünür metni PTT sesinden ayrı olarak gönderir. Araç isteğe bağlı channel ve timeoutMs alanlarını kabul eder; timeoutMs, milisaniye cinsinden çağrı başına sağlayıcı istek zaman aşımıdır. Çağrı başına değerler messages.tts.timeoutMs değerini geçersiz kılar; yapılandırılmış TTS zaman aşımları, Plugin tarafından yazılmış sağlayıcı varsayılanlarını geçersiz kılar.

Gateway RPC

YöntemAmaç
tts.statusGeçerli TTS durumunu ve son denemeyi oku.
tts.enableYerel otomatik tercihi always olarak ayarla.
tts.disableYerel otomatik tercihi off olarak ayarla.
tts.convertTek seferlik metin → ses.
tts.setProviderYerel sağlayıcı tercihini ayarla.
tts.setPersonaYerel persona tercihini ayarla.
tts.providersYapılandırılmış sağlayıcıları ve durumu listele.

Hizmet bağlantıları

İlgili