Talk Mode

Talk 모드는 연속적인 음성 대화 루프입니다:

  1. 음성 듣기
  2. 전사를 모델에 전송(메인 세션, chat.send)
  3. 응답 대기
  4. ElevenLabs를 통해 말하기(스트리밍 재생)

동작 (macOS)

  • Talk 모드가 활성화된 동안 항상 표시되는 오버레이
  • Listening → Thinking → Speaking 단계 전환
  • 짧은 일시 정지(침묵 윈도우) 시 현재 전사가 전송됩니다
  • 답장은 WebChat에 작성됩니다(타이핑과 동일)
  • 음성 시 중단 (기본값 on): 어시스턴트가 말하는 동안 사용자가 말하기 시작하면 재생을 중지하고 다음 프롬프트에 대한 중단 타임스탬프를 기록합니다

답장의 음성 지시문

어시스턴트는 음성을 제어하기 위해 답장 앞에 단일 JSON 라인을 붙일 수 있습니다:

{"voice":"<voice-id>","once":true}

규칙:

  • 첫 번째 비어 있지 않은 라인만
  • 알 수 없는 키는 무시됩니다
  • once: true는 현재 답장에만 적용됩니다
  • once 없이는 음성이 Talk 모드의 새 기본값이 됩니다
  • JSON 라인은 TTS 재생 전에 제거됩니다

지원되는 키:

  • voice / voice_id / voiceId
  • model / model_id / modelId
  • speed, rate (WPM), stability, similarity, style, speakerBoost
  • seed, normalize, lang, output_format, latency_tier
  • once

설정 (~/.openclaw/openclaw.json)

{
  "talk": {
    "voiceId": "elevenlabs_voice_id",
    "modelId": "eleven_v3",
    "outputFormat": "mp3_44100_128",
    "apiKey": "elevenlabs_api_key",
    "interruptOnSpeech": true
  }
}

기본값:

  • interruptOnSpeech: true
  • voiceId: ELEVENLABS_VOICE_ID / SAG_VOICE_ID로 폴백(또는 API 키가 있을 때 첫 번째 ElevenLabs 음성)
  • modelId: 설정되지 않은 경우 기본값 eleven_v3
  • apiKey: ELEVENLABS_API_KEY로 폴백(또는 사용 가능한 경우 Gateway shell 프로필)
  • outputFormat: macOS/iOS에서 기본값 pcm_44100, Android에서 pcm_24000 (MP3 스트리밍을 강제하려면 mp3_* 설정)

macOS UI

  • 메뉴 바 토글: Talk
  • 설정 탭: Talk Mode 그룹(음성 ID + 중단 토글)
  • 오버레이:
    • Listening: 마이크 레벨에 따라 클라우드 펄스
    • Thinking: 가라앉는 애니메이션
    • Speaking: 방사형 링
    • 클라우드 클릭: 말하기 중지
    • X 클릭: Talk 모드 종료

참고 사항

  • Speech + Microphone 권한 필요
  • 세션 키 main에 대해 chat.send 사용
  • TTS는 ELEVENLABS_API_KEY를 사용한 ElevenLabs 스트리밍 API를 사용하며 더 낮은 지연 시간을 위해 macOS/iOS/Android에서 증분 재생 사용
  • eleven_v3stability0.0, 0.5, 또는 1.0으로 검증됩니다; 다른 모델은 0..1을 허용합니다
  • latency_tier는 설정 시 0..4로 검증됩니다
  • Android는 낮은 지연 시간 AudioTrack 스트리밍을 위해 pcm_16000, pcm_22050, pcm_24000, pcm_44100 출력 형식을 지원합니다