로컬 음성 인식·합성

최종 업데이트

WhisperX로 한국어 자막 싱크와 화자 표시 맞추기

전사한 문장과 음성을 강제 정렬해 단어별 시작·끝 시각을 붙여요.

WhisperX는 음성을 전사한 뒤 별도 정렬 모델로 단어 시각을 계산하고 SRT 자막을 만들어요. 화자 분리1도 추가할 수 있지만 pyannote 모델의 이용 약관을 받아들여야 해요. 생성된 자막은 화자 이름·숫자·겹쳐 말한 구간을 음성과 대조해 수정하세요.

실행 조건과 핵심 내용
  • WhisperX는 전사 뒤에 단어 시각을 맞추는 정렬 단계를 실행해요.
  • 한국어에는 기본 정렬 모델 kresnik/wav2vec2-large-xlsr-korean을 사용해요.
  • 화자 라벨과 SRT 시간은 실제 녹음과 대조해 고쳐요.

단어별 타임코드가 필요한 이유

WhisperX는 녹음을 전사한 뒤 정렬 모델을 사용해 각 단어가 음성의 어느 구간에 놓이는지 계산해요. Whisper의 문장 단위 구간을 단어 수준으로 나누면 자막 편집기에서 어긋난 단어만 찾아 고치기 쉬워져요. 정렬은 전달받은 글자를 음성에 맞추는 단계이므로, 전사 오류가 있으면 잘못된 단어에도 시간이 붙어요. WhisperX 공식 저장소

짧은 한국어 WAV로 전사와 정렬을 실행해요. 문장 내용과 단어별 시작·끝 시각을 확인하고, 잘못 인식된 단어를 먼저 고쳐요. 수정한 문장으로 정렬을 다시 실행하면 자막에서 손볼 구간을 찾기 쉬워요.

마이크 옆의 노트북에 음성 파형이 표시된 화면
오디오를 먼저 전사하고 뒤에서 단어 시각을 맞춰요.

한국어 정렬 모델로 자막을 저장해요

먼저 ffmpeg를 설치하고 작업 폴더에 recording.wav를 둬요. 아래 명령은 macOS와 Debian·Ubuntu Linux 기준이에요. 이어서 Python 환경에 PyTorch2와 WhisperX를 설치해요.

ffmpeg 설치: macOS 및 Debian·Ubuntu
# macOS
brew install ffmpeg

# Debian / Ubuntu Linux
sudo apt-get update && sudo apt-get install -y ffmpeg
WhisperX 패키지 설치
python -m pip install torch torchaudio
python -m pip install whisperx
한국어 단어별 SRT 저장
whisperx recording.wav --output_dir whisperx-output --language ko --model large-v2 --compute_type int8 --device cpu --highlight_words True

현재 폴더에 recording.wav를 두고 명령을 실행하면 whisperx-output/recording.srt와 전사문이 저장돼요. --language ko로 한국어를 선택하면 WhisperX가 한국어 정렬 설정으로 단어별 시각을 계산해요.

화자 분리를 쓸 때 모델 접근을 먼저 마쳐요

화자 분리는 녹음 구간마다 화자 ID를 붙여요. WhisperX가 사용하는 pyannote 모델 카드의 접근 조건에 동의한 뒤 Hugging Face 읽기 토큰3을 준비해요. macOS·Linux Bash에서 아래처럼 입력하면 토큰이 화면에 표시되지 않고 현재 셸에서만 사용돼요.

참석자가 둘인 대화라면 --min_speakers 2 --max_speakers 2를 추가해 예상 화자 수를 알려줄 수 있어요. 이 값은 모델이 경계를 찾을 때 참고하는 범위예요. 겹쳐 말하거나 짧게 맞장구친 구간은 화자가 합쳐지거나 ID가 바뀔 수 있으니, 녹음을 다시 들으며 라벨을 확인해요.

화자 ID와 단어 강조 표시 추가
read -rs HF_TOKEN
printf '\n'
export HF_TOKEN
whisperx recording.wav --output_dir whisperx-output --language ko --model large-v2 --compute_type int8 --device cpu --diarize --min_speakers 2 --max_speakers 2 --highlight_words True --hf_token "$HF_TOKEN"
헤드폰과 마이크, 전사 작업 화면이 놓인 책상
화자별 표시를 추가하기 전에는 분리 결과를 녹음과 확인해요.

SRT를 플레이어에서 듣고 고쳐요

whisperx-output/recording.srt를 WAV와 함께 자막 편집기에서 열어 문장과 타임코드를 고쳐요. 숫자와 이름, 겹쳐 말한 구간을 먼저 확인하면 정렬 오류와 전사 오류를 구분하기 쉬워요.

참석자 ID는 이름 대신 화자를 구분하는 번호예요. 회의록에 이름을 붙일 때는 음성을 다시 듣고, 참가자와 조직이 허용한 범위에 맞춰 WAV와 SRT를 보관해요.

녹음기와 메모, 음성 인식 결과를 듣는 헤드폰
SRT 파일을 편집기에서 열고 자막 시작·끝을 확인해요.

용어 각주

  1. 화자 분리 — 녹음에서 누가 언제 말했는지 구간을 나누고 화자별로 표시하는 작업입니다.

    본문으로 돌아가기
  2. PyTorch — AI 모델을 만들고 실행하는 소프트웨어 프레임워크입니다. 모델과 함께 호환되는 PyTorch 버전 및 하드웨어 지원도 확인해야 합니다.

    본문으로 돌아가기
  3. 토큰 — 모델이 입력이나 출력을 나누어 처리하는 단위입니다.

    본문으로 돌아가기

자주 묻는 질문

이 글에서 가장 먼저 확인할 것은 무엇인가요?
WhisperX는 음성을 전사한 뒤 별도 정렬 모델로 단어 시각을 계산하고 SRT 자막을 만들어요. 화자 분리도 추가할 수 있지만 pyannote 모델의 이용 약관을 받아들여야 해요. 생성된 자막은 화자 이름·숫자·겹쳐 말한 구간을 음성과 대조해 수정하세요.
조건과 출처는 어디서 확인하나요?
화자 분리는 녹음 구간마다 화자 ID를 붙여요. WhisperX가 사용하는 pyannote 모델 카드의 접근 조건에 동의한 뒤 Hugging Face 읽기 토큰을 준비해요. macOS·Linux Bash에서 아래처럼 입력하면 토큰이 화면에 표시되지 않고 현재 셸에서만 사용돼요.