はじめに
以前にvllmを使った方法を書きました。
vllmがWindowsに対応していないためWSL2を使う必要がありました。
今回はTransformersライブラリから使うためWindowsでも動作可能です。
今回はひとまず音声ファイルからの文字起こしを行いました。
リアルタイムの文字起こしはこちら。
環境構築
こちらから ffmpeg-8.0.1-full_build-shared.7z をダウンロードして解凍して作業フォルダに配置しました。
PATHはpythonコード内で指定しているので事前の設定は不要です。
通常のFFMPEGでは動作できませんでした。full-shared版 が必要のようです。
uvを使って環境構築しています。pyproject.tomlを載せておくので uv sync で再現出ると思います。
[project] name = "voxtral-transformers" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.13" dependencies = [ "accelerate==1.12.0", "librosa==0.11.0", "mistral-common==1.9.1", "soundfile==0.13.1", "torch==2.10.0+cu126", "torchcodec==0.10.0", "transformers==5.2.0" ] [[tool.uv.index]] name = "torch-cuda" url = "https://download.pytorch.org/whl/cu126" explicit = true [tool.uv.sources] torch = [{ index = "torch-cuda" }]
Pythonスクリプト
import os ffmpeg_path = r"E:/voxtral-transformers/ffmpeg-8.0.1-full_build-shared/bin" if os.path.exists(ffmpeg_path): # Windows版Python 3.8以降でDLLを読み込むための魔法の呪文 os.add_dll_directory(ffmpeg_path) # 念のためPATHにも追加 os.environ["PATH"] = ffmpeg_path + os.pathsep + os.environ["PATH"] import librosa from transformers import VoxtralRealtimeForConditionalGeneration, AutoProcessor repo_id = "mistralai/Voxtral-Mini-4B-Realtime-2602" processor = AutoProcessor.from_pretrained( repo_id, #revision="refs/pr/23" ) model = VoxtralRealtimeForConditionalGeneration.from_pretrained( repo_id, device_map="auto", #revision="refs/pr/23" ) # 1. 音声ファイルのパスを指定 audio_file_path = "g_22.mp3" # 2. 音声ファイルの読み込み # sr=16000 は Voxtral などの音声モデルで一般的に使われるサンプリングレートです audio, sampling_rate = librosa.load(audio_file_path, sr=16000) inputs = processor(audio, sampling_rate=sampling_rate, return_tensors="pt") inputs = inputs.to(model.device, dtype=model.dtype) outputs = model.generate(**inputs) decoded_outputs = processor.batch_decode(outputs, skip_special_tokens=True) print(decoded_outputs[0])