【Python】音声認識AIのWhisperを試してみた
・はじめに
2022年9月に音声認識AIのWhisperが発表されました。気になってはいましたが、忙しく手をつけれていませんでした…(言い訳)。ようやく時間ができたのでWhisperというものをGoogleColaboratoryで実装してみました。
使用感としては、簡単かつ精度が高くて使えるなと思いました。
インタビューや会議の際に発言内容をメモしながら、後で間違えないよう録音もする人は少なくないです。しかし、録音した音声を聞いてテキストに起こす作業はかなりの手間がかかってしまいます。Whisperを使えば簡単にテキスト化できるのでやる価値は十分にあります。また、YouTubeの動画の音声をテキスト化するのにも使えるので動画編集者にも需要はありそうです。
・whisperについて
WhisperはOpenAIがオープンソースで公開した「自動音声認識」システムです。音声を聞き取って、それぞれの言語で文章化したり英語に翻訳して出力することが可能です。
公開されているWhisperのAIモデルは、累計68万時間に及ぶ大規模な音声データを元に学習されており、多少の雑音が混ざっている状態でも高い精度で音声を認識できるようになっています。
音声認識の「速度と精度」はトレードオフの関係にあるので、Whisperでは目的に合わせて使い分けができるように、多言語に対応したモデルであれば「tiny, base, small, medium, large」という5つのモデルが提供されています。速度優先ならtiny寄りのモデル、精度優先ならlarge寄りのモデルを使うことになります。
・Google Colabで実行
Google Colabの使い方については、以下で説明しているので参考にしてください。
Google Colabを使う理由としては、無料でGPUが使えるからです。冒頭でも述べましたが、精度に優れている「large」モデルを用いてCPUで処理するとかなりの時間がかかってしまいます…。したがってGPUを使うことが必須になります。
・実装
・ランタイムをGPUに設定
タブの「ランタイム」を選択して「ランタイムのタイプを変更」をクリックします。
ハードウェア アクセラレータに「GPU」を選択して「保存」をクリックします。
・ライブラリをインストール
!pip install git+https://github.com/openai/whisper.git
!sudo apt update
!sudo apt install ffmpeg
上記のコードをコピペして、赤枠をクリックすることでインストールが実行されます。
・音声ファイルをアップ
左にあるファイルから「content」を右クリックして「アップロード」を選択して音声ファイルをアップロードします。
・プログラムを作成
model.transcribe()で実行します。
・verbose=Trueとすることでログを表示
・language="ja"で言語を日本語に設定
今回はmp3の音声ファイルを使用していますが、他にもwavファイルやmp4などの動画ファイルといった数多くのフォーマットに対応しています。
import whisper
# 音声認識のモデルを指定
model = whisper.load_model("large")
# テキストに変換
result = model.transcribe("/content/sample.mp3", verbose=True, language="ja")
print(result["text"])
上記のコードをコピペして、赤枠をクリックすることで実行されます。
↓のようにログが表示されていれば成功です
・おまけ
出力したテキストファイルをGoogle Colabからローカルにダウンロードしてくるサンプルコードを展開します。
import os
import whisper
from google.colab import files
# 音声認識のモデルを指定
model = whisper.load_model("large")
# テキストに変換
result = model.transcribe("/content/sample.mp3", verbose=True, language="ja")
print(result["text"])
# ディレクトリ作成
checkContentFolder = os.path.exists("output")
if not checkContentFolder:
os.mkdir("output")
# テキストファイルに出力
text_file = f"/content/output/test.txt"
f = open(text_file, "w")
f.write(result["text"])
f.close()
# ローカルにダウンロード
!zip -r /content/file.zip /content/output
files.download("/content/file.zip")
↓Google Colabで実行するとzipファイルでダウンロードできます
↓file.zipを展開すると文字起こししたtest.txtがあります
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?