[transcribe] Colab上でWhisperを使って文字起こし(初心者向け)

作成:2022年10月11日  最終更新:2022年10月11日

2022年9月後半にOpenAIが公開したWhisperは、強力な音声文字起こしツールです。精度が高く多言語対応、しかも自由に使えることから話題になりました。

GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision
https://github.com/openai/whisper

しかし、WhisperはGPUを活用する設計なので、多くの普通のPCだと、文字起こし速度はあまり出ません。ちなみに、Core i5 8250のPCで、CPUのみで文字起こしをしたところ、だいたい元の音声の7倍程度の時間がかかりました。

でも実は、特に追加費用をかけずに、GPUを活用してWhisperを動かすことが可能です。

Google Colabという非常に便利かつ強力なサービスがあり、無料でもかなり使えるため、これを活用することで、Whisperをかなりの速度で動かせます。今回試したら、元の音声の7分の1程度の時間で起こせました(先のCPUのみの場合の約50倍の速度です)。

Google Colab
https://research.google.com/colaboratory/faq.html?hl=ja

ここでは、PCは使えるが独立GPUはついていないとか、pythonのセットアップ分からないといった場合に、とりあえず文字起こしができる手順を紹介します。必要なのはGoogleアカウントだけです(gmailアカウントとかのあれです)。

ちなみに筆者はネット上にある同類の情報を見てColab上でWhisperを使おうとしたものの、うまくいかずに苦戦して、後に示す手順を見出した次第です。

0.注意点


下記のページによれば、Colabにはいくつか制限があります。

Google Colabの制限と対策|npaka|note
https://note.com/npaka/n/n1aa6f8c973d0

特にポイントとなるのは次の2点。

・何も操作せずに90分経つとリセット
・インスタンスが起動してから12時間経つとリセット

対策は次の通りです。

・文字起こしが終わったら、すぐに結果をダウンロードしておく。

・文字起こしする音声は1つあたり4~5時間に留める。長い場合は4~5時間ごとに分割する。
(途中で操作すれば90分ルールには抵触しない)

・文字起こしする音声が全部で30時間とか40時間以上ある場合は「ノートブックを開いて文字起こしする」というプロセス自体を分割する。

では、いよいよ手順です。

1. Googleドライブにアクセスする


とりあえず、Googleドライブの「マイドライブ」を開いてみましょうか。
(別の適当な場所でもたぶんOKでしょうけど)

https://drive.google.com/drive/my-drive

2. Colabのノートブックを作成する


マイドライブ内の空いた部分を右クリックするとメニューが出ます。
(ちなみにメニューが下に出てくるので、クリックする場所はなるだけ上がお勧めです)

メニューの一番下にある「その他」をクリックして、「Google Colaboratory」があればクリック。なければ末尾の「アプリを追加」。

(「アプリを追加」の場合)
検索欄で「colab」と入れると、Colaboratoryが出てくるので追加。
追加すると、その後はマイドライブなどで「Google Colaboratory」が出てくるので選択します。

3. GPUの有効化


初期状態ではノートブックのGPUは不使用になっているので、有効化します。GPUを有効にしないと、とんでもなく時間がかかってしまいますので。

ブラウザタブの上の方に出ているメニュー(「ファイル」「編集」……)から「ランタイム」を選び、下に出てくる「ランタイムのタイプを変更」を選択すると、「ノートブックの設定」というダイアログが出現します。

中にある「ハードウェア アクセラレータ」の項目が、デフォルトでは「None」なので、「GPU」に変更してから右下「保存」ボタンを押します。

4. whisperをインストール


ノートブックの入力欄(たぶん[1]とか書いてある欄)に、次のように入力します。

! pip install git+https://github.com/openai/whisper.git -q


【重要】最初の「!」と「pip」の間には半角空白がいる模様

ここまで入力したら、そのままShift+Enter、もしくは入力欄の左側にある再生ボタンをクリックします。
これで3本のバーが伸びていき、次のメッセージが表示されるはず。

Building wheel for whisper (setup.py) ... done


これでwhisperをノートブックにインストールできました。

なお、インストールなどはノートブック単位で、なおかつ時間が経つとリセットされるため、この手順はノートブックを開くたびに必要となります。ご注意を。
※ノートブック自体はGoogleドライブに保存されるため、再入力は不要です。

5. ターゲットを音声ファイルに変換


はじめからターゲットが音声(例えば .wav .mp3 .aac)なら、このステップは不要です。

もし文字起こしのターゲットが動画(例えば .mp4)なら、アップロード時間などの点からも、音声ファイルにした方がベターです。

(筆者は、なぜかローカルでは処理できた動画ファイルが、Colab上では最初の30秒しか処理できませんでした。詳しい調査まではできていないのですが)

動画ファイルから音声を抜き出すには、えこでこツールが手軽です。手順は割愛。自分で「えこでこツール 音声 抜き出す」などで検索してください。

えこでこツールの詳細情報 : Vector ソフトを探す!
https://www.vector.co.jp/soft/dl/winnt/art/se445019.html

6. 音声ファイルをアップロード


Colabノートブックの左端にあるアイコン群にあるフォルダをクリックします。すると、ファイル一覧が表示されるはず。初期状態では、「sample_data」というフォルダと中身があります。使いませんが。

文字起こししたい音声ファイルを左クリックして、ノートブックの「ファイル」の領域にドラッグ&ドロップします。これで、音声ファイルが、ノートブック用のファイル領域にアップロードされすます。

(なお、冒頭付近で述べたように、時間が経つとノートブック内のファイルは全てリセットされてしまうのでご注意を)

7. 文字起こしスクリプトを実行


次のスクリプトを、ノートブック末尾の入力欄に貼り付けます。
貼り付けた後で、2行目(fileName)の引用符の内側を、先ほどアップしたファイル名にあわせて変更してください。

import whisper
fileName = "target_audio.aac"
lang = "ja"
model = whisper.load_model("medium")

# Load audio
audio = whisper.load_audio(fileName)

result = model.transcribe(audio, verbose=True, language=lang)

# Write into a text file
with open(f"{fileName}.txt", "w") as f:
  f.write(f"▼ Transcription of {fileName}\n")
  f.write(result["text"])


あとは、Shift+Enterまたは左の再生ボタンをクリック。
これで、自動的に文字起こしが進みます。

8. 結果をダウンロード


全部終わったら、下中央に「XX分XX秒 完了時間:XX:XX」と出て、動きが止まります。ファイル欄には、音声ファイルの名前+「.txt」というファイルができます。

この「.txt」つきのファイルを右クリックして「ダウンロード」します。文字起こしされたファイルです。なお、句点がつかない模様です。頑張って直しましょう。

文字起こしされたテキストだけでなく時間情報も欲しい場合は、実行中に出力されるログ領域を全部選択して、適当なテキストエディタに貼り付けて保存するといいでしょう。

本来はもっと凝った出力もできると思いますが、とりあえずできたものだけ紹介する次第です。

(参考)この手順を作るまでに遭ったトラブル


「Colaboratoryがメニューに出てこない」

手順でも書いたように、自分で追加する必要があるようです。

「GPUを有効化するはずの場所に項目がない」

ネット上の他のページを参考にしたらはまりました。ランタイムから設定するように変わったっぽいですね。

「import whisperでエラーになる」

今回最も苦しんだ部分です。pipでインストールする部分で、「!」と「pip」の間に空白がなかったからっぽいです。
一見成功っぽいメッセージが出るのでやられました。

「最初の30秒しか文字起こしされない」

原因不明ですが、mp4の動画を入れると最初の30秒だけで終わってしまい、同じスクリプトでaacの音声を入れると全部起こしてくれました。


◀(前記事)[PC一般]Outlook(アウトルック)で送られたメールの添付がおかしい件
▶(次記事)[Windows] 操作していないPCの画面が勝手に消えてしまう件への対応

(一覧)[2.技術情報 (tech)]