실시간 AI 오디오 전사(Transcription)를 구축하는 데 필요한 것 (Vomo를 연구하며 얻은 교훈)
요약
실시간 AI 오디오 전사 시스템 구축 시 직면하는 기술적 도전 과제와 Vomo AI의 사례를 분석합니다. 단순 API 호출을 넘어 VAD, 화자 분리, GPU 분산 처리 및 LLM 레이어 활용의 중요성을 다룹니다.
핵심 포인트
- 화자 분리(Diarization)는 ASR과 병렬로 실행되어 효율성을 높임
- 대용량 파일 처리를 위해 세그먼트 단위의 GPU 분산 처리가 필수적임
- 단순 전사를 넘어 LLM을 활용한 요약 및 Q&A 기능이 제품의 차별점임
- ffmpeg를 통한 다양한 포맷 처리와 노이즈 대응을 위한 데이터 미세 조정이 중요함
최근 저는 내부 도구를 위한 작은 전사(Transcription) 기능을 구축하기 위해 주말을 보냈습니다. 단순히 Whisper API 호출을 감싸는 래퍼(wrapper) 정도면 될 것이라고 가정했었죠. 이틀 뒤, 저는 이 기능을 제대로 구현해낸 제품들에 대해 새로운 경외심을 갖게 되었습니다.
이 포스트는 VOMO AI를
수집 (ingest) → 리샘플링/정규화 (resample/normalize) → VAD 세그멘테이션 (VAD segmentation)
→ ASR (세그먼트별, 배치 처리, GPU)
→ 문장 부호 및 대소문자 복원 (punctuation & casing restoration)
...
흥미로운 부분들에 대한 몇 가지 노트:
화자 분리 (Diarization)는 ASR 이후가 아니라 병렬로 실행됩니다. 화자 분리는 오디오 데이터만 필요할 뿐, 단어 데이터는 필요하지 않습니다. 이후의 병합 (merge) 단계에서 단어의 타임스탬프를 화자 세그먼트에 맞추게 되는데, 이 과정에서 문장의 마지막 단어가 다음 화자의 것으로 할당되는 것과 같은 오류가 발생합니다.
긴 파일은 처리량 (throughput)의 문제입니다. 3시간짜리 회의는 약 10,800초의 오디오입니다. 실시간 속도의 10배로 순차적 처리를 하더라도 18분을 기다려야 합니다. 프로덕션 시스템은 세그먼트를 여러 GPU 워커로 분산(fan out)시키고 결과를 병합하기 때문에, 저의 순차적 스크립트가 거의 한 시간 가까이 걸린 반면 Vomo는 몇 시간 분량의 파일을 몇 분 만에 반환할 수 있는 것입니다.
현재 제품들이 차별화되는 지점은 LLM 레이어입니다. 기본적인 전사 (transcription) 정확도는 상향 평준화되었습니다. 제대로 된 제품이라면 깨끗한 오디오에서 90% 이상의 정확도를 보입니다 (Vomo는 95% 이상이라고 광고합니다). 격차는 이제 전사된 텍스트를 가지고 무엇을 하느냐로 옮겨갔습니다. Vomo의 접근 방식은 연구할 가치가 있습니다. 콘텐츠 유형(회의 vs 인터뷰 vs 강의)을 분류하고, 그에 맞는 템플릿을 적용하여, 한 번의 과정으로 타임스탬프가 찍힌 챕터, 요약, 그리고 실행 항목 (action items)을 생성합니다. 또한 전사된 텍스트를 바탕으로 질문을 던지고 실제 텍스트에 근거한 답변을 얻는 Q&A 모드도 있습니다. 사실상 단일 문서에 대한 검색 (Retrieval)인 셈입니다.
아무도 블로그에 쓰지 않는 부분들
데모와 실제 제품을 가르는, 화려하지 않은 엔지니어링 작업들:
- 포맷 처리 (Format handling). 사용자들은 MP3, WAV, M4A, FLAC, AAC, OGG를 업로드하고, 나아가 비디오(MP4, MKV, MOV, AVI)까지 업로드하며 오디오 트랙이 조용히 추출되기를 기대합니다. 이는 수많은 기이한 코덱(codecs)들을 처리해야 하는 ffmpeg 레이어를 의미합니다.
- 언어 감지 (Language detection). 50개 이상의 언어를 지원한다는 것은 디코딩 파라미터(decode parameters)를 선택하기 전에 언어를 감지해야 하며, 녹음 도중 발생하는 코드 스위칭 (code-switching) 현상을 매끄럽게 처리해야 함을 의미합니다.
- 억양 및 노이즈 (Accents and noise). 배경 소음이 있는 환경에서 진행한 저의 테스트 녹음들은 단순한 파이프라인 (pipeline)에서 매우 가변적인 결과를 초래했습니다. 상용 모델들은 증강된 노이즈 데이터 (augmented noisy data)로 미세 조정 (fine-tuned)되어 있습니다. 이는 아키텍처 (architecture)의 기술이라기보다 데이터 해자 (data moat)에 가깝습니다.
- 암호화 및 보관 (Encryption and retention). 회의 오디오는 기업이 생성하는 가장 민감한 데이터 중 하나입니다. 최소한 전송 중 및 저장 시 암호화 (encryption in transit and at rest), 사용자가 제어할 수 있는 삭제 기능, 그리고 GDPR 준수 스토리가 필요합니다. Vomo는 이 요건들을 충족합니다. 실제 사용자를 위해 구축하는 모든 파이프라인 역시 반드시 그래야 합니다.
직접 구축할 것인가, 구매할 것인가? (Should you build or buy?)
만약 전사 (transcription)가 귀하의 핵심 제품이라면, 당연히 직접 구축해야 합니다. 하지만 그것이 하나의 기능(예: 앱 내에서 검색 가능한 회의록 제공)이라면, 경제성은 매우 가혹합니다. GPU 추론 (inference), 화자 분리 (diarization) 튜닝, 다국어 평가 세트 (multilingual eval sets), 그리고 LLM 후처리 (post-processing) 레이어까지, 이를 제대로 구현하려면 모두 실제적인 비용과 시간이 소요됩니다.
개인 또는 팀 단위의 사용이라면, 구매하는 것이 훨씬 경제적입니다. Vomo의 Pro 티어는 무제한 전사 분당 주당 $1.92이며, 무료 티어는 자신의 오디오로 출력 품질을 평가할 수 있도록 주당 30분을 제공합니다. 이것이 유일하게 중요한 벤치마크 (benchmark)입니다. 저의 주말 프로젝트는 이제 버려진 Python 스크립트 폴더가 되었지만, 솔직히 말해 이것이 올바른 결과입니다.
만약 여러분이 프로덕션 환경에서 화자 분리 (diarization)나 스트리밍 ASR을 구축해 본 경험이 있다면, 무엇이 가장 먼저 망가졌는지 진심으로 듣고 싶습니다. 댓글은 열려 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기