Whisperで文字起こしする方法(ローカル環境にDockerを添えて)
音声のテキスト変換
Web上にいくらでも情報があるWhisperでの文字起こしです。API使うとお金がかかるので、ローカル環境でDocker使って(Docker使えれば)手軽に実行できるのが特徴です。
CPUでもGPUでも動きます。Apple SiliconMacでもLinuxでも多分Windows(WSL2)でも動きます。
Dockerファイルや使うソフトはGitHubのリポジトリに公開しています。
この記事は上記リポジトリの自分のための使い方のメモです。
使い方
ファイル準備
文字起こしする音声ファイルを用意します。ここではinput.mp3
とします。
Docker準備
Dockerがない人は、Dockerをインストールしましょう。LinuxかWindows(WSL2)なら、とりあえず以下コマンドを実行すればOKです。Macの人はDockerデスクトップを使いましょう。
$ curl -s https://raw.githubusercontent.com/karaage0703/ubuntu-setup/master/install-docker.sh | /bin/bash
Docker入れたら、Dockerビルドしましょう。以下の通りです。
$ git clone https://github.com/karaage0703/whisper-docker
$ cd whisper-docker
$ docker build -t whisper .
ここまでは1回やればOKです。
文字起こし
whisper-docker
ディレクトリで以下コマンドを実行します。
$ docker run -it -d -v $(pwd):/workspace/ --net host --name whisper whisper
$ docker exec -it whisper bash
GPUを使いたい場合は以下の通りです。
$ docker run -it -d -v $(pwd):/workspace/ --net host --gpus all --name whisper whisper
$ docker exec -it whisper bash
コンテナに入ったら以下の通り実行すればinput.mp3
というファイルをoutput.txt
というファイルに文字起こしできます。初回のみモデルのダウンロードが必要ですが、2回目からは不要になります。
root@hostname:/workspace# python transcribe.py --model='base' --input_file='input.mp3' --output_file='output.txt' --language='ja'
入出力ファイルは--input_file
と--output_file
オプションで変更してください。
--model
でモデルサイズを選べます。large
とかにすると、モデル大きくなり認識性能が上がります(時間もかかります)。
サイズによる性能の違いは以下など参照ください。
おまけ:音声データの入手先
おまけ情報です。MacだとPodcastの音声データは、以下フォルダに格納されています。
~/Library/Group Containers/243LU875E5.groups.com.apple.podcasts/Library/Cache
ターミナルで以下実行すればフォルダを開けます。
$ open ~/Library/Group\ Containers/243LU875E5.groups.com.apple.podcasts/Library/Cache
参考: https://jp.quora.com/Macを使っていますがPodcastでダウンロードしたデータの保
とりあえず試してみるサンプルファイルが必要なときは以下とかがよいかなと思います。
高速化
まだ試せてないのですが、以下のPINTOさんのリポジトリを使うと爆速で文字起こしできそうです。精度や速度検証してみたいですが、毎日文字起こしするわけではないからな…
文字起こしした文章の整形
文字起こしした文章、Largeモデルでもそのまま使うにはちょっと厳しそうですが、ChatGPTで整形すると良い感じになります。以下記事参照ください。
まとめ
文字起こしの方法を書きました。これで音声データさえ入手すれば文字起こし自由自在ですね。
私はCOTEN RADIOを文字起こししたくて、やってみました。baseモデルを使っても、そこそこ使える精度で文字起こしできます。~~ちなみにCOTEN RADIOさん、公式でも文字起こしをしています。以下でエピソード名で検索するとみることができます(ただ、一部のみなので私は結局文字起こしが必要でした)。~~消えていました。なんでやー。
さらにChatGPTと組み合わせれば要約とかもできちゃいます。AI万歳ですね。ただ、もうちょっとゆったりとコンテンツを楽しむこともしたいものです。
また、ネットに公開されている情報でも、文字起こしした内容は基本的には私的利用に留めるのが良いかと思います。文字起こし内容をそのまま全部ネットに公開すると、著作物の改変などの問題になる可能性があるかと思いますので(専門ではないので、保証できません)。
参考情報
関連記事
Discussion
大変役立つ記事をありがとうございました。
mac Monterey 12.5の環境で行ったのですが、すこしだけ躓いたのでメモとしてコメントさせていただきます。
macにデフォルトで入っていたと思い込んでいたpythonがmac Monterey 12.3以降で削除されているようで、
docker build -t whisper .
実行中に、ERROR: failed to solve: process "/bin/sh -c pip install git+https://github.com/openai/whisper.git" did not complete successfully: exit code: 2
というエラーを吐いて止まりました。
pyenvでpython3を入れてから改めて実行すると解消されました。(初歩的ですみません。)
@r19 さん
コメントありがとうございます。ただ、Dockerの中の話なので、MacのPythonは関係ないような気がします。ネットワーク環境などの一時的な問題の可能性な気がしますのでコメントいたします。