はじめに
今回は、OpenAIのWhisperとその拡張版であるWhisperXを使用して、日本語の音声認識と話者認識をローカル環境で実現する方法を解説します。
これで単なるボイスレコーダーで記録した音声をもとに文字起こし、話者認識ができます。
盗聴ともなりうるので使用には注意がいるかもしれませんが、学校の授業でポイントの確認、仕事での議事録なんかには十分に使えるんじゃないでしょうか。
会議の議事録作成やインタビューの文字起こしなど、音声認識の需要が高まる中、クラウドサービスに依存せずに高精度な文字起こしができる環境を構築する方法を、初心者の方にもわかりやすく説明します。
(追記)そして、FFmpeg 8系はこんなことをやらなくてもFFmpeg単体でWhisperフィルターが使えるようになってきたみたいです。話者認識はできないのと、whisper自体は同梱されてない模様。whisperxで実現する話者認識もまだ見たいです。
まだもうちょっと時間がたったら安定すると思うので、そしたらこの記事アップデートするか、別記事を書くかしたいですね。
目次
WhisperとWhisperXとは
Whisperとは
OpenAIが開発した音声認識モデルで、多言語対応の高精度な音声認識が可能です。オープンソースで公開されており、ローカル環境で動作させることができます。
WhisperXとは
Whisperをベースに、話者認識(誰が話しているか)や単語レベルのタイムスタンプ機能を追加した拡張版です。会議やインタビューの文字起こしに特に強力なツールです。
必要な環境と準備
推奨環境
- OS: Windows 10/11(MacやLinuxでも可能)
- CPU: 4コア以上(8コア以上推奨)
- メモリ: 16GB以上
- ストレージ: 空き容量10GB以上(モデルファイル用)
- 音声を記録するためのデバイス
必要なソフトウェア
- Python 3.10以上
- Python公式サイトからダウンロード
- インストール時に「Add Python to PATH」にチェックを入れる
- FFmpeg
- FFmpeg公式サイトからWindows用ビルドをダウンロード
- 解凍後、binフォルダのパスをシステム環境変数PATHに追加
- Hugging Faceアカウント
- Hugging Faceでアカウント作成
- アクセストークンを取得(後述)
環境構築手順
1. 仮想環境の作成
まず、プロジェクト用のディレクトリを作成し、その中でPythonの仮想環境を作成します。
# プロジェクトディレクトリの作成
mkdir whisper_project
cd whisper_project
# 仮想環境の作成
python -m venv .venv
# 仮想環境の有効化(Windows)
.venv\Scripts\activate
2. 必要なパッケージのインストール
仮想環境を有効にした状態で、以下のコマンドを実行して必要なパッケージをインストールします。
pip install faster-whisper torch transformers[torch] whisperx
3. モデルの準備
WhisperXでは、事前学習済みモデルをダウンロードして使用します。以下のコマンドで、軽量なINT8量子化モデルを準備します。
ct2-transformers-converter ^
--model openai/whisper-medium ^
--output_dir whisper-medium-int8 ^
--quantization int8 ^
--copy_files tokenizer_config.json
基本的な使い方
音声認識の基本コマンド
最もシンプルな音声認識の実行コマンドは以下の通りです。
whisperx audio.mp3 --compute_type int8
主なオプション
基本設定
--compute_type [float16|int8]
: 計算タイプを指定(CPUの場合はint8推奨)--model [base|small|medium|large-v2]
: 使用するモデルを指定--language [ja|en|...]
: 言語を明示的に指定--device [cuda|cpu]
: 実行デバイスを指定
出力設定
--output_format [txt|srt|vtt|tsv|json]
: 出力フォーマットを指定--output_dir [path]
: 出力ディレクトリを指定--verbose [True|False]
: 詳細なログを表示
応用編:話者認識機能の活用
話者認識付き文字起こし
話者認識を有効にするには、--diarize
オプションを追加し、Hugging Faceのアクセストークンを指定します。
whisperx audio.mp3 --compute_type int8 --diarize --hf_token YOUR_HF_TOKEN
話者認識の高度な設定
--min_speakers [int]
: 最小話者数を指定--max_speakers [int]
: 最大話者数を指定--word_timestamps [True|False]
: 単語レベルのタイムスタンプを出力
環境変数にトークンを設定する場合
頻繁にWhisperXを使用する場合は、環境変数にトークンを設定しておくと便利です。
# Windowsの場合
set HUGGING_FACE_HUB_TOKEN=your_token_here
# その後、トークンなしで実行可能
whisperx audio.mp3 --compute_type int8 --diarize
よくある質問
Q1: 処理が遅いのですが、改善方法はありますか?
A1: 以下の方法で高速化が可能です。
--compute_type int8
オプションを使用- より小さいモデル(例:
--model small
)を指定 - GPUが利用可能な場合は
--device cuda
を指定
Q2: 日本語の認識精度を上げるには?
A2: 以下の方法を試してみてください。
--language ja
で明示的に日本語を指定- より大きなモデル(large-v2)を使用
- ノイズの少ない環境で録音する
Q3: 出力形式にはどのようなものがありますか?
A3: 以下の形式が選択可能です。
txt
: プレーンテキストsrt
: 字幕ファイル形式vtt
: Web用字幕形式tsv
: タブ区切り形式json
: 詳細な情報を含むJSON形式
まとめ
本記事では、WhisperとWhisperXを使用して、日本語の音声認識と話者認識をローカル環境で実現する方法を解説しました。
主なポイントは以下の通りです:
- 環境構築が簡単:Python環境があればすぐに始められる
- 高精度な音声認識:日本語を含む多言語に対応
- 話者認識機能:会議やインタビューの文字起こしに最適
- カスタマイズ性が高い:様々なオプションで用途に合わせた設定が可能
音声認識の需要が高まる中、この技術を活用することで、業務効率化や新しい価値の創出につながるでしょう。ぜひ、このガイドを参考に、WhisperとWhisperXを活用してみてください。
コメント