ローカル環境にWhiper WebUIをインストールして、動画に字幕を付けてみました。OpenAIは有料でWhisper APIでの文字起こしサービスも提供していますが、自分でローカルにオープンソースのWhiperをセットアップすると無料で使うことができます。最近、動画を作る機会があって、Filmoraをインストールしました。購入した後で気付いたのですが、Filmoraで、自動字幕生成機能を使うには別途月額使用料が掛かります。(※最新のFilmoraでは字幕生成機能はサブスクに含まれてるようになって、別途料金が掛からないようになりました。ありがとう、Filmoraさん!)しかし、Whisperを使えば無料で文字起こしができます。Whisper WebUIをローカル環境にインストールして、実際に動画に字幕をつけてみて使い勝手を確認しました。
Whisperの環境構築
Whisperは過去のブログでも検証したことがあり、その中でWhisper WebUIをインストールしたことがあります。ここでは再度インストール方法をまとめてみます。


Python3.10のインストール
Python3.10をインストールします。Python3.10は、ここからダウンロードします。

上のサイトからWindowsの方はWindows installer (64-bit)を選んでインストーラーをダウンロードして実行してください。実行すると下のような画面が表示されますので、「Add Python 3.10 to PATH」にチェックを入れてから、「Install Now」でインストールをしましょう。

ffmpegのインストール
Whisperは音声の読み込みなどを行うためにffmpegをインストールする必要があります。ここからffmpegをダウンロードします。

Windowsは「Windows build by BtbN」のリンクから、下記のページで「ffmpeg-master-latest-win64-gpl.zip」をダウンロードして、好きなところにzipファイルを解凍します。

解答したら、ffmpegを使えるようにするためにPATHを通します。解凍したffmpeg-master-latest-win64-gplのフォルダの中のbinフォルダのPATHをコピーして、「設定」の「環境変数名の編集」から、「新規」にPATHを追加します。


PCを再起動して、ターミナルで「ffmpeg」と入力して、インストールされているのを確認します。
ffmpeg
ffmpeg version N-108306-ge7a987d7c9-20220923 Copyright (c) 2000-2022 the FFmpeg developers built with gcc 12.1.0 (crosstool-NG 1.25.0.55_3defb7b)
GPUのCUDA環境のセットアップ
WhisperはNVIDIA製のGPUを持ったPCを使うことをお勧めします。NVIDIAのGPUを搭載したPCでGPUで計算させるためにはCUDA環境のセットアップが必要になります。下の記事にまとめていますので、セットアップをしてください。
Whisper WebUIのセットアップ
それでは準備ができたのでWhisper WebUIのセットアップをしていきます。今回は、以下のaadnk氏が開発したwhisper-webuiをセットアップします。

まずは、Whisper WebUIをセットアップする場所を決めて、その場所をコマンドプロンプトやPowerShellなどのCLIで開きます。(フォルダを選択してShift+右クリックから選択できると思います。)
以下、テキストで以下のコマンドを入力することで、CLIを開いた場所にPython3.10の仮想環境を作成して、Whisper WebUIをセットアップしていきます。
py -3.10 -m venv venv
.\venv\Scripts\Activate.ps1
python -m pip install -U pip setuptools
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
git clone https://huggingface.co/spaces/aadnk/whisper-webui
cd .\whisper-webui\
pip install -r requirements.txt
これでセットアップが完了です。venv仮想環境に入って以下のコマンドでWhisper WebUIを起動します。
python app.py --input_audio_max_duration -1 --server_name 127.0.0.1 --auto_parallel True
ただし、毎回、仮想環境を立ち上げてコマンドを入力するのは面倒なので、起動用のバッチファイルを作ります。以下の「start.bat」を「whisper-webui」の中に置きます。
@echo off
call ..\venv\Scripts\activate.bat
start python app.py --input_audio_max_duration -1 --server_name 127.0.0.1 --auto_parallel True
start http://127.0.0.1:7860
Whisper WebUIはマウスで「start.bat」をクリックすることで起動します。
Using whisper implementation: whisper
[Auto parallel] Using GPU devices ['0'] and 8 CPU cores for VAD/transcription.
Running on local URL: http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.
指示されたURLにブラウザでアクセスすることで、Whiser WebUIの画面を表示されます。

Whisper WebUIで字幕生成
それでは字幕生成をします。詳しいWhisper WebUIのドキュメントは以下のリンクにあります。ここでは、動画あるいは音声ファイルから、字幕用のSRT形式のファイルを生成する方法を確認します。

Whisper WebUIの文字お越しの設定
元となる動画ファイルや音声ファイルをWhisper WebUIにアップロードします。Filmoraの場合は、文字起こししたい動画を右クリックで選択して、「エクスプローラに表示」でファイルの保存場所を開けるので、そのままファイルを選んでWhisper WebUIにアップロードします。


①モデルを選択する
使ってみた感じではmediumで十分な精度で文字起こしができるようです。largeを選ぶと文字起こしに時間掛かりますが、もし、mediumで精度が出ない場合は試してみてもいいと思います。また、もし、PCの性能が低くて時間が掛かりすぎる場合はsmallやbaseなどの別のモデルを試してください。
初めて使うときはモデルをダウンロードするのに少し時間が掛かります。

②言語を選択する
Whisperでは自動で言語を判別してくれますが、もし、言語が分かっている場合は指定した方が良いです。
③文字起こししたい動画や音声をアップロード
ドラッグ&ドロップなどでファイルをアップロードします。
④transcribeを選択する
文字起こしの場合はtranscribeを選択します。translateを選択すると英語に翻訳されます。
⑤silero-vadを選択する
ここはsilero-vadを選択すると良いです。文字起こしの推算をする音声データの区切り方になりますが、silero-vadを選ぶと声の切れ目で切って文字起こしをしてくれるので、自然な文字起こしになります。
⑥文字起こし開始
送信ボタンを押すと文字起こしを開始します。私のPCで50秒余りの動画の文字起こしを約20秒でやってくれました。文字起こしする動画やPCによって時間は変わります。
文字起こし結果の確認
WebUIの右側に文字起こし結果が表示されます。「srt」の拡張子をついたファイルが字幕ファイルになりますので、クリックしてダウンロードします。

Filmoraでの使用
ダウンロードしたSRTファイルはそのままFilmoraの画面にドラッグすると、区切りなども入っており、そのまま字幕になります。あとは音声を見ながら微調整をすると字幕生成の完成です!

ちなみにダウンロードしたSRTファイルの中身はこのようになっています。
1 00:00:00,000 --> 00:00:07,000 ローカル環境にWhisper Web UIをインストールして 動画に字幕を付けてみました 2 00:00:07,000 --> 00:00:14,000 OpenAIは有料でWhisper APIの文字おこしサービスも提供していますが 3 00:00:14,000 --> 00:00:22,000 自分でローカルにOpen SourceのWhisperをセットアップすると 無料で使うことができます 4 00:00:22,000 --> 00:00:28,000 最近動画を作る機会があって フィルモラをインストールしました 5 00:00:28,544 --> 00:00:38,144 購入した後で気づいたのですが フィルモラで自動字幕生成機能を使うにはペット・月額使用量がかかります
かなり精度が高いので、修正は少なくて済みそうですね。今回はWhisper WebUIを使って無料でFilmoraに字幕をつける方法を説明しました。Filmoraだけではなく、いろいろな場面で文字起こしが使えるので、いいですよね。
ちなみに、Whisper WebUIはオンライン上の動画ファイルや、マイクからのリアルタイムの文字起こしにも対応しているので、是非ご活用ください。
コメント