文字起こしのライブラリ faster-whisper が超簡単で超早くて超正確!

Jun 4, 2024, 7:03 AM
文字起こしができる whisper は仕事で使ったことがあったのですが、より高速に文字起こしできる faster-whisper を試してみました。

仮想環境構築

pipenv shell

インストール

pipenv install faster-whisper
pipenv install torch

プログラム

import torch
from faster_whisper import WhisperModel

target_file = "sample.mp4"
model_size = "large-v3"
compute_type_for_gpu = "float16" # or int8_float16
compute_type_for_cup = "int8"
beam_size = 5

# CUDA が利用可能か確認
if torch.cuda.is_available():
model = WhisperModel(model_size, device="cuda", compute_type=compute_type_for_gpu)
else:
# CPU で INT8 を使用
model = WhisperModel(model_size, device="cpu", compute_type=compute_type_for_cup)


segments, info = model.transcribe(target_file, beam_size=beam_size)

print("Detected language '%s' with probability %f" % (info.language, info.language_probability))

for segment in segments:
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

テスト

今回は、お友だちの動画
https://www.youtube.com/shorts/tLxGgAVvLwU
を sample.mp4 として python と同じディレクトリに置いて実行しました。

テスト結果

% python ./main.py    
Detected language 'ja' with probability 0.995862
[0.00s -> 1.78s] 食べないダイエットでリバウンドを繰り返し
[1.78s -> 3.76s] 正しく食べることでやっと痩せられた私の
[3.76s -> 5.48s] 一日の食事を解説していきます
[5.48s -> 7.44s] 朝はバナナとオールグランで糖質
[7.44s -> 8.40s] くるみで脂質
[8.40s -> 9.52s] 無脂肪ヨーグルトと
[9.52s -> 12.02s] 低糖質低脂質のミルクで爆質とってます
[12.02s -> 13.94s] 詳しい作り方はYouTubeで紹介してます
[13.94s -> 16.02s] 昼はサラダ、胸からお米です
[16.02s -> 17.92s] 胸からは揚げ物なんだけど
[17.92s -> 19.72s] 脂質が低くておすすめです
[19.72s -> 21.94s] 運動量も身長も平均な方であれば
[21.94s -> 23.74s] 4歩から5歩ぐらいがおすすめです
[23.74s -> 24.68s] 夜はサラダと
[24.68s -> 27.28s] あやのさんがヘルシーダイエットクラブで教えてくれた
[27.28s -> 28.84s] バターチキンカレーです
[28.84s -> 31.42s] カレーもノンオイルで自分で手作りしたりとか
[31.42s -> 33.86s] こういう脂質が低いカレールーを使ったりとか
[33.86s -> 37.06s] 市販のレトルトカレーでも脂質が低いものがあるので
[37.06s -> 39.24s] ダイエット中でもカレーを楽しめます
[39.24s -> 41.08s] 市販のものの裏面を見るコツは
[41.08s -> 42.64s] YouTubeで詳しく解説してます
[42.64s -> 45.68s] 自分の食事の適正量や過不足がわからないよっていう方は
[45.68s -> 46.56s] 数日でいいので
[46.56s -> 48.16s] アスケンなどで可視化してみると
[48.16s -> 49.52s] 気づきがあるかもしれません

間違い箇所

  • オールグランオールブラン
  • 爆質タンパク質
  • 4歩から5歩 → 4個から5個 
のだけでした。素晴らしい!
※爆質の方は、人間が聞いても爆質と聞こえます😂

実行時間

M1 Mac (MEM: 16G) で実行した結果(cudaなし=int8)
  • モデルの読み込み: 4.79秒
  • 文字起こし: 93.72秒
GPUを使用していないので、やはり遅いですね。GPU(CUDA)ありの環境で今度試してみます。

追記:
Jetson Orin Nano NX 16Gでも実施しました。(cudaあり=float16)
  • モデルの読み込み: 5.25秒
  • 文字起こし: 26.86秒 
やはりGPU使うと早いですね。
50秒ほどの動画を、約半分の時間で処理できています。RTX系だとより爆速で処理されると思います。

ChatGPT 4o で間違い箇所を修正してみる

USER:
あなたは、文字起こししたテキストを修正する専門のアシスタントです。
以下の三重引用符で囲まれたテキストは、YouTubeの動画を fast-whisper で文字起こししたものです。
多少の誤字脱字があるので、正しいと思われる内容に書き換えてください。
大きくは書き換えないでください。

"""
食べないダイエットでリバウンドを繰り返し
正しく食べることでやっと痩せられた私の
一日の食事を解説していきます
朝はバナナとオールグランで糖質
くるみで脂質
無脂肪ヨーグルトと
低糖質低脂質のミルクで爆質とってます
詳しい作り方はYouTubeで紹介してます
昼はサラダ、胸からお米です
胸からは揚げ物なんだけど
脂質が低くておすすめです
運動量も身長も平均な方であれば
4歩から5歩ぐらいがおすすめです
夜はサラダと
あやのさんがヘルシーダイエットクラブで教えてくれた
バターチキンカレーです
カレーもノンオイルで自分で手作りしたりとか
こういう脂質が低いカレールーを使ったりとか
市販のレトルトカレーでも脂質が低いものがあるので
ダイエット中でもカレーを楽しめます
市販のものの裏面を見るコツは
YouTubeで詳しく解説してます
自分の食事の適正量や過不足がわからないよっていう方は
数日でいいので
アスケンなどで可視化してみると
気づきがあるかもしれません
"""

食べないダイエットでリバウンドを繰り返し、正しく食べることでやっと痩せられた私の一日の食事を解説していきます。

朝はバナナとオールブランで糖質、くるみで脂質、無脂肪ヨーグルトと低糖質低脂質のミルクでタンパク質をとっています。詳しい作り方はYouTubeで紹介しています。

昼はサラダ、鶏胸肉、お米です。鶏胸肉は揚げ物なんだけど、脂質が低くておすすめです。運動量も身長も平均な方であれば、4歩から5歩ぐらいの量が適量です。

夜はサラダと、あやのさんがヘルシーダイエットクラブで教えてくれたバターチキンカレーです。カレーもノンオイルで自分で手作りしたり、こういう脂質が低いカレールーを使ったり、市販のレトルトカレーでも脂質が低いものがあるので、ダイエット中でもカレーを楽しめます。市販のものの裏面を見るコツはYouTubeで詳しく解説しています。

自分の食事の適正量や過不足がわからない方は、数日でいいのでアスケンなどで可視化してみると気づきがあるかもしれません。
オールブラン、タンパク質は直してくれましたが、固有名詞「胸から」や、映像を見ていないとわからない「こういう」などで間違えを起こしてしまいました。
この辺は、プロンプトを修正することで改善できるかもしれません。

ChatGPT 4o で要約してもらう

あなたは、テキストをわかりやすく要約する専門のアシスタントです。
以下の三重引用符で囲まれたテキストを要約してください。ただし、内容に変更は加えないでください。

"""
食べないダイエットでリバウンドを繰り返し
正しく食べることでやっと痩せられた私の
一日の食事を解説していきます
朝はバナナとオールグランで糖質
くるみで脂質
無脂肪ヨーグルトと
低糖質低脂質のミルクで爆質とってます
詳しい作り方はYouTubeで紹介してます
昼はサラダ、胸からお米です
胸からは揚げ物なんだけど
脂質が低くておすすめです
運動量も身長も平均な方であれば
4歩から5歩ぐらいがおすすめです
夜はサラダと
あやのさんがヘルシーダイエットクラブで教えてくれた
バターチキンカレーです
カレーもノンオイルで自分で手作りしたりとか
こういう脂質が低いカレールーを使ったりとか
市販のレトルトカレーでも脂質が低いものがあるので
ダイエット中でもカレーを楽しめます
市販のものの裏面を見るコツは
YouTubeで詳しく解説してます
自分の食事の適正量や過不足がわからないよっていう方は
数日でいいので
アスケンなどで可視化してみると
気づきがあるかもしれません
"""

食べないダイエットでリバウンドを繰り返していたが、正しく食べることで痩せられた一日の食事内容を紹介します。
朝:バナナとオールブランで糖質、くるみで脂質、無脂肪ヨーグルトと低糖質低脂質のミルクでタンパク質を摂取しています。詳しい作り方はYouTubeで紹介。
昼:サラダ、鶏胸肉、お米。鶏胸肉は揚げ物ですが脂質が低くおすすめです。運動量と身長が平均的な人には4歩から5歩がおすすめ。
夜:サラダとヘルシーダイエットクラブで教わったバターチキンカレー。ノンオイルや脂質が低いカレールー、市販の低脂質レトルトカレーも利用。市販品の選び方はYouTubeで解説。
自分の適正な食事量や過不足が分からない場合は、数日間アスケンなどで記録し、可視化してみると良いかもしれません。
要約はいい感じですね。

所感

個人的に制度は極めて高いと感じました。
float16を使えば、より精度も上がると思います。
かなり実用的だと感じました。whisper すごい!

より良い回答を得るための LLM プロンプトエンジニアリング
Jetson Orin Nano NX 16G で faster-whisper をインストールして文字起こし