4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【python】 whisperライブラリのインストールからテストまで【自分用まとめ】

Posted at

注意事項

この記事は自分用メモに公開していますが、書きかけもいいところです。
導入までてこずっているのもあって、無茶苦茶を書いてしまっていると思います。
追記するまで暖かい目で見守っていてください
導入を急いでいる人は、他の記事を参考にするか、ChatGPTに聞いてください......本当に申し訳ない

はじめに

openAIが提供するライブラリでwhisperというものがあるらしい。
音声ファイルをテキストに文字起こししてくれるようで、使えるならばうれしい。
しかもMITライセンスで無料。試してみるしかない。

導入手順

ffmpegのインストール

  1. 以下のサイトから使用環境に合わせてインストールファイルをダウンロード
    https://ffmpeg.org/download.html

  2. ダウンロードファイルを解凍し、任意のフォルダに移動させる
    (例:C:\Users\ hogefoo\AppData\Local\Programs)

  3. 環境変数の設定
    Windowsキー + pause breakキー で設定を開く
    システムの詳細設定>環境変数>hogefooのユーザー環境変数>新規(N)を開く
    Pathにffmpegファイルのbinファイルのパスを新規追加
    (例:C:\Users\ hogegoo\AppData\Local\Programs\ffmpeg-N-110972-gbaa9fccf8d-win64-gpl-shared\bin)

参考:ffmpegのインストール手順詳細
https://jp.videoproc.com/edit-convert/how-to-download-and-install-ffmpeg.htm

python側 パッケージのインストール

 pip で以下のパッケージをインストールする。
Whisperが対応しているのはPython 3.8~3.10らしいので注意してほしい。
加えて、既存環境にあるライブラリとの依存関係の問題があると動作しない可能性が高いし、
venvで新しい仮想環境を作成してからインストールすることをお勧めする。(自分は後悔した)

pip install - U openai-whisper
pip install ffmpeg

......実はここでつまずいた。
内容は以下に類似していて、テストコード実行時にFileNotFoundError と怒られた
エラーメッセージをみるとmel = log_mel_spectrogram(audio)で怒られているみたい......
https://teratail.com/questions/b36fxex20hc3nx

いやでも、ffmpegインストールしたしなと思って、PCを再起動させたら普通に起動した。
(そんなことある?)
途中でいろいろとネットにある問題解決方法を試しまくっていたので、再起動が解決策かは要検証事項。
後で新しい仮想環境を作成してしっかり調べるつもり。

文字起こしのテストコード

以下はtest.mp3をtext.txtに文字起こしするコード
これだけのコードで文字起しができちゃうなんで、すげえ!
しかもタダ。OpenAI万歳!


import whisper

# モデルの読み出し(今回はsmallモデルを利用)
model = whisper.load_model("small")

# inputfile,outputfileの定義
input_file = r"C:\Users\*hogefoo*\Documents\test.mp3"
output_file = r"C:\Users\*hogefoo*\Documents\text.txt"

# print result
result = model.transcribe(input_file,verbose=True, language='ja')
print(result["text"])

# write txt file
with open(output_file, "w",encoding="utf_8") as f:
    f.write(result["text"])

アウトプット例

今回読ませた音声ファイルは以下のサイトから拝借しております。
https://self-development.info/%E3%81%BB%E3%81%BC%E5%AE%8C%E7%92%A7%E3%81%AA%E6%96%87%E5%AD%97%E8%B5%B7%E3%81%93%E3%81%97%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8Bai%E9%9F%B3%E5%A3%B0%E8%AA%8D%E8%AD%98whisper%E3%81%AE%E3%82%A4%E3%83%B3/

音声の内容はこんな感じ

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

これを文字起こしした結果が以下の通り。

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

漢字が一部違うけど、全然読める!!!
自分のタイプミスより全然いいじゃんよ!!!

今後の展開

めんどうな議事録とか、whisperで文字に起こして、ChatGPTなりに要約させてみようと思っている。
というか、Pythonである程度文節ごとくらいに区切る処理はできるのでは?やれるならチャレンジする。
導入時のつまずきの原因も確認する。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?