Metin okuma (TTS)
OpenClaw, ElevenLabs, Google Gemini, Microsoft, MiniMax veya OpenAI kullanarak giden yanıtları sese dönüştürebilir. OpenClaw’ın ses gönderebildiği her yerde çalışır.Desteklenen hizmetler
- ElevenLabs (birincil veya yedek sağlayıcı)
- Google Gemini (birincil veya yedek sağlayıcı; Gemini API TTS kullanır)
- Microsoft (birincil veya yedek sağlayıcı; mevcut paketli uygulama
node-edge-ttskullanır) - MiniMax (birincil veya yedek sağlayıcı; T2A v2 API kullanır)
- OpenAI (birincil veya yedek sağlayıcı; ayrıca özetler için de kullanılır)
Microsoft konuşma notları
Paketli Microsoft konuşma sağlayıcısı şu anda Microsoft Edge’in çevrimiçi nöral TTS hizmetininode-edge-tts kütüphanesi üzerinden kullanır. Bu, barındırılan
(yani yerel olmayan) bir hizmettir, Microsoft uç noktalarını kullanır ve bir API anahtarı
gerektirmez.
node-edge-tts, konuşma yapılandırma seçeneklerini ve çıktı biçimlerini sunar, ancak
tüm seçenekler hizmet tarafından desteklenmez. edge kullanan eski yapılandırma ve yönerge girdileri
çalışmaya devam eder ve microsoft olarak normalize edilir.
Bu yol, yayımlanmış bir SLA veya kota olmayan herkese açık bir web hizmeti olduğu için,
bunu en iyi çaba esaslı olarak değerlendirin. Garantili sınırlar ve destek gerekiyorsa, OpenAI
veya ElevenLabs kullanın.
İsteğe bağlı anahtarlar
OpenAI, ElevenLabs, Google Gemini veya MiniMax istiyorsanız:ELEVENLABS_API_KEY(veyaXI_API_KEY)GEMINI_API_KEY(veyaGOOGLE_API_KEY)MINIMAX_API_KEYOPENAI_API_KEY
summaryModel değerini (veya agents.defaults.model.primary) kullanır,
bu nedenle özetleri etkinleştirirseniz ilgili sağlayıcının kimliği doğrulanmış olması da gerekir.
Hizmet bağlantıları
- OpenAI Metin okuma kılavuzu
- OpenAI Audio API başvurusu
- ElevenLabs Metinden Konuşmaya
- ElevenLabs Kimlik Doğrulama
- MiniMax T2A v2 API
- node-edge-tts
- Microsoft Speech çıktı biçimleri
Varsayılan olarak etkin mi?
Hayır. Otomatik TTS varsayılan olarak kapalıdır. Yapılandırmadamessages.tts.auto ile veya yerel olarak /tts on ile etkinleştirin.
messages.tts.provider ayarlanmadığında, OpenClaw kayıt defteri otomatik seçim sırasındaki
ilk yapılandırılmış konuşma sağlayıcısını seçer.
Yapılandırma
TTS yapılandırmasıopenclaw.json içinde messages.tts altında bulunur.
Tam şema Gateway yapılandırması bölümündedir.
En düşük yapılandırma (etkinleştirme + sağlayıcı)
ElevenLabs yedekli OpenAI birincil
Microsoft birincil (API anahtarı yok)
MiniMax birincil
Google Gemini birincil
messages.tts.providers.google.apiKey -> models.providers.google.apiKey ->
GEMINI_API_KEY -> GOOGLE_API_KEY şeklindedir.
Microsoft konuşmayı devre dışı bırakma
Özel sınırlar + prefs yolu
Yalnızca gelen bir sesli mesajdan sonra sesli yanıt verme
Uzun yanıtlar için otomatik özeti devre dışı bırakma
Alanlarla ilgili notlar
auto: otomatik TTS modu (off,always,inbound,tagged).inboundyalnızca gelen bir sesli mesajdan sonra ses gönderir.taggedyalnızca yanıtta[[tts:key=value]]yönergeleri veya bir[[tts:text]]...[[/tts:text]]bloğu varsa ses gönderir.
enabled: eski açma/kapatma anahtarıdır (doctorbunuautodeğerine taşır).mode:"final"(varsayılan) veya"all"(araç/blok yanıtlarını da içerir).provider:"elevenlabs","google","microsoft","minimax"veya"openai"gibi konuşma sağlayıcısı kimliği (yedek kullanım otomatiktir).providerayarlanmamışsa, OpenClaw kayıt defteri otomatik seçim sırasındaki ilk yapılandırılmış konuşma sağlayıcısını kullanır.- Eski
provider: "edge"hâlâ çalışır vemicrosoftolarak normalize edilir. summaryModel: otomatik özet için isteğe bağlı düşük maliyetli modeldir; varsayılan değeragents.defaults.model.primaryolur.provider/modelveya yapılandırılmış bir model takma adını kabul eder.
modelOverrides: modelin TTS yönergeleri üretmesine izin verir (varsayılan olarak açıktır).allowProvidervarsayılan olarakfalsedeğerindedir (sağlayıcı değiştirme isteğe bağlıdır).
providers.<id>: konuşma sağlayıcısı kimliğine göre anahtarlanan, sağlayıcıya ait ayarlardır.- Eski doğrudan sağlayıcı blokları (
messages.tts.openai,messages.tts.elevenlabs,messages.tts.microsoft,messages.tts.edge) yükleme sırasında otomatik olarakmessages.tts.providers.<id>konumuna taşınır. maxTextLength: TTS girdisi için sabit üst sınırdır (karakter). Aşılırsa/tts audiobaşarısız olur.timeoutMs: istek zaman aşımı (ms).prefsPath: yerel prefs JSON yolunu geçersiz kılar (sağlayıcı/sınır/özet).apiKeydeğerleri ortam değişkenlerine geri döner (ELEVENLABS_API_KEY/XI_API_KEY,GEMINI_API_KEY/GOOGLE_API_KEY,MINIMAX_API_KEY,OPENAI_API_KEY).providers.elevenlabs.baseUrl: ElevenLabs API temel URL’sini geçersiz kılar.providers.openai.baseUrl: OpenAI TTS uç noktasını geçersiz kılar.- Çözümleme sırası:
messages.tts.providers.openai.baseUrl->OPENAI_TTS_BASE_URL->https://api.openai.com/v1 - Varsayılan olmayan değerler OpenAI uyumlu TTS uç noktaları olarak değerlendirilir, bu nedenle özel model ve ses adları kabul edilir.
- Çözümleme sırası:
providers.elevenlabs.voiceSettings:stability,similarityBoost,style:0..1useSpeakerBoost:true|falsespeed:0.5..2.0(1.0 = normal)
providers.elevenlabs.applyTextNormalization:auto|on|offproviders.elevenlabs.languageCode: 2 harfli ISO 639-1 (ör.en,de)providers.elevenlabs.seed:0..4294967295tam sayısı (en iyi çaba düzeyinde belirlenimlilik)providers.minimax.baseUrl: MiniMax API temel URL’sini geçersiz kılar (varsayılanhttps://api.minimax.io, ortam:MINIMAX_API_HOST).providers.minimax.model: TTS modeli (varsayılanspeech-2.8-hd, ortam:MINIMAX_TTS_MODEL).providers.minimax.voiceId: ses tanımlayıcısıdır (varsayılanEnglish_expressive_narrator, ortam:MINIMAX_TTS_VOICE_ID).providers.minimax.speed: oynatma hızı0.5..2.0(varsayılan 1.0).providers.minimax.vol: ses düzeyi(0, 10](varsayılan 1.0; 0’dan büyük olmalıdır).providers.minimax.pitch: perde kaydırma-12..12(varsayılan 0).providers.google.model: Gemini TTS modeli (varsayılangemini-3.1-flash-tts-preview).providers.google.voiceName: Gemini hazır ses adı (varsayılanKore;voiceda kabul edilir).providers.google.baseUrl: Gemini API temel URL’sini geçersiz kılar. Yalnızcahttps://generativelanguage.googleapis.comkabul edilir.messages.tts.providers.google.apiKeyatlanırsa, TTS ortam değişkenine geri dönmeden öncemodels.providers.google.apiKeydeğerini yeniden kullanabilir.
providers.microsoft.enabled: Microsoft konuşma kullanımına izin verir (varsayılantrue; API anahtarı yoktur).providers.microsoft.voice: Microsoft nöral ses adı (ör.en-US-MichelleNeural).providers.microsoft.lang: dil kodu (ör.en-US).providers.microsoft.outputFormat: Microsoft çıktı biçimi (ör.audio-24khz-48kbitrate-mono-mp3).- Geçerli değerler için Microsoft Speech çıktı biçimlerine bakın; tüm biçimler paketli Edge tabanlı taşıma tarafından desteklenmez.
providers.microsoft.rate/providers.microsoft.pitch/providers.microsoft.volume: yüzde dizgeleri (ör.+10%,-5%).providers.microsoft.saveSubtitles: ses dosyasının yanına JSON altyazılar yazar.providers.microsoft.proxy: Microsoft konuşma istekleri için proxy URL’si.providers.microsoft.timeoutMs: istek zaman aşımı geçersiz kılma değeri (ms).edge.*: aynı Microsoft ayarları için eski takma addır.
Model odaklı geçersiz kılmalar (varsayılan olarak açık)
Varsayılan olarak model, tek bir yanıt için TTS yönergeleri üretebilir.messages.tts.auto değeri tagged olduğunda, sesi tetiklemek için bu yönergeler gereklidir.
Etkin olduğunda model, tek bir yanıt için sesi geçersiz kılmak amacıyla
[[tts:...]] yönergeleri yayımlayabilir; ayrıca yalnızca seste görünmesi gereken
ifade etiketlerini (kahkaha, şarkı söyleme ipuçları vb.) sağlamak için isteğe bağlı bir
[[tts:text]]...[[/tts:text]] bloğu da ekleyebilir.
provider=... yönergeleri, modelOverrides.allowProvider: true olmadıkça yok sayılır.
Örnek yanıt yükü:
provider(kayıtlı konuşma sağlayıcısı kimliği; örneğinopenai,elevenlabs,google,minimaxveyamicrosoft;allowProvider: truegerektirir)voice(OpenAI sesi),voiceName/voice_name/google_voice(Google sesi) veyavoiceId(ElevenLabs / MiniMax)model(OpenAI TTS modeli, ElevenLabs model kimliği veya MiniMax modeli) ya dagoogle_model(Google TTS modeli)stability,similarityBoost,style,speed,useSpeakerBoostvol/volume(MiniMax ses düzeyi, 0-10)pitch(MiniMax perde, -12 ile 12 arası)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Kullanıcı başına tercihler
Eğik çizgi komutları yerel geçersiz kılmalarıprefsPath konumuna yazar (varsayılan:
~/.openclaw/settings/tts.json, OPENCLAW_TTS_PREFS veya
messages.tts.prefsPath ile geçersiz kılınabilir).
Depolanan alanlar:
enabledprovidermaxLength(özet eşiği; varsayılan 1500 karakter)summarize(varsayılantrue)
messages.tts.* değerlerini geçersiz kılar.
Çıktı biçimleri (sabit)
- Feishu / Matrix / Telegram / WhatsApp: Opus sesli mesajı (
opus_48000_64ElevenLabs’ten,opusOpenAI’den).- 48kHz / 64kbps, sesli mesaj için iyi bir denge sunar.
- Diğer kanallar: MP3 (
mp3_44100_128ElevenLabs’ten,mp3OpenAI’den).- 44.1kHz / 128kbps, konuşma netliği için varsayılan dengedir.
- MiniMax: MP3 (
speech-2.8-hdmodeli, 32kHz örnekleme hızı). Sesli not biçimi yerel olarak desteklenmez; garantili Opus sesli mesajları için OpenAI veya ElevenLabs kullanın. - Google Gemini: Gemini API TTS ham 24kHz PCM döndürür. OpenClaw bunu ses ekleri için WAV olarak sarar ve Talk/telefon için PCM’i doğrudan döndürür. Yerel Opus sesli not biçimi bu yolda desteklenmez.
- Microsoft:
microsoft.outputFormatkullanır (varsayılanaudio-24khz-48kbitrate-mono-mp3).- Paketli taşıma bir
outputFormatkabul eder, ancak tüm biçimler hizmet tarafından sunulmaz. - Çı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 mesajları gerekiyorsa OpenAI/ElevenLabs kullanın. - Yapılandırılmış Microsoft çıktı biçimi başarısız olursa, OpenClaw MP3 ile yeniden dener.
- Paketli taşıma bir
Otomatik TTS davranışı
Etkin olduğunda OpenClaw:- Yanıt zaten medya veya bir
MEDIA:yönergesi içeriyorsa TTS’yi atlar. - Çok kısa yanıtları atlar (< 10 karakter).
- Etkinse uzun yanıtları
agents.defaults.model.primary(veyasummaryModel) kullanarak özetler. - Oluşturulan sesi yanıta ekler.
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.
Akış diyagramı
Eğik çizgi komutu kullanımı
Tek bir komut vardır:/tts.
Etkinleştirme ayrıntıları için Eğik çizgi komutları bölümüne bakın.
Discord notu: /tts, Discord’un yerleşik bir komutudur, bu nedenle OpenClaw
orada yerel komut olarak /voice kaydeder. Metin olarak /tts ... yine de çalışır.
- Komutlar yetkili bir gönderici gerektirir (izin listesi/sahip kuralları yine geçerlidir).
commands.textveya yerel komut kaydı etkinleştirilmiş olmalıdır.- Yapılandırma
messages.tts.auto,off|always|inbound|taggeddeğerlerini kabul eder. /tts on, yerel TTS tercihinialwaysolarak yazar;/tts offbunuoffolarak yazar.inboundveyataggedvarsayılanları istiyorsanız yapılandırmayı kullanın.limitvesummary, ana yapılandırmada değil yerel tercihlerde depolanır./tts audio, tek seferlik bir sesli yanıt üretir (TTS’yi açmaz)./tts status, son deneme için yedek kullanım görünürlüğünü içerir:- başarılı yedek kullanım:
Fallback: <primary> -> <used>artıAttempts: ... - başarısızlık:
Error: ...artıAttempts: ... - ayrıntılı tanılama:
Attempt details: provider:outcome(reasonCode) latency
- başarılı yedek kullanım:
- OpenAI ve ElevenLabs API hataları artık ayrıştırılmış sağlayıcı hata ayrıntısını ve istek kimliğini (sağlayıcı döndürdüğünde) içerir; bunlar TTS hatalarında/günlüklerinde gösterilir.
Ajan aracı
tts aracı metni konuşmaya dönüştürür ve
yanıt teslimi için bir ses eki döndürür. Kanal Feishu, Matrix, Telegram veya WhatsApp olduğunda,
ses dosya eki yerine sesli mesaj olarak teslim edilir.
Gateway RPC
Gateway yöntemleri:tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers