WebSocket & STT

wera4677·2025년 9월 1일

프로젝트

목록 보기
13/18

AWS Transcribe Streaming + WebSocket을 활용한 실시간 STT

개요

AI 면접 서비스 프로젝트를 진행하면서, 사용자의 답변을 실시간으로 텍스트로 변환(STT) 하는 기능이 필요했다.
단순 파일 업로드 방식으로는 지연(latency)이 너무 커서 실시간 면접 환경에 맞지 않았다.
따라서 AWS Transcribe Streaming을 WebSocket과 연동하여 테스트했고, 그 과정을 정리했다.


기존 문제

  • Amazon Transcribe의 기본 API 방식은 비동기 처리로 동작 → 녹음 파일 업로드 후 결과 제공

  • 실제 테스트 결과 10초 이상 지연이 발생

  • 면접 서비스에서는 1초 이내의 반응이 필요했기 때문에 기존 방식은 부적합했다

  • 완전 초기에는 15초 이상 소요가 되었음 -> 어느정도 최적화 하니깐 10초로 단축
    (하지만 아직 많은 지연시간이 발생함)


시도한 방법

(1) 파일 업로드 방식

  • 구조: 음성 녹음 → 파일 S3 업로드 → Transcribe → 결과 반환
  • 결과: 지연 10초 이상 발생
  • 결론: 실시간 면접에 부적합 ❌

(2) WebSocket Streaming 방식

  • 구조: 마이크 입력 → WebSocket으로 실시간 스트리밍 → Transcribe Streaming API → Partial Result 반환
  • 특징:
    • 짧은 단위(수백 ms)로 음성을 전송
    • Partial Transcript를 실시간으로 받아 즉시 자막/피드백 가능

테스트 환경

  • Python + FastAPI WebSocket 서버
  • 브라우저: WebRTC 기반 마이크 캡처 → PCM 변환
  • AWS Transcribe 설정:
    • 샘플레이트: 16kHz, mono, PCM
    • 언어: 한국어 (ko-KR)

테스트 결과

  • 지연 시간
    • 파일 업로드: 평균 10초+ (Socket 적용전)
    • WebSocket: 0.5 ~ 1초 내 응답 (Socket 적용후)
  • 정확도
    • 빠른 발화, 억양 처리에서 일부 오류
    • Whisper 대비 낮았지만 실시간성에서는 장점
  • 추가 발견
    • 짧은 무음 처리 필요 → 불필요한 부분까지 텍스트화되는 문제
    • 전송 버퍼 크기(20~30ms 단위 프레임)가 성능에 큰 영향
  • 사용자의 응답 즉시 변환되는것을 확인
  • 처음에는 websocket이 시작하자 마자 종료되는 현상이 발생했지만, 시간 지정과 버튼 트리거를 통해서 해결

  • S3에도 음성이 변환이 되어 업로드 되는것을 확인
  • 프론트(녹음) → 웹소켓을 통해 실시간 트랜스 크라이브 API 호출→ s3에 업로드


마무리

이번 테스트를 통해 “WebSocket + AWS Transcribe Streaming” 조합이 
실시간 AI 면접 서비스에 적합하다는 결론을 얻었다.  
향후에는 Whisper/Faster-Whisper와 비교 테스트를 진행해 정확도 vs 지연 vs 비용 균형을 
더 최적화할 예정이다.
profile
클라우드 꿈나무🌳

0개의 댓글