Speaker-labeled transcription with WhisperX on SageMaker AI
Quick Summary
AWS WhisperX DLC를 Amazon SageMaker AI에 배포하면 단어별 타임스탬프와 화자 라벨을 제공하는 전사가 가능하며, 짧은 음성은 60초 응답 제한이 있는 실시간 엔드포인트로, 긴 음성은 Amazon S3 기반 비동기 엔드포인트로 처리한다.
🖼️ 인포그래픽

🖼️ 4컷 인포그래픽

💡 한 줄 요약
AWS WhisperX DLC를 Amazon SageMaker AI에 배포하면 단어별 타임스탬프와 화자 라벨을 제공하는 전사가 가능하며, 짧은 음성은 60초 응답 제한이 있는 실시간 엔드포인트로, 긴 음성은 Amazon S3 기반 비동기 엔드포인트로 처리한다.
📌 핵심 요약
- WhisperX는 OpenAI의 Whisper에 배치 추론, wav2vec2 강제 정렬, 화자 분리를 결합해 전사 속도와 단어별 타임스탬프, 화자 라벨을 제공한다.
- AWS WhisperX DLC는 Whisper와 정렬 모델, 화자 분리 가중치를 포함하는 GPU용 이미지로, 별도 이미지 제작이나 Hugging Face 토큰 없이 Amazon SageMaker AI에 배포할 수 있다.
- 실시간 엔드포인트는 60초 안에 처리가 끝나는 짧은 대화형 음성에 적합하며, 비동기 엔드포인트는 Amazon S3로 입출력을 전달하고 결과를 폴링하는 긴 음성·대량 처리용 권장 경로다.
- 두 배포 방식 모두 GPU의 InferenceAmiVersion을 al2-ami-sagemaker-inference-gpu-3-1로 고정해야 하며, 처리량은 인스턴스를 추가해 늘린다. 비동기 엔드포인트는 유휴 시 인스턴스 수를 0으로 줄여 비용을 절감할 수 있다.
- 예제는 2009년 US Airways Flight 1549의 항공관제 교신을 사용하며, 약 3분 전체 녹음은 비동기로, 40초 구간은 실시간으로 처리한다. 제공된 원문은 비동기 호출에서 OutputLocation과 FailureLocation을 받는 설명 직후 중단된다.
🧩 주요 포인트
- 단어별 시간 정보와 화자 라벨의 결합 → 전사문을 검색·자막·발언 분석·감사에 활용할 수 있는 구조화된 자료로 확장한다.
- 초 응답 제한과 Amazon S3 기반 입출력의 차이 → 엔드포인트 선택은 음성 길이, 처리 시간, 상호작용 요구를 함께 고려해야 한다.
- GPU AMI 고정과 인스턴스 단위 확장 → 배포 성공 조건과 처리량·비용 관리가 연결되며, 비동기 방식의 유휴 시 0대 축소가 비용 통제 수단이 된다.
🧠 상세 정리
1. 일반 음성 전사의 한계와 WhisperX의 역할
원문은 고객센터 통화, 전사 회의, 팟캐스트, 증언 녹취, 방송처럼 발화자를 구분하고 정확한 시점을 알아야 하는 업무에서 일반적인 음성 전사의 한계를 제시한다. 발화 단위 타임스탬프는 수초의 오차가 날 수 있고, 누가 어떤 말을 했는지도 안정적으로 표시되지 않아 검색·자막·민감정보 가림·대규모 분석이 어려워진다는 설명이다. 특히 화자 라벨 누락은 규정 준수 검토를, 부정확한 시간 정보는 자막과 민감정보 가림을 방해할 수 있다고 주장한다. OpenAI의 오픈소스 음성 인식 모델군인 Whisper는 여러 언어의 전사 품질에 초점을 맞추지만, 시간 정보는 구절이나 구간 단위로 제공한다. WhisperX는 여기에 배치 추론, wav2vec2 강제 정렬, 화자 분리를 더해 전사 속도와 단어별 시간 정보, 화자 라벨을 함께 제공하는 오픈소스 확장 프로젝트다.
2. 구조화된 전사로 가능한 업무
WhisperX가 추가하는 정보는 음성을 텍스트로 바꾸는 데서 그치지 않고, 발언과 시점을 연결해 분석 가능한 전사문을 만드는 데 쓰인다. 원문은 고객센터에서 발화 시간을 측정하고 상담 스크립트 준수 여부를 확인하며 감정 분석을 수행하는 활용을 제시한다. 회의 기록은 검색 가능한 노트로 바꿀 수 있고, 미디어와 온라인 교육 팀은 대규모 콘텐츠에 SRT와 VTT 형식의 정확한 자막을 생성할 수 있다고 설명한다. 시간에 민감한 활용에서는 발화 직후 텍스트를 얻는 가치를 언급하지만, 이후 배포 설명은 전체 요청이 정해진 시간 안에 끝나는 실시간 호출과 비동기 처리로 구분된다. 의료·법률·금융처럼 규제가 있는 분야에서는 화자 라벨이 붙은 전사문이 감사와 법적 증거개시를 지원하는 용도로 소개된다.
3. 전용 DLC의 구성과 서빙 규약
AWS WhisperX Deep Learning Container는 Whisper, 정렬 모델, 화자 분리 가중치를 미리 포함한 유지관리되는 GPU용 이미지다. 별도의 사용자 정의 이미지를 만들거나 Hugging Face 토큰을 준비하지 않아도 Amazon SageMaker AI의 표준 모델 서빙 규약에 따라 배포할 수 있다는 점이 핵심이다. 컨테이너는 8080 포트에서 동작하며 추론에는 POST /invocations를, 상태 확인에는 GET /ping을 제공한다. 요청은 multipart/form-data 형식으로 오디오를 file 파트에 넣고 language, diarize, response_format 같은 선택적 문자열 필드를 함께 전달하며, SageMaker AI는 multipart 경계값을 포함한 ContentType 헤더를 그대로 컨테이너에 넘긴다. 출력은 json, verbose_json, srt, vtt를 지원하므로 같은 엔드포인트를 분석 파이프라인과 자막 편집 작업에 사용할 수 있다.
4. 실시간과 비동기 엔드포인트의 선택
원문은 같은 WhisperX DLC를 실시간과 비동기 엔드포인트에 모두 사용할 수 있으며, 선택 기준은 주로 음성 길이와 상호작용 요구라고 설명한다. 실시간 방식은 InvokeEndpoint 요청 본문에 오디오를 넣고 같은 동기 호출의 응답으로 전사문을 받으며, 전체 처리가 Amazon SageMaker AI의 60초 응답 제한 안에 끝나야 한다. 비동기 방식은 InvokeEndpointAsync에 Amazon S3 입력 위치를 전달하고 결과를 폴링하므로, 전사·정렬·화자 분리에 시간이 더 필요한 긴 음성과 대량 처리에 권장된다. 실시간 엔드포인트는 가동 중 비용이 발생하는 반면, 비동기 엔드포인트는 유휴 시 인스턴스 수를 0으로 자동 축소해 비용을 줄일 수 있다. 두 방식 모두 컨테이너당 한 요청을 처리하는 구성을 바탕으로 인스턴스를 추가해 처리량을 늘리며, 비동기 방식은 실시간 호출의 60초 응답 제한을 적용받지 않는다.
5. 공통 아키텍처와 배포 준비
두 배포 방식은 SageMaker AI가 8080 포트의 WhisperX DLC로 요청을 전달하는 구조를 공유하며, 비동기 방식은 Amazon S3가 입력과 출력의 전달을 중개한다. 인스턴스 선택에서는 비용을 고려한 ml.g4dn.xlarge와 여유 용량을 고려한 ml.g5.2xlarge가 제시되고, 선택한 GPU 인스턴스 유형의 서비스 할당량이 필요하다. 사전 준비에는 AWS 계정, create_model과 create_endpoint를 수행할 수 있는 SageMaker AI 실행 역할, Amazon ECR의 WhisperX DLC 이미지 URI가 포함되며 비동기 사용 시에는 S3 읽기·쓰기 권한도 필요하다. 원문은 기본 AmazonSageMakerFullAccess 정책을 사용하는 경우 S3 접근을 위해 버킷 이름에 “sagemaker”가 포함되어야 한다고 안내한다. 또한 AWS Samples 저장소에 전체 과정을 실행할 수 있는 JupyterLab 노트북이 있으며, Amazon SageMaker AI Studio에서 사용자 자신의 오디오로 실행할 수 있다고 소개한다.
6. 실시간 엔드포인트 생성과 GPU AMI 고정
실시간 배포 예제는 Amazon ECR의 WhisperX DLC를 모델로 등록하고, 해당 모델을 사용하는 엔드포인트 구성을 만든 뒤 엔드포인트가 서비스 상태가 될 때까지 기다리는 흐름이다. 예제 이미지 태그는 whisperx:3.8.6-cu128-amzn2023-sagemaker이며 Python 3.12, CUDA 12.8, Amazon Linux 2023 기반으로 소개되고 기본 모델은 large-v2다. 모든 GPU 변형에서 InferenceAmiVersion을 al2-ami-sagemaker-inference-gpu-3-1로 지정해야 하며, 이 고정값이 없으면 로그 없이 CannotStartContainerError가 발생하면서 엔드포인트 시작에 실패한다고 원문은 명시한다. 가중치를 지연 로딩하므로 시작 상태 확인의 제한 시간을 충분히 확보해야 하며, 예제는 ContainerStartupHealthCheckTimeoutInSeconds를 900으로 설정한다. 초기 구성은 ml.g4dn.xlarge 한 대를 사용하지만, 필수 GPU AMI 고정 조건은 실시간과 비동기 배포에 공통으로 적용된다.
7. 실시간 요청 처리와 항공관제 교신 예제
실시간 호출 예제는 오디오를 file 파트에 넣고 language=en, diarize=true, response_format=verbose_json, timestamp_granularities[]=word를 지정한 multipart 본문을 만든다. 컨테이너에서는 음성 활동 감지와 배치 Whisper 전사, wav2vec2 강제 정렬, 화자 분리를 수행한 뒤 구간·단어별 타임스탬프·화자 라벨을 포함한 결과를 직렬화해 반환하며, 이 과정은 60초 안에 완료되어야 한다. 예제 저장소는 2009년 “Miracle on the Hudson” 비상착수 사건인 US Airways Flight 1549의 퍼블릭 도메인 항공관제 교신 녹음을 사용한다. 원문은 배경 소음, 무선 압축, 빠른 호출부호와 주파수 낭독이 포함된 다자간 교신이라는 점에서 전사 정확도와 시간 정렬, 화자 분리를 시험하기에 적합하다고 설명한다. 약 3분 전체 녹음은 비동기 엔드포인트로 보내고 40초 구간은 실시간으로 처리하며, 제시된 결과는 SPEAKER_00과 SPEAKER_01 라벨이 붙은 전사 예시로서 별도의 정량 정확도 지표는 제공하지 않는다.
8. 비동기 처리의 시작과 제공 자료의 범위
비동기 엔드포인트는 긴 음성을 처리할 때 실시간 방식의 60초 응답 제한을 벗어나는 권장 경로로 소개된다. 클라이언트는 오디오를 포함한 multipart 본문을 Amazon S3에 업로드한 뒤, 해당 객체의 InputLocation을 지정해 InvokeEndpointAsync를 호출한다. 호출 직후 전사문 자체를 기다리는 대신 OutputLocation과 FailureLocation을 받으며, 입력과 출력은 S3를 통해 전달되고 결과는 폴링으로 확인하는 방식이다. 원문은 그림 설명에서 단일 작업자 처리와 S3의 결과·실패 경로를 포함한 비동기 수명주기를 예고하지만, 제공된 본문은 위치 정보를 반환받는 대목 직후 문장 중간에서 끊긴다. 따라서 비동기 엔드포인트 생성 코드, 상세 폴링 절차, 실패 처리의 구체적인 구현은 이 자료에서 확인할 수 없으며, 설명 가능한 범위는 앞서 제시된 공통 배포 조건과 호출 흐름까지다.
🧾 핵심 주장 / 시사점
- WhisperX의 핵심 가치는 전사 텍스트에 단어별 시점과 화자 정보를 결합해 검색·자막·감사 등 후속 작업에 필요한 구조를 제공하는 데 있다.
- 실시간 여부는 입력 음성 길이만으로 결정되지 않는다. 전사·정렬·화자 분리를 모두 포함한 요청 처리 시간이 60초 안에 끝나는지가 실제 선택 기준이다.
- 전용 DLC가 이미지 구성 부담을 줄여도 GPU AMI 고정과 시작 대기 시간 설정은 필요하며, 제공된 예제만으로 전사 정확도나 비동기 운영 절차 전체를 검증할 수는 없다.
✅ 액션 아이템
- 음성 길이와 처리 시간, 상호작용 요구를 기준으로 60초 응답 제한 내 실시간 처리와 Amazon S3 기반 비동기 처리의 적용 범위 검토.
- GPU 배포에서 InferenceAmiVersion의 al2-ami-sagemaker-inference-gpu-3-1 고정 여부 확인.
- 처리량에 따른 인스턴스 추가와 비동기 엔드포인트의 유휴 시 0대 축소를 함께 고려해 비용 관리 방식 검토.
❓ 열린 질문
- 대상 음성의 전사·정렬·화자 분리 처리가 실시간 엔드포인트의 60초 응답 제한 안에 완료되는가?
- 긴 음성·대량 처리의 결과를 폴링하는 Amazon S3 기반 비동기 방식이 필요한 상호작용 요구에 부합하는가?
- 인스턴스를 추가해 처리량을 늘릴 때 비동기 엔드포인트의 유휴 시 0대 축소로 어느 정도 비용을 절감할 수 있는가?