OpenAI 기본, ElevenLabs 대체
Edge TTS 기본 (API 키 없음)
Edge TTS 비활성화
사용자 지정 한계치 및 환경 설정 경로
인바운드 음성 노트를 받은 후에만 음성으로 응답
긴 응답에 대한 자동 요약 비활성화
필드에 대한 주의사항
auto: 자동 TTS 모드 (off,always,inbound,tagged).inbound는 인바운드 음성 노트를 받은 후에만 오디오를 전송합니다.tagged는[[tts]]태그가 포함된 경우에만 오디오를 전송합니다.
enabled: 레거시 토글 (doctor가 이를auto로 마이그레이션합니다).mode:"final"(기본값) 또는"all"(도구/블록 응답 포함).provider:"elevenlabs","openai", 또는"edge"(대체는 자동).provider가 설정되지 않은 경우, OpenClaw는openai(키가 있는 경우), 그 후elevenlabs(키가 있는 경우), 그렇지 않으면edge를 선호합니다.summaryModel: 자동 요약용 선택적 저가 모델; 기본값은agents.defaults.model.primary.provider/model이나 설정된 모델 별칭을 수락합니다.
modelOverrides: 모델이 TTS 지시를 발행할 수 있도록 허용 (기본값으로 활성화).maxTextLength: TTS 입력에 대한 하드 캡 (문자)./tts audio가 초과되면 실패합니다.timeoutMs: 요청 타임아웃 (ms).prefsPath: 로컬 환경 설정 JSON 경로 재정의 (프로바이더/한계/요약).apiKey값은 환경 변수 (ELEVENLABS_API_KEY/XI_API_KEY,OPENAI_API_KEY)로 대체됩니다.elevenlabs.baseUrl: ElevenLabs API 기본 URL 재정의.elevenlabs.voiceSettings:stability,similarityBoost,style:0..1useSpeakerBoost:true|falsespeed:0.5..2.0(1.0 = 정상)
elevenlabs.applyTextNormalization:auto|on|offelevenlabs.languageCode: 2글자 ISO 639-1 (예:en,de)elevenlabs.seed: 정수0..4294967295(최선의 노력 결정론)edge.enabled: Edge TTS 사용 허용 (기본값true; API 키 없음).edge.voice: Edge 뉴럴 음성 이름 (예:en-US-MichelleNeural).edge.lang: 언어 코드 (예:en-US).edge.outputFormat: Edge 출력 형식 (예:audio-24khz-48kbitrate-mono-mp3).- Microsoft Speech 출력 형식에서 유효한 값을 참조하십시오; 모든 형식이 Edge에서 지원되지 않습니다.
edge.rate/edge.pitch/edge.volume: 백분위 문자열 (예:+10%,-5%).edge.saveSubtitles: 오디오 파일과 함께 JSON 자막 작성.edge.proxy: Edge TTS 요청을 위한 프록시 URL.edge.timeoutMs: 요청 타임아웃 재정의 (ms).
모델 기반 재정의 (기본값으로 활성화)
기본값으로, 모델은 단일 응답에 대해 TTS 지시문을 발행할 수 있습니다.messages.tts.auto가 tagged인 경우, 이 지시문들은 오디오를 트리거하기 위해 필수입니다.
활성화되면, 모델은 [[tts:...]] 지시문을 발행하여 단일 응답에 대한 음성을 재정의하고, 선택적으로 [[tts:text]]...[[/tts:text]] 블록을 발행하여 웃음, 노래 큐와 같은 표현 태그를 제공할 수 있으며, 이는 오디오에만 나타나야 합니다.
예제 응답 페이로드:
provider(openai|elevenlabs|edge)voice(OpenAI 음성) 또는voiceId(ElevenLabs)model(OpenAI TTS 모델 또는 ElevenLabs 모델 ID)stability,similarityBoost,style,speed,useSpeakerBoostapplyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
사용자별 환경 설정
슬래시 명령어는 로컬 환경 설정을prefsPath(기본값: ~/.openclaw/settings/tts.json, OPENCLAW_TTS_PREFS 또는 messages.tts.prefsPath로 재정의)에 기록합니다.
저장된 필드:
enabledprovidermaxLength(요약 임계값; 기본 1500자)summarize(기본값true)
messages.tts.*를 재정의합니다.
출력 형식 (고정)
- Telegram: Opus 음성 노트 (
opus_48000_64from ElevenLabs,opusfrom OpenAI).- 48kHz / 64kbps는 음성 노트에 적합한 트레이드 오프이며 둥근 버블에 필요합니다.
- 기타 채널: MP3 (
mp3_44100_128from ElevenLabs,mp3from OpenAI).- 44.1kHz / 128kbps는 음성 명료도의 기본 균형입니다.
- Edge TTS:
edge.outputFormat사용 (기본값audio-24khz-48kbitrate-mono-mp3).node-edge-tts는outputFormat을 수락하지만 모든 형식이 Edge 서비스에서 사용 가능하지 않습니다. Microsoft Speech 출력 형식 값을 포함한 형식 (Ogg/WebM Opus 포함).- Telegram
sendVoice는 OGG/MP3/M4A를 수락합니다; 보장된 Opus 음성 노트가 필요하면 OpenAI/ElevenLabs를 사용하십시오. - 구성된 Edge 출력 형식이 실패하면, OpenClaw는 MP3로 재시도합니다.
자동 TTS 동작
활성화되면, OpenClaw는:- 응답에 이미 미디어가 있거나
MEDIA:지시문이 포함된 경우 TTS를 건너뜁니다. - 매우 짧은 응답 (< 10자)을 건너뜁니다.
- 활성화된 경우,
agents.defaults.model.primary(또는summaryModel)를 사용하여 긴 응답을 요약합니다. - 생성된 오디오를 응답에 첨부합니다.
maxLength를 초과하고 요약이 비활성화된 경우 (또는 요약 모델에 대한 API 키가 없는 경우), 오디오가 건너뛰어지고 일반 텍스트 응답이 전송됩니다.
흐름 다이어그램
슬래시 명령어 사용
명령어는 하나입니다:/tts. 슬래시 명령어에서 활성화 세부 정보를 확인하십시오.
Discord 주의: /tts는 Discord의 내장 명령어이기 때문에, OpenClaw는 해당 지점에서 네이티브 명령어로 /voice를 등록합니다. 텍스트 /tts ...는 여전히 작동합니다.
- 명령어는 인증된 발신자가 필요합니다 (허용 목록/소유자 규칙은 여전히 적용됨).
commands.text또는 네이티브 명령어 등록이 활성화되어야 합니다.off|always|inbound|tagged는 세션별로 토글됩니다 (/tts on은/tts always의 별칭임).limit및summary는 로컬 환경 설정에 저장되며, 메인 설정에는 적용되지 않음./tts audio는 일회성 오디오 응답을 생성하여 TTS를 켜지 않습니다.
에이전트 도구
tts 도구는 텍스트를 음성으로 변환하고 MEDIA: 경로를 반환합니다. 결과가 Telegram 호환되면, 도구는 [[audio_as_voice]]를 포함하여 Telegram이 음성 버블을 보낼 수 있도록 합니다.
게이트웨이 RPC
게이트웨이 메서드:tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers