Sintesi vocale (TTS)
OpenClaw può convertire le risposte in uscita in audio usando ElevenLabs, Microsoft, MiniMax o OpenAI. Funziona ovunque OpenClaw possa inviare audio.Servizi supportati
- ElevenLabs (provider primario o di fallback)
- Microsoft (provider primario o di fallback; l’implementazione bundled attuale usa
node-edge-tts) - MiniMax (provider primario o di fallback; usa l’API T2A v2)
- OpenAI (provider primario o di fallback; usato anche per i riepiloghi)
Note sulla sintesi vocale Microsoft
Il provider di sintesi vocale Microsoft bundled attualmente usa il servizio TTS neurale online di Microsoft Edge tramite la librerianode-edge-tts. È un servizio hosted (non
locale), usa endpoint Microsoft e non richiede una chiave API.
node-edge-tts espone opzioni di configurazione della sintesi e formati di output, ma
non tutte le opzioni sono supportate dal servizio. La configurazione legacy e l’input direttiva
che usa edge continuano a funzionare e vengono normalizzati in microsoft.
Poiché questo percorso è un servizio web pubblico senza SLA o quota pubblicati,
consideralo best-effort. Se hai bisogno di limiti garantiti e supporto, usa OpenAI
o ElevenLabs.
Chiavi facoltative
Se vuoi usare OpenAI, ElevenLabs o MiniMax:ELEVENLABS_API_KEY(oXI_API_KEY)MINIMAX_API_KEYOPENAI_API_KEY
summaryModel configurato (o agents.defaults.model.primary),
quindi anche quel provider deve essere autenticato se abiliti i riepiloghi.
Link ai servizi
- Guida OpenAI Text-to-Speech
- Riferimento API OpenAI Audio
- ElevenLabs Text to Speech
- Autenticazione ElevenLabs
- API MiniMax T2A v2
- node-edge-tts
- Formati di output Microsoft Speech
È abilitato per impostazione predefinita?
No. L’auto‑TTS è disattivato per impostazione predefinita. Abilitalo nella configurazione conmessages.tts.auto o per sessione con /tts always (alias: /tts on).
Quando messages.tts.provider non è impostato, OpenClaw sceglie il primo
provider di sintesi vocale configurato nell’ordine di selezione automatica del registro.
Configurazione
La configurazione TTS si trova sottomessages.tts in openclaw.json.
Lo schema completo è in Configurazione del Gateway.
Configurazione minima (abilitazione + provider)
OpenAI primario con fallback ElevenLabs
Microsoft primario (nessuna chiave API)
MiniMax primario
Disabilitare la sintesi vocale Microsoft
Limiti personalizzati + percorso prefs
Rispondere con audio solo dopo un messaggio vocale in entrata
Disabilitare il riepilogo automatico per risposte lunghe
Note sui campi
auto: modalità auto‑TTS (off,always,inbound,tagged).inboundinvia audio solo dopo un messaggio vocale in entrata.taggedinvia audio solo quando la risposta include tag[[tts]].
enabled: interruttore legacy (doctor lo migra inauto).mode:"final"(predefinito) o"all"(include risposte di strumenti/blocchi).provider: ID del provider di sintesi vocale come"elevenlabs","microsoft","minimax"o"openai"(il fallback è automatico).- Se
providernon è impostato, OpenClaw usa il primo provider di sintesi vocale configurato nell’ordine di selezione automatica del registro. - Il legacy
provider: "edge"continua a funzionare e viene normalizzato inmicrosoft. summaryModel: modello economico facoltativo per il riepilogo automatico; il valore predefinito èagents.defaults.model.primary.- Accetta
provider/modelo un alias di modello configurato.
- Accetta
modelOverrides: consente al modello di emettere direttive TTS (attivo per impostazione predefinita).allowProviderèfalseper impostazione predefinita (il cambio provider è facoltativo).
providers.<id>: impostazioni gestite dal provider, con chiave sull’ID del provider di sintesi vocale.- I blocchi provider legacy diretti (
messages.tts.openai,messages.tts.elevenlabs,messages.tts.microsoft,messages.tts.edge) vengono migrati automaticamente inmessages.tts.providers.<id>al caricamento. maxTextLength: limite rigido per l’input TTS (caratteri)./tts audiofallisce se viene superato.timeoutMs: timeout della richiesta (ms).prefsPath: sovrascrive il percorso JSON locale delle preferenze (provider/limite/riepilogo).- I valori
apiKeyusano come fallback le variabili d’ambiente (ELEVENLABS_API_KEY/XI_API_KEY,MINIMAX_API_KEY,OPENAI_API_KEY). providers.elevenlabs.baseUrl: sovrascrive l’URL base dell’API ElevenLabs.providers.openai.baseUrl: sovrascrive l’endpoint OpenAI TTS.- Ordine di risoluzione:
messages.tts.providers.openai.baseUrl->OPENAI_TTS_BASE_URL->https://api.openai.com/v1 - I valori non predefiniti vengono trattati come endpoint TTS compatibili con OpenAI, quindi sono accettati nomi personalizzati di modello e voce.
- Ordine di risoluzione:
providers.elevenlabs.voiceSettings:stability,similarityBoost,style:0..1useSpeakerBoost:true|falsespeed:0.5..2.0(1.0 = normale)
providers.elevenlabs.applyTextNormalization:auto|on|offproviders.elevenlabs.languageCode: ISO 639-1 a 2 lettere (per esempioen,de)providers.elevenlabs.seed: intero0..4294967295(determinismo best-effort)providers.minimax.baseUrl: sovrascrive l’URL base dell’API MiniMax (predefinitohttps://api.minimax.io, env:MINIMAX_API_HOST).providers.minimax.model: modello TTS (predefinitospeech-2.8-hd, env:MINIMAX_TTS_MODEL).providers.minimax.voiceId: identificatore voce (predefinitoEnglish_expressive_narrator, env:MINIMAX_TTS_VOICE_ID).providers.minimax.speed: velocità di riproduzione0.5..2.0(predefinito 1.0).providers.minimax.vol: volume(0, 10](predefinito 1.0; deve essere maggiore di 0).providers.minimax.pitch: variazione di tono-12..12(predefinito 0).providers.microsoft.enabled: consente l’uso della sintesi vocale Microsoft (predefinitotrue; nessuna chiave API).providers.microsoft.voice: nome della voce neurale Microsoft (per esempioen-US-MichelleNeural).providers.microsoft.lang: codice lingua (per esempioen-US).providers.microsoft.outputFormat: formato di output Microsoft (per esempioaudio-24khz-48kbitrate-mono-mp3).- Vedi i formati di output Microsoft Speech per i valori validi; non tutti i formati sono supportati dal trasporto bundled basato su Edge.
providers.microsoft.rate/providers.microsoft.pitch/providers.microsoft.volume: stringhe percentuali (per esempio+10%,-5%).providers.microsoft.saveSubtitles: scrive sottotitoli JSON accanto al file audio.providers.microsoft.proxy: URL proxy per le richieste di sintesi vocale Microsoft.providers.microsoft.timeoutMs: override del timeout richiesta (ms).edge.*: alias legacy per le stesse impostazioni Microsoft.
Override guidati dal modello (attivi per impostazione predefinita)
Per impostazione predefinita, il modello può emettere direttive TTS per una singola risposta. Quandomessages.tts.auto è tagged, queste direttive sono necessarie per attivare l’audio.
Quando è abilitato, il modello può emettere direttive [[tts:...]] per sovrascrivere la voce
per una singola risposta, più un blocco facoltativo [[tts:text]]...[[/tts:text]] per
fornire tag espressivi (risate, indicazioni di canto, ecc.) che devono comparire solo
nell’audio.
Le direttive provider=... vengono ignorate a meno che modelOverrides.allowProvider: true.
Payload di risposta di esempio:
provider(ID provider di sintesi vocale registrato, per esempioopenai,elevenlabs,minimaxomicrosoft; richiedeallowProvider: true)voice(voce OpenAI) ovoiceId(ElevenLabs / MiniMax)model(modello OpenAI TTS, ID modello ElevenLabs o modello MiniMax)stability,similarityBoost,style,speed,useSpeakerBoostvol/volume(volume MiniMax, 0-10)pitch(tono MiniMax, da -12 a 12)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Preferenze per utente
I comandi slash scrivono override locali inprefsPath (predefinito:
~/.openclaw/settings/tts.json, sovrascrivibile con OPENCLAW_TTS_PREFS o
messages.tts.prefsPath).
Campi memorizzati:
enabledprovidermaxLength(soglia di riepilogo; predefinito 1500 caratteri)summarize(predefinitotrue)
messages.tts.* per quell’host.
Formati di output (fissi)
- Feishu / Matrix / Telegram / WhatsApp: messaggio vocale Opus (
opus_48000_64da ElevenLabs,opusda OpenAI).- 48kHz / 64kbps è un buon compromesso per i messaggi vocali.
- Altri canali: MP3 (
mp3_44100_128da ElevenLabs,mp3da OpenAI).- 44.1kHz / 128kbps è il bilanciamento predefinito per la chiarezza del parlato.
- MiniMax: MP3 (
speech-2.8-hd, frequenza di campionamento 32kHz). Il formato nota vocale non è supportato nativamente; usa OpenAI o ElevenLabs per messaggi vocali Opus garantiti. - Microsoft: usa
microsoft.outputFormat(predefinitoaudio-24khz-48kbitrate-mono-mp3).- Il trasporto bundled accetta un
outputFormat, ma non tutti i formati sono disponibili dal servizio. - I valori del formato di output seguono i formati di output Microsoft Speech (inclusi Ogg/WebM Opus).
- Telegram
sendVoiceaccetta OGG/MP3/M4A; usa OpenAI/ElevenLabs se hai bisogno di messaggi vocali Opus garantiti. - Se il formato di output Microsoft configurato fallisce, OpenClaw riprova con MP3.
- Il trasporto bundled accetta un
Comportamento auto-TTS
Quando è abilitato, OpenClaw:- salta il TTS se la risposta contiene già media o una direttiva
MEDIA:. - salta le risposte molto brevi (< 10 caratteri).
- riassume le risposte lunghe quando abilitato usando
agents.defaults.model.primary(osummaryModel). - allega l’audio generato alla risposta.
maxLength e il riepilogo è disattivato (o manca una chiave API per il
modello di riepilogo), l’audio
viene saltato e viene inviata la normale risposta testuale.
Diagramma di flusso
Uso dei comandi slash
Esiste un solo comando:/tts.
Vedi Comandi slash per i dettagli di abilitazione.
Nota Discord: /tts è un comando Discord integrato, quindi OpenClaw registra
/voice come comando nativo lì. Il testo /tts ... continua a funzionare.
- I comandi richiedono un mittente autorizzato (continuano ad applicarsi le regole allowlist/proprietario).
commands.texto la registrazione del comando nativo devono essere abilitati.off|always|inbound|taggedsono interruttori per sessione (/tts onè un alias di/tts always).limitesummaryvengono memorizzati nelle preferenze locali, non nella configurazione principale./tts audiogenera una risposta audio una tantum (non abilita/disabilita il TTS)./tts statusinclude la visibilità del fallback per l’ultimo tentativo:- fallback riuscito:
Fallback: <primary> -> <used>piùAttempts: ... - errore:
Error: ...piùAttempts: ... - diagnostica dettagliata:
Attempt details: provider:outcome(reasonCode) latency
- fallback riuscito:
- Gli errori API OpenAI ed ElevenLabs ora includono dettagli dell’errore provider analizzati e request id (quando restituito dal provider), che vengono mostrati negli errori/log TTS.
Strumento agente
Lo strumentotts converte il testo in sintesi vocale e restituisce un allegato audio per
la consegna della risposta. Quando il canale è Feishu, Matrix, Telegram o WhatsApp,
l’audio viene recapitato come messaggio vocale invece che come allegato file.
RPC del Gateway
Metodi Gateway:tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers