Briswell Tech Blog

ブリスウェルのテックブログです

高精度音声認識モデル「Whisper」に文字起こしさせてみる

AI,IoT担当の大澤です。 OpenAIが「Whisper」というすごい音声認識モデルを開発したと盛り上がっていたので、どんなものなのかと思って試してみました。 文章生成の「GPT-3」、画像生成の「DALL・E 2」など、OpenAIは高性能なAIを開発してきているので今回も楽しみです。

結論から言うとめちゃめちゃ簡単に精度の高い文字起こしができました。GoogleColabを使用したので、以下にその手順を記載します。

1. 準備

GoogleDrive内に適当な作業フォルダを作ります。今回は「Whisper」フォルダにしました。 (私の環境では「マイドライブ>Colab Notebooks>whisper」というパスになってます)

作ったフォルダ内でもう一度「新規」のボタンを押し、今度は「その他」を選択すると以下のようなツリーが表示されます。

ここで「GoogleColaboratory」が表示されていればいいですが、ない人は「新規」→「その他」→「アプリを追加」で「colaboratory」と検索して追加しておきましょう。

GoogleColaboratory
GoogleColabを追加
追加されれば先程のツリーに表示されているはずですので、クリックして新規ファイルを作成します。

新規ファイル

2. 設定

まずはcolabの設定をしましょう。タブの「ランタイム」から「ランタイムタイプを変更」を選択し、以下のようにGPUに変更します。

ランタイムのタイプを変更
GPUに設定

次に文字起こしをするデータを用意しましょう。 動画データ(mp4,movなど)でも音声データ(mp3,wavなど)でも使用することができます。 私の方では「output.mp4」という動画を用意しました。 この動画データを先程準備したGoogleDrive内の「whisper」フォルダにアップロードしておきましょう。

output2.mp4もありますが気にしないでください

ついでにColabノートブックの名前をwhisper.ipynbに変えました。

3. コード

それではコードを書いていきます。たったの数行です。

# githubからインストール
!pip install git+https://github.com/openai/whisper.git

# whisperのインポート
import whisper

# mediumモデルを使用
model = whisper.load_model("medium")

# 推論
result = model.transcribe("/content/drive/MyDrive/Colab Notebooks/whisper/output.mp4")
print(result["text"])

# 結果をテーブル表示で見る
import pandas as pd
pd.DataFrame(result["segments"])[["id", "start", "end", "text"]]

セルを細かく区切りました。

ちなみにcolabにはセルというものがあり、このセル単位でコードを実行することができます。 一つのセルの中に全文書くこともできますが、出力を確認しながら進められるようにいくつかに区切って書いたほうが良いです。

4. 実行

それでは実行してみましょう。

タブの「ランタイム」→「すべてのセルを実行」で一気に実行できます。 ちなみにセル単位で実行するにはセルの左の再生マークを押すと、そのセルを実行できます。(Shift + Enterでもいけます)

また、おそらくGoogleDriveがマウントされている(連携されている)状態だと思いますが、されていない場合はアラートが出るので、指示に従って連携しましょう。

実行結果がこちらです。

ちなみに私はこちらの動画を使ってみました。

www.youtube.com

日本語でもかなりの精度で認識されていますね。

また、検出した動画時間も出力されるので、字幕を簡単につけることができそうです。 会議の議事録動画をとりあえず文字起こししておけば、あとからテキスト検索できてしかも動画内での該当箇所も簡単にわかるということですね。らくちんです。

5. まとめ

非常に簡単に実行できたかと思います。

今回はmediumモデルで実行しましたが、より精度の高いlargeも使うことができます。その代わりに時間がかかりますし、最悪メモリ不足で実行できない場合があるかも知れません。

2分半の動画ではmediumで1分、largeで2分近くかかっていたと思います。気になる方はセルの3行目を「large」に変えて試してみても良いと思います。

この精度の文字起こしがオープンソースで公開されているのはすごいですね。 それでは。