ローカル音声認識・音声合成

WhisperXで韓国語字幕の同期と話者ラベルを整える

文字起こしと音声を強制アラインメントし、単語ごとの開始・終了時刻を付けます。

WhisperXは音声を文字起こしし、別のアラインメントモデルで単語の時刻を計算してSRT字幕を作成します。話者分離1も追加できますが、pyannoteモデルの利用条件への同意が必要です。名前、数字、重なった発話は音声と照合して修正してください。

実行条件と要点
  • WhisperXは文字起こしの後に単語時刻を合わせる処理を実行します。
  • 韓国語では既定のアラインメントモデルkresnik/wav2vec2-large-xlsr-koreanを使います。
  • 話者ラベルとSRTの時刻は実際の録音と照合して修正します。

単語単位のタイムコードが必要な理由

WhisperXは録音を文字起こしした後、アラインメントモデルで各単語が音声のどこにあるかを推定します。単語単位の区間があれば、字幕編集ソフトでずれた語だけ直しやすくなります。アラインメントは渡されたテキストを音声に合わせる処理なので、文字起こしが誤っていても時刻が付くことがあります。WhisperX公式リポジトリ

短い韓国語 WAV ファイルで文字起こしとアラインメントを実行します。文の内容と各単語の開始・終了時刻を確認し、誤認識した単語を先に直します。修正後の文で再度アラインメントを実行すると、字幕の修正箇所を見つけやすくなります。

マイクの横のノートPCに音声波形が表示されています
先に音声を文字起こしし、その後で単語の時刻を整えます。

韓国語アラインメントモデルで字幕を保存する

まず 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 で以下のように入力すると、トークンは画面に表示されず、現在のシェルだけで使われます。

参加者が 2 人の会話では、--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 で以下のように入力すると、トークンは画面に表示されず、現在のシェルだけで使われます。