地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

fast-whisperでlarge-v3-turboを、のメモ

faster-whisperは、CTranslate2を使った高速な文字おこしが可能です。whisper-large-v3-turboを使えないかと思って、挑戦したのでメモ。

 

変換されたモデルをhuginggaceから有難くダウンロードして指定するだけです。Colabで試したところ、実行速度は、open-whisperのwhisper-large-v3-turboと比較して大きな高速向上になりませんでした。faster-whisperも使いやすい場面も多いと思います。

 

録音時間 2:49:27のmp3ファイルの変換を比較。

 

  1. Transformers
    CPU times: user 4min 51s, sys: 11 s, total: 5min 2s
    Wall time: 5min 33s
  2. openai-whisper
    CPU times: user 7min 3s, sys: 9.81 s, total: 7min 12s
    Wall time: 7min 52s
  3. faster-whisper
    CPU times: user 6min 12s, sys: 13.4 s, total: 6min 25s
    Wall time: 6min 22s

 

コード:

!pip install -q faster-whisper

# モデルをダウンロードします。
from huggingface_hub import snapshot_download
repo_id = "deepdml/faster-whisper-large-v3-turbo-ct2"
local_dir = "faster-whisper-large-v3-turbo-ct2"
snapshot_download(repo_id=repo_id, local_dir=local_dir, repo_type="model")

from faster_whisper import WhisperModel
from tqdm import tqdm

model_name = "faster-whisper-large-v3-turbo-ct2"
model = WhisperModel(model_name, device="cuda")

 

segments, info = model.transcribe(AUDIO_FILE_NAME, beam_size=5)
print("Detected language '%s' with probability %f" % (info.language, info.language_probability))

with open("output.txt", "w") as f:
    for segment in tqdm(segments, desc="Processing segments"):
        f.write("[%.2fs -> %.2fs] %s\n" % (segment.start, segment.end, segment.text))

 

BatchedInferencePipelineやdetect_language_multi_segmentの実装されているようなので、最新版をgithubから利用するのもよいと思います。開発継続しているので楽しみです。