📙

Whisperで文字起こしする方法(ローカル環境にDockerを添えて)

2023/05/26に公開
2

音声のテキスト変換

Web上にいくらでも情報があるWhisperでの文字起こしです。API使うとお金がかかるので、ローカル環境でDocker使って(Docker使えれば)手軽に実行できるのが特徴です。

CPUでもGPUでも動きます。Apple SiliconMacでもLinuxでも多分Windows(WSL2)でも動きます。

Dockerファイルや使うソフトはGitHubのリポジトリに公開しています。

https://github.com/karaage0703/whisper-docker

この記事は上記リポジトリの自分のための使い方のメモです。

使い方

ファイル準備

文字起こしする音声ファイルを用意します。ここでは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とかにすると、モデル大きくなり認識性能が上がります(時間もかかります)。

サイズによる性能の違いは以下など参照ください。

https://ysdyt.hatenablog.jp/entry/whisper

おまけ:音声データの入手先

おまけ情報です。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でダウンロードしたデータの保

とりあえず試してみるサンプルファイルが必要なときは以下とかがよいかなと思います。
http://pro-video.jp/voice/announce/

高速化

まだ試せてないのですが、以下のPINTOさんのリポジトリを使うと爆速で文字起こしできそうです。精度や速度検証してみたいですが、毎日文字起こしするわけではないからな…

https://github.com/PINTO0309/faster-whisper-env

https://www.techno-edge.net/article/2023/11/06/2202.html

文字起こしした文章の整形

文字起こしした文章、Largeモデルでもそのまま使うにはちょっと厳しそうですが、ChatGPTで整形すると良い感じになります。以下記事参照ください。

https://zenn.dev/karaage0703/articles/6b81561d245968

まとめ

文字起こしの方法を書きました。これで音声データさえ入手すれば文字起こし自由自在ですね。

私はCOTEN RADIOを文字起こししたくて、やってみました。baseモデルを使っても、そこそこ使える精度で文字起こしできます。~~ちなみにCOTEN RADIOさん、公式でも文字起こしをしています。以下でエピソード名で検索するとみることができます(ただ、一部のみなので私は結局文字起こしが必要でした)。~~消えていました。なんでやー。

さらにChatGPTと組み合わせれば要約とかもできちゃいます。AI万歳ですね。ただ、もうちょっとゆったりとコンテンツを楽しむこともしたいものです。

また、ネットに公開されている情報でも、文字起こしした内容は基本的には私的利用に留めるのが良いかと思います。文字起こし内容をそのまま全部ネットに公開すると、著作物の改変などの問題になる可能性があるかと思いますので(専門ではないので、保証できません)。

参考情報

https://eng-blog.iij.ad.jp/archives/15499

https://uepon.hatenadiary.com/entry/2023/10/18/173822

https://nikkie-ftnext.hatenablog.com/entry/speech-recognition-transformers-support-whisper-audio-file-example

https://www.softbank.jp/biz/blog/cloud-technology/articles/202312/whisper/

https://qiita.com/reriiasu/items/920227cf604dfb8b7949

https://yumeno.me/whisper-local

関連記事

https://zenn.dev/karaage0703/articles/d47bbb085fcb83

Discussion

r19r19

大変役立つ記事をありがとうございました。

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を入れてから改めて実行すると解消されました。(初歩的ですみません。)

karaage0703karaage0703

@r19 さん
コメントありがとうございます。ただ、Dockerの中の話なので、MacのPythonは関係ないような気がします。ネットワーク環境などの一時的な問題の可能性な気がしますのでコメントいたします。