Gemini Live API 문제 해결

이 문서에서는 Gemini Live API를 사용할 때 발생할 수 있는 문제의 문제 해결 단계를 제공합니다.

연결이 예기치 않게 끊김

세션 연결이 예기치 않게 끊어지는 경우 토큰 한도, 세션 연결 시간 제한 또는 네트워크 문제 때문일 수 있습니다.

행동

오류 코드 1000 또는 1006으로 세션 연결이 끊어졌습니다.

가능한 원인

  • 컨텍스트 윈도우 압축이 사용 설정되어 있지 않고 컨텍스트 토큰이 세션의 컨텍스트 토큰 한도 (최대 128,000)를 초과합니다.
  • 세션 재개 로직이 구현되지 않았거나 재개 로직이 올바르게 구현되지 않았습니다.
  • 인터넷 연결이 불안정합니다.

원인 및 해결 방법

  • 토큰이 세션의 컨텍스트 토큰 한도를 초과함: 세션의 컨텍스트 토큰 한도를 초과하지 않도록 컨텍스트 압축을 활성화합니다. 모델이 채팅 기록의 이전 부분을 간헐적으로 삭제하므로 대화 품질에 영향을 미칠 수 있습니다.

  • 세션 연결이 10분 후에 만료됨: 세션 재개를 관리하여 더 긴 상호작용을 허용합니다. 자세한 내용은 세션 재개 권장사항을 참고하세요.

  • 인터넷 연결이 불안정함: 안정성이 변동되면 연결 문제가 발생할 수 있으므로 인터넷 연결 상태를 확인합니다.

모델이 사용자를 이해하지 못함

모델이 입력을 이해하지 못하는 것 같으면 오디오 형식이 올바른지 확인하고 마이크 품질과 배경 소음을 고려하세요.

행동

모델이 관련 없는 정보로 응답하거나, 잘못된 정보로 응답하거나, 사용자에게 반복을 요청합니다.

가능한 원인

  • 입력 오디오 형식이 올바르지 않습니다.
  • 마이크 품질이 좋지 않습니다.
  • 배경 소음이 너무 큽니다.

원인 및 해결 방법

  • 입력 오디오 형식이 올바르지 않음: 입력 오디오가 16kHz 샘플링 속도와 단일 모노 채널이 있는 리틀 엔디안, 16비트 PCM 형식을 사용하는지 확인합니다.

  • 마이크 품질이 좋지 않음: 짧은 오디오를 녹음하고 재생하여 마이크 품질을 테스트합니다. 마이크 품질이 좋지 않으면 더 나은 품질의 마이크를 사용해 보세요.

  • 배경 소음이 너무 큼: 짧은 오디오를 녹음하고 재생하여 배경 소음 수준을 테스트합니다. 배경 소음 수준이 너무 높으면 마이크를 사용자에게 더 가까이 이동하거나 주변 소음 제거 기능이 더 좋은 마이크를 사용해 보세요.

모델이 응답하지 않음

모델에서 응답을 받지 못하는 경우 음성 활동 감지 옵션과 WebSocket 연결을 확인하세요.

행동

모델에서 응답이 없습니다.

가능한 원인

  • VAD 설정이 올바르게 설정되지 않았습니다.
  • WebSocket 연결이 중단되었습니다.

원인 및 해결 방법

  • VAD가 잘못 설정됨: 사용자가 VAD를 사용 중지했습니다. 이 경우 모델은 사용자의 음성을 계속 기다리고 사용자에게 응답하지 않습니다. VAD가 사용 중지된 경우 모델에 ActivityStartActivityEnd 이벤트를 전송해야 합니다.

  • WebSocket 연결이 중단됨: WebSocket 연결이 중단되면 클라이언트와 서버 간에 통신이 이루어지지 않습니다. WebSocket 연결 상태를 확인하고 올바르게 설정되었는지 확인합니다.

모델을 중단할 수 없음

모델이 말하는 동안 모델을 중단할 수 없는 경우 재생 버퍼와 스트리밍 오디오를 올바르게 처리하고 있는지 확인합니다.

행동

모델이 사용자의 중단 없이 계속 말합니다.

가능한 원인

  • 재생 버퍼를 플러시하지 못했습니다.
  • Gemini Live API로 오디오를 스트리밍하지 못했습니다.
  • 맞춤설정된 VAD가 올바르게 구현되지 않았습니다.

원인 및 해결 방법

  • 재생 버퍼를 플러시하지 못함: 클라이언트는 모델에서 인터럽트 신호를 수신하는 즉시 재생 버퍼를 플러시해야 합니다. 그러지 않으면 모델이 계속 말합니다.

  • Gemini Live API로 오디오를 스트리밍하지 못함: 클라이언트는 지연 시간을 최소화하기 위해 20~40ms 청크로 Gemini Live API에 오디오를 스트리밍해야 합니다. 클라이언트가 Gemini Live API로 오디오를 스트리밍하지 못하면 모델은 클라이언트에 인터럽트 신호를 전송하지 않습니다.

  • 맞춤설정된 VAD가 올바르게 구현되지 않음: 맞춤설정된 VAD가 음성 시작을 인식하지 못하거나 클라이언트가 모델에 ActivityStart 신호를 전송하지 못하면 모델은 클라이언트에 인터럽트 신호를 전송하지 않습니다.