설명
면접 한 턴의 전체 파이프라인이 순차 실행되어 체감 지연이 큼.
목표: 전체 턴 응답 ≤3초.
현재 파이프라인 (순차, 합산 ~10-15초)
[사용자 발화 종료]
→ WebM→WAV 변환 (~0.5초)
→ STT/Whisper base, CPU (~2-5초) + 모델 로드 10초 + 300MB 메모리
→ 감정 분석/Gemini 2.5 Flash (~5.5초, thinking 포함)
→ LLM 응답/Gemini 2.5 Flash (~1-2초)
→ TTS/ElevenLabs (~1-2초)
[아바타 응답 시작]
핵심 변경: STT를 Gemini 2.0 Flash로 교체
Gemini Flash는 멀티모달이라 오디오 입력을 직접 받아 텍스트로 변환 가능.
Whisper + torch 의존성을 완전히 제거하고 Gemini API로 통합.
장점
- Whisper(base) CPU 2-5초 → Gemini API ~1초
- 앱 시작 시 모델 로드(10초 + 300MB) 제거
- torch/whisper/sentence-transformers 의존성 경량화
- TOKENIZERS_PARALLELISM mutex 문제 근본 해결
목표 파이프라인 (병렬화 + Gemini 통합)
[사용자 발화 종료]
→ WAV 변환 (~0.5초)
→ ┌ STT / Gemini 2.0 Flash (~1초) ┐
└ 감정 분석 / Gemini 2.0 Flash (~1초) ┘ 동시
→ LLM 응답 / Gemini 2.5 Flash (~1-2초)
→ TTS / ElevenLabs (~1-2초)
[아바타 응답 시작]
합계: ~3초 (3단계로 압축)
작업 내용
1. STT: Whisper → Gemini 2.0 Flash 교체
2. 감정 분석 모델 변경
3. STT + 감정 분석 병렬화
4. 의존성 정리
5. 레이턴시 측정 로그
수정 파일
start_app/dialogue_manager/speech2text.py (Whisper → Gemini)
start_app/helper/user_emotion.py (모델 + max_tokens)
start_app/app.py (병렬화 + TOKENIZERS 제거)
requirements.txt (whisper 제거)
start_app/tests/ (테스트 업데이트)
완료 기준
- 전체 턴 응답 ≤3초 (레이턴시 로그로 증명)
- 기존 34개 테스트 통과 (STT mock 업데이트)
- Whisper/torch 의존성 완전 제거
- 한국어 인식 정확도 Whisper base와 동등 이상
설명
면접 한 턴의 전체 파이프라인이 순차 실행되어 체감 지연이 큼.
목표: 전체 턴 응답 ≤3초.
현재 파이프라인 (순차, 합산 ~10-15초)
핵심 변경: STT를 Gemini 2.0 Flash로 교체
Gemini Flash는 멀티모달이라 오디오 입력을 직접 받아 텍스트로 변환 가능.
Whisper + torch 의존성을 완전히 제거하고 Gemini API로 통합.
장점
목표 파이프라인 (병렬화 + Gemini 통합)
작업 내용
1. STT: Whisper → Gemini 2.0 Flash 교체
speech2text.py: Whisper 모델 로드 제거, Gemini API로 교체Part.from_bytes(mime_type="audio/wav")로 전송2. 감정 분석 모델 변경
user_emotion.py:gemini-2.5-flash→gemini-2.0-flashmax_output_tokens1024 → 200 (thinking 없으면 충분)3. STT + 감정 분석 병렬화
app.py/upload_audio:concurrent.futures.ThreadPoolExecutor사용4. 의존성 정리
requirements.txt:openai-whisper제거app.py:TOKENIZERS_PARALLELISM환경변수 제거 (불필요)5. 레이턴시 측정 로그
[Latency] STT=1.2s, Emotion=0.8s, LLM=1.1s, TTS=0.9s, Total=3.0s수정 파일
start_app/dialogue_manager/speech2text.py(Whisper → Gemini)start_app/helper/user_emotion.py(모델 + max_tokens)start_app/app.py(병렬화 + TOKENIZERS 제거)requirements.txt(whisper 제거)start_app/tests/(테스트 업데이트)완료 기준