faster-whisperは、CTranslate2を使った高速な文字おこしが可能です。whisper-large-v3-turboを使えないかと思って、挑戦したのでメモ。
変換されたモデルをhuginggaceから有難くダウンロードして指定するだけです。Colabで試したところ、実行速度は、open-whisperのwhisper-large-v3-turboと比較して大きな高速向上になりませんでした。faster-whisperも使いやすい場面も多いと思います。
録音時間 2:49:27のmp3ファイルの変換を比較。
- Transformers
CPU times: user 4min 51s, sys: 11 s, total: 5min 2s
Wall time: 5min 33s - openai-whisper
CPU times: user 7min 3s, sys: 9.81 s, total: 7min 12s
Wall time: 7min 52s - 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 tqdmmodel_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から利用するのもよいと思います。開発継続しているので楽しみです。