Python + Whisperで音声の自動文字起こしに挑戦してみた

Python + Whisperを使って音声の文字起こし

これを唐突にやってみたくなりました。

手順としてはこんな感じです。

  • minicondaで仮想環境を作っておく
  • そこにwhisperをインストール
  • コードからmp3など音声を読み込み
  • それを自動で文字起こしさせる

この手順とかwhipserの文字起こし精度とか…
いろいろ判明したことがあったので残しておきます。

1.minicondaで仮想環境を用意する

ここではminicondaを使うことにします。

※ もちろんconda・pipだけでもOK

仮想環境があると何かと便利なんですよね。
だから好みでminicondaを使うことにしました。

▼ 始めに whipser という名前で環境作成

▼ 仮想環境を有効化

Python3.7以上であることがWhisper必須です。

ここまでで仮想環境の用意が完了

2.pip経由でwhisperをインストール

作成した環境にwhiperをインストールしていきます。

▼ Github : openai / whisper

▼ 次のpipコマンドでインスト

▼ 参考までにインストールの出力結果

whisper自体はそれほど容量を食いません。

あと音声文字起こしにはデータセットが必要です。これは別途ダウンロードとかは必要ないけど、容量的には巨大だから注意が必要です(後述)

3.Youtubeから適当な音声を拾ってくる

音声が用意済ならここはスキップ

ここではYouTubeから音声をDLすることにします。

▼ youtube-dlをインストール

▼ 対象のYouTube動画から音声だけmp3保存

ちなみに今回拝借した動画がこちら :

URL : www.youtube.com/watch?v=j5BpUK8XTJQ

背景に主張強めなBGMが流れている動画です。

ノイズが多い動画でも文字起こしできるのか、
そういった精度も確かめたいからこの動画にしました。

4.音声文字起こしのpythonコード例

あとはこういうpythonコードを書くだけです。

▼ test.py : whipserで文字起こしするコード例

▼ 実行時の出力結果

精度はモデルsmallのせいもあって微妙…

もちろんモデルをmedium・largeに変更(後述)すれば精度が上がります。ただしメモリ使用量と実行時間・精度はトレードオフな関係ですね。

それからモデルが存在しない場合、自動でダウンロードしてくれます。smallだと461MB程度なので、それほど大きくありません。

whisperの各モデルと種類・サイズの対応表

Whisperでは以下5つのモデルが用意されてます。

▼ モデルの容量とかメモリ使用量の対応表

モデル名 容量 必要なVRAM
tiny < 400MB ~1 GB
base < 400MB ~1 GB
small 461MB ~2 GB
medium 1.42GB ~5 GB
large 2.87GB 10 GB

さすがにmedium・largeはモデルサイズが巨大です。大丈夫だとは思うけど、通信環境・ストレージ容量とかには注意が必要かもしれません。

表中のVRAMですが、これはCUDA経由でGPU使用するためのVRAM目安です。CPUを使うなら気にしなくていいので問題ありません。

普通の環境だとCPUによる実行になります。

モデルごとの文字起こしの精度の違いと結果

ここではsmall/medium/largeを試します。

※ small/baseは精度がアレなので除外

それぞれの文字起こし結果はこうなりました。

モデルsmallによる文字起こし結果

文脈的に場違いな誤字がチラホラ見られる…

誤字脱字の総数4つくらい

モデルsmallだと精度はこの程度です。

モデルmediumによる文字起こし結果

先ほどより誤字は少ない(例 : 戦闘 => 先頭)

誤字脱字の総数は2つほど

かなり精度がよくなってきました。

モデルlargeによる文字起こし結果

ほぼほぼ誤字脱字なし!

完璧に近いけど、この部分以外ではまだ若干の誤字脱字が見られました。超高精度なんだけど、100%はないということ。

でも自動文字起こしとしては優秀

GPU(CUDA)でwhipserを実行してみた

当環境だとwhisperは自動的にCPUを使います。

それはCUDAがインストールされていないからです。

▼ CUDAとは何なのか

CUDAとは、コンピュータのグラフィックスプロセッサ(GPU)を利用して汎用の並列計算を行うためのソフトウェア開発・実行環境の一つ。米NVIDIA社が自社製GPU向けに開発・提供している。

引用元 : https://e-words.jp/w/CUDA.html

次のようにCUDAを使うとGPU実行することも可能に

▼ CUDAをpipインストール

▼ コマンドからGPU認識させて実行

速度的には若干早くなったかなという程度

※ グラボはGTX1650を使用している

グラボパワードを活用できるのはいいですね。

whisperは高精度な上に使いやすい

以上、Python+Whisterによる音声文字起こしでした。

総括としては高精度な上に使いやすかったです。

※ ただしモデルがmedium以上という条件下

音声文字起こしの自動化にかなり最適だと考えます。

Shareこの記事をシェアしよう!

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください