【Python】OpenAIのWhisperで音声認識してみた(macOS)

プログラミングをする犬 Python

OpenAIが開発した音声認識モデルであるWhisperを使って音声認識を試してみました。

試した環境は以下です。

  • MacBook Air M1, 2020
  • macOS Ventura 13.2
  • Python 3.10.9(当初はPython3.11で試しましたが動作しませんでした。2023年5月2日現在)
  • pip 22.3.1

1. Whisperをインストールする

Whisperはpip経由でinstallできます。

pip install -U openai-whisper

注意点として、Pythonバージョンは3.8-3.10でなければなりません。

2. ffmpegをインストールする

次にffmpegをインストールします。

ffmpegは音声の変換・再生等に使用するソフトウェアです。

macOSの場合はHomebrewを使ってインストールできます。

brew install ffmpeg

3. ffmpeg-pythonをインストールする

さらにffmpeg-pythonをインストールします。

これをインストールすることでPythonを経由してffmpegを使えるようになります。

こちらはpipでインストールします。

pip install ffmpeg-python   

4. 音声ファイルを用意する

Whisperに認識させる音声ファイルを用意します。

事前に音声ファイルを用意して、コードと同じディレクトリに入れておきましょう。

サンプルとして「隣の客はよく柿食う客だ」という機械音声を用意しました。

手元に音声ファイルがなければダウンロードして使ってください。

↓音声ファイル(クリックしてダウンロードできます)

5. Whisperに音声認識させる

音声ファイルを用意できたら、以下のコードを実行しましょう。

import whisper
model = whisper.load_model("base") # モデルを読み込む
result = model.transcribe("speech.mp3") # 音声ファイルを指定する
print(result["text"]) # 認識結果を出力

1行目でwhisperをimportします。

2行目でWhisperのモデルを読み込みます。

モデルがローカルになければ自動的にダウンロードされます。

load_modelの引数にはモデルの種類を指定できます。

モデルは5種類あり「large」「medium」「small」「base」「tiny」の順に性能が良く、性能が良いものほどモデルのサイズも大きくなります。

前述したサンプルの音声「隣の客はよく柿食う客だ」について5種類の音声認識を試したところ、以下の結果になりました(カッコ内の数字は簡易計測した実行時間)。

  • large → 隣の客はよくかき食う客だ(130秒)
  • medium → 隣の客はよくかき食う客だ(62秒)
  • small → 隣の客はよく書き空客だ(17秒)
  • base → 隣の曲はよく書き空曲だ。(5秒)
  • tiny → 隣の客はよく書きく客だ(3秒)

largeとmediumはどちらも高精度に文字に起こせています(柿は変換できていませんが)。

smallは音声認識はできていそうですが変換が間違っています。

baseとtinyは音声認識の段階で精度が低そうです。

CPUを使用しているため実行時間はかなり遅めです。

CPUの環境で利用する場合、small〜largeのモデルはリアルタイムでは使えなさそうです。

baseとtinyは実行時間は悪くないため、もう少し性能を評価したいところです。

今回使ったサンプルは「隣の客はよく柿食う客だ」という、やや特殊な例だったため、少し分かりやすい日本語でも試しました。

「明日の天気は晴れのち曇りです」という機械音声のファイルです。

↓音声ファイル(クリックしてダウンロードできます)

結果は次のようになりました。

  • base → 明日の天気は晴れのチクモリです。(5秒)
  • tiny → 明日の天気は晴れのチクモリです(3秒)

単語の変換は間違っていますが「明日の天気は」くらいは正しく認識できています。

3秒程度でこのくらいの音声認識ができるなら、自作のスマートスピーカーくらいには使えるかもしれません。

使用用途によって上手にモデルを使い分ける必要がありそうです。

インストール時のエラーメッセージへの対応方法

Whisperを使用するまでの過程でいくつかエラーに対処したので、最後に対応方法をメモとして残しておきます。

1. ModuleNotFoundError: No module named ‘ffmpeg’

ffmpegがない場合に発生するエラーです。

pipコマンドでffmpeg-pythonをインストールします。

pip install ffmpeg-python

また、Homebrewでffmpegをインストールしていない場合は以下も実行しましょう。

brew install ffmpeg

2. AttributeError: module ‘ffmpeg’ has no attribute ‘input’

pipで「ffmpeg-python」ではなく「ffmpeg」をインストールすると発生します。

この場合は、まず下記の2つのコマンドを実行します。

pip uninstall ffmpeg
pip uninstall ffmpeg-python

その後、pipでffmpeg-pythonだけをインストールします。

pip install ffmpeg-python

3. FileNotFoundError: [Errno 2] No such file or directory: ‘ffmpeg’

ffmpeg-pythonはインストールできているものの、ffmpeg自体をインストールできていないパターンです。

以下を実行してffmpegをインストールします。

brew install ffmpeg

macOS以外の方は公式のリポジトリのREADMEを参考に、自分の環境に合わせたコマンドを実行しましょう。

記事の内容にわからないことがある方は以下のアカウントに気軽にDMしてください!

@sti320a

また、最新の技術の活用方法など役に立つツイートを心がけているので、ぜひフォローしてもらえると嬉しいです!

タイトルとURLをコピーしました