ほぼ完璧な文字起こしができるAI音声認識Whisperのインストール

ほぼ完璧な文字起こしができるAI音声認識Whisperのインストール 機械学習

「動画・音声の文字起こしを自動で行いたい」
「AIを使って、無料で精度の高い音声認識を試したい」

このような場合には、Whisperがオススメです。
この記事では、ほぼ完璧な文字起こしができるWhisperについて解説しています。

本記事の内容

  • Whisperとは?
  • Whisperのシステム要件
  • Whisperのインストール
  • Whisperの動作確認

それでは、上記に沿って解説していきます。

Whisperとは?

Whisperとは、汎用的な音声認識モデルになります。
Whisperは、OpenAIによって開発されています。

OpenAIと言えば、「DALL・E 2」や「GPT-3」の開発で有名ですね。
そこにWhisperも投入してきたという流れになります。

OpenAIによる、Whisperの紹介ページは以下。

Introducing Whisper
https://openai.com/blog/whisper/

このページでは、音声認識(文字起こし)のデモを確認できます。
ただ、日本語のデモはありません。

でも、安心してください。
Whisperは、日本語に対応しています。

以下のグラフは、言語毎のWhisperの性能(WER)を表しています。

この中でも、日本語はかなり上位に位置付けられています。

WERとは、Word Error Rateの略称になります。
そして、日本語の単語誤り率は6.4%ということです。

この場合、日本語の単語認識率は以下の計算式で求められます。

単語認識率 = 1.0 -  0.064 = 0.936

よって、日本語の単語認識率は約94%となります。
ある研究によると、次のような結果が公開されています。

話し言葉の音声認識の進展
https://www.code.ouj.ac.jp/media/pdf/vol9no1_shotai_1.pdf

この結果によると、94%は「ほぼ完璧」と言ってよいでしょう。
議会の会議録作成であれば、十分に利用可能になります。

このようなレベルの音声認識が、Whisperでは実現されているということです。

以上、Whisperについて説明しました。
次は、Whisperのシステム要件を説明します。

Whisperのシステム要件

現時点(2022年9月)でのWhisperの最新バージョンは、1.0となります。
GitHubを見ると、2022年9月22日に公開されています。

今後、さらなる改良が実施されるのを期待しましょう。
と言っても、現時点でも普通に動きます。

このWhisperのシステム要件は、以下がポイントになります。

  • OS
  • Pythonバージョン
  • PyTorch
  • FFmpeg

それぞれを以下で説明します。

OS

サポートOSに関しては、以下を含むクロスプラットフォーム対応になります。

  • Windows
  • macOS
  • Linux

基本的には、OSは問わないということです。

Pythonバージョン

サポート対象となるPythonのバージョンは、Python 3.7以降と考えてよいでしょう。
一応、setup.pyを見る限りPython 3.7以降が必須というわけではありません。

ただ、Pyton 3.7以降が望ましいと公式には記載されています。
それに、以下のPython公式開発サイクルを意識するべきです。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

Python公式開発サイクルを意識するなら、Python 3.7以降の利用が望ましいと言えます。

PyTorch

PyTorchに関しても、特にバージョンは明記されていません。
ただ、モデルの学習にはPyTorch 1.10.1を利用したことが記載されています。

そうは言っても、PyTorchはなるべく最新を利用すべきです。
パフォーマンスは、やはり最新バージョンの方が勝っているでしょう。

あと、WhisperはGPU版PyTorchの利用が前提となっています。
そのため、GPU版PyTorchをインストールします。

GPU版PyTorchについては、次の記事で解説しています。

FFmpeg

Whisperでは、動画・音声ファイルの処理にはFFmpegが利用されています。
具体的には、ffmpegコマンドをプログラム上でコールしているようです。

そのため、システム要件としてFFmpegのインストールが必須となります。
FFmpegのインストールは、以下の記事で説明しています。

以上、Whisperのシステム要件を説明しました。
次は、Whisperのインストールを説明します。

Whisperのインストール

Whisperのインストールを行っていきます。
システム要件であるPyTorchとFFmpegはインストール済みとします。

その状態において、次のコマンドを実行します。

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

このコマンドにより、次のファイル内のパッケージがインストールされます。

requirements.txt

numpy
torch
tqdm
more_itertools
transformers>=4.19.0
ffmpeg-python==0.2.0

処理完了後、インストール済みパッケージの状況を確認します。

> pip list
Package            Version
------------------ ------------
certifi            2022.9.14
charset-normalizer 2.1.1
requests           2.28.1
setuptools         65.3.0
tokenizers         0.12.1
torch              1.12.1+cu113
torchaudio         0.12.1+cu113
torchvision        0.13.1+cu113
tqdm               4.64.1
transformers       4.22.1
typing_extensions  4.3.0
urllib3            1.26.12
wheel              0.37.1
whisper            1.0

それほど多くのパッケージが、インストールされるわけではありません。
ただ、Python仮想環境を利用することを推奨します。

以上、Whisperのインストールを説明しました。
次は、Whisperの動作確認を説明します。

Whisperの動作確認

Whisperには、次の2つの利用方法があります。

  • コマンドラインツール
  • Python API(モジュール)

それぞれを下記で説明します。
ただし、その前に音声(もしくは動画)ファイルを用意しましょう。

YouTubeから動画をダウンロードするという手段があります。

小さな容量のMP3を用意したければ、gTTSを利用するという方法もあります。
これは、テキストから音声ファイルを生成する方法です。

今回は、このgTTSで作成した音声ファイルを用います。

test.mp3

この音声ファイルは、次のテキストをもとに生成しています。

過去最強クラスの台風14号が近づいてきています。九州南部、そして北部の皆さんを中心に暴風、高波、高潮や大雨などに最大級の警戒をしてください。

コマンドラインツール

公式では、次のコマンドが紹介されています。

whisper japanese.wav --language Japanese

ファイル名をtest.mp3に変更して実行した結果は、以下。
なお、初回時はモデル(未指定時はsmall)のダウンロードに時間がかかってしまいます。

> whisper test.mp3 --language Japanese    

[00:00.000 --> 00:05.700] 過去最強クラスの台風14号が近づいてきています。
[00:05.700 --> 00:27.180] 9周南部、そして北部の皆さんを中心に防風、高波、高潮や大雨などに最大級の警戒をしてください。

結果は、「9周」以外はパーフェクトです。
次は、モデルを「medium」に指定してみましょう。

モデルのダウンロードに時間がかかかるのは、同様です。
モデルのファイルサイズは、1.42GBになります。

> whisper test.mp3 --language Japanese --model medium

[00:00.000 --> 00:10.800] 過去最強クラスの台風14号が近づいてきています 九州南部そして北部の皆さんを中心に暴風
[00:10.800 --> 00:32.240] 高波高潮や大雨などに最大級の警戒をしてください

先ほどより、結果が改善されました。
なお、モデルに関しては次のような記載が公式にあります。

検証マシンのGPUは、メモリが8GBです。
「large」を試してみましたが、やはり8GBではダメでした。

次のエラーが出てしまいます。

RuntimeError: CUDA out of memory.

Python API(モジュール)

動作確認用コードは、以下となります。

import whisper

model = whisper.load_model("base")
result = model.transcribe("test.mp3")
print(result["text"])

上記を実行した結果は、以下。

Detected language: japanese
過去最強クラスの台風14号が近づいてきています。九州南部、そして北部の皆さんを中心に防風、高波、高市屋や大雨などに最大級の警戒をしてください。

上記結果は、モデルに「base」を指定しています。
モデルを変更した結果は、以下となります。

「small」を指定した場合の結果

Detected language: japanese
過去最強クラスの台風14号が近づいてきています。9周南部、そして北部の皆さんを中心に防風、高波、高潮や大雨などに最大級の警戒をしてください。

「medium」を指定した場合の結果

Detected language: japanese
過去最強クラスの台風14号が近づいてきています。九州南部、そして北部の皆さんを中心に暴風、高波、高潮や大雨などに最大級の警戒をしてください。

まとめ

検証結果を見ると、Python API(モジュール)の「medium」が最強です。
完全に一致しています。

もちろん、用意した音声ファイルが認識しやすいということはあるでしょう。
それでも、無料でこのレベルの音声認識は素晴らしいの一言です。

以上、Whisperの動作確認を説明しました。

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