감정 인식 대화

감정 인식 대화는 에이전트가 감정을 인식하도록 합니다. 사용자의 목소리에서 좌절감, 흥분, 망설임과 같은 어조를 파악하고, 이에 맞춰 자신의 전달 방식도 조정합니다. 좌절한 고객에게는 더 차분하고 세심한 에이전트의 응답을 들려주고, 기분이 좋은 고객에게는 따뜻한 응답을 돌려줍니다. 이것이 대본과 대화의 차이입니다.

활성화

RealtimeConfig에서 빌더 호출 한 번으로 활성화할 수 있습니다.

let config = RealtimeConfig::default()
    .with_instruction("You are a warm, empathetic support agent.")
    .with_voice("Kore")
    .with_audio_only()
    .with_vad(VadConfig::server_vad())
    .with_transcription()
    .with_affective_dialog(true);   // ← emotion-aware responses

요구 사항(읽어 보세요)

감정 인식 대화는 Gemini 전용 기능이며 다음 두 가지 필수 요구 사항이 있습니다.

  1. 네이티브 오디오 모델. gemini-3.1-flash-live-preview에서는 지원되지 않습니다. models/gemini-live-2.5-flash-native-audio와 같은 네이티브 오디오 모델을 사용하세요.
  2. v1alpha 엔드포인트. 크레이트의 GeminiLiveBackend::studio(...)는 이미 v1alpha을 통해 연결되므로, 이 부분은 자동으로 처리됩니다.

지원하지 않는 모델에서 with_affective_dialog(true)을 설정하면 Gemini 설정이 "Unknown name enableAffectiveDialog" 오류와 함께 거부되고 세션이 종료됩니다. 따라서 활성화할 때 모델을 전환하세요.

let (default_model, voice) = if affective {
    ("models/gemini-live-2.5-flash-native-audio", "Kore")
} else {
    ("models/gemini-3.1-flash-live-preview", "Kore")
};

OpenAI에서는(그리고 네이티브 모델이 아닌 Gemini 모델에서는) with_affective_dialog(true)아무 작업도 하지 않습니다. 즉, 무해하며 단순히 무시되므로 항상 설정해 두고 제공자가 결정하도록 맡겨도 안전합니다.

절충점

네이티브 오디오 모델은 가장 자연스럽고 표현력 있는 음성 및 감정 적응 기능을 제공하지만, 하프 캐스케이드 모델보다 도구 호출의 안정성이 떨어집니다. 따라서 이는 실제로 선택이 필요한 문제입니다.

  • 도구 중심 에이전트(환불, 조회, 작업) → 하프 캐스케이드 (gemini-3.1-flash-live-preview), 감정 인식 대화 사용 안 함.
  • 공감 우선 에이전트(지원 과정에서의 긴장 완화, 동반, 코칭) → 네이티브 오디오 + 감정 인식 대화.

customer_service 예제에서는 바로 이러한 이유로 선택적으로 활성화합니다. CS_AFFECTIVE=1는 Gemini를 네이티브 오디오 모델로 전환하고 플래그를 활성화하며, 그렇지 않으면 도구 호출에 안정적인 모델을 유지합니다.

내부 동작

with_affective_dialog(true)RealtimeConfig.affective_dialog을 설정하며, Gemini 설정은 enableAffectiveDialog: truegenerationConfig 내부에 출력합니다 (설정 최상위 수준이 아님 — v1alpha 엔드포인트는 해당 위치에서 이를 거부합니다). 이를 사용하기 위해 이 내용을 알 필요는 없지만, 이것이 모델 및 엔드포인트 요구 사항이 엄격한 이유입니다.

플래그 없이도 공감하기. OpenAI 또는 하프 캐스케이드 모델에서도 잘 작성된 지침(“사용자의 감정 상태를 알아차리고 진심으로 인정하라”)은 의미 있게 공감하는 동작을 만들어 냅니다. 감정 대화는 Gemini 네이티브 오디오에서 그 위에 진정한 음향적 톤 매칭을 더합니다.

다음: 메모리 →

감정 인식 대화 - ADK-Rust 문서 | ADK-Rust