MLX Whisperのv3-turboの8bit量子化モデルを動かしてみる

MLX Whisperのv3-turboの8bit量子化モデルを動かしてみる

MLX Whisperのv3-turbo 8bit量子化モデルを使った音声文字起こしの実装方法を試したので、その過程で見つけたコツを共有します。
2026.06.12

こんばんは、情報システム部の夏目です。

最近音声の日本語文字起こしを色々試しているのですが、MLX Whisperのv3-turboの8bit量子化モデルを動かすために色々試したので共有します。

なぜMLX Whisperを使ったか

https://dev.classmethod.jp/articles/20260506-macscribe-mlx-whisper/#%25E3%2581%25AA%25E3%2581%259C-mlx-whisper-%25E3%2582%2592%25E9%2581%25B8%25E3%2582%2593%25E3%2581%25A0%25E3%2581%25AE%25E3%2581%258B

c25de5a2-d504-42cb-9ecf-e3fec0589c2e

#なぜ MLX Whisper を選んだのか - [技術解説] Apple Silicon ネイティブの文字起こしツール MacScribe を設計、MLX Whisper の 5 モデルを M4 で実測してみた | DevelopersIO

主な理由としては、この記事がよくまとまっています。

後追加するとすれば、Pythonのライブラリである mlx-whisper (or mlx-audio)をインストールするだけで使えるのが非常に良いと思いました。

mlx-communityのwhisper-v3-largeの8bitモデル

mlx-community には whisper-v3-largeの8bit量子化モデルが二つあります。

これは変換に使ったライブラリや作った人が違います。

後者は mlx-audio のメイン開発者が mlx-audio を使って変換したものなので、今回は後者を使います。
(前者は自分では動かすことができなかったということもあるのですが)

使ってみる

モデルカードに書かれている方法

https://huggingface.co/mlx-community/whisper-large-v3-turbo-asr-8bit

モデルカードはpipでインストールしていたので、uvでインストールするように変えています。

uv init --python 3.14
uv add mlx-audio
uv run main.py
main.py
from mlx_audio.stt.utils import load_model
from mlx_audio.stt.generate import generate_transcription
model = load_model("mlx-community/whisper-large-v3-turbo-asr-8bit")
transcription = generate_transcription(
    model=model,
    audio_path="path_to_audio.wav",
    output_path="path_to_output.txt",
    format="txt",
    verbose=True,
    word_timestamps=True,  # モデルカードには書かれていないが、話者識別を別途行いたいので付けた
)
print(transcription.text)

これで使うことができます。
verbose=Trueなので文字起こしの内容が標準出力に出力されます。
またpath_to_output.txt.txtというファイルが生成されます。

74428887-1575-4f91-88a8-1b68607731e1

https://github.com/Blaizzy/mlx-audio/blob/main/mlx_audio/stt/generate.py#L283

この方法だとほぼ確実にファイルが作成されます。
formatに応じた拡張子が追加されるので /dev/null に向けることもできません。

ほぼと言ったのは format="" と空文字列を渡したときには何故かファイルが作成されませんでした。
明らかに想定した使い方とは違うと思うので、ファイルを作成しない別の方法を探しました。

ファイルを作成しない方法

model: mlx_audio.stt.models.whisper.whisper.Modelgenerate() 関数を使えばできることがわかりました。

from mlx_audio.stt import load_model
from mlx_audio.stt.models.whisper.whisper import Model, STTOutput

model: Model = load_model("mlx-community/whisper-large-v3-turbo-asr-8bit")

result: STTOutput = model.generate(
    audio="path_to_audio.wav",
    language="ja",
    word_timestamps=True,
)

f60db675-7a79-4926-8827-c85815fbccc9

https://github.com/Blaizzy/mlx-audio/blob/main/mlx_audio/stt/models/whisper/whisper.py#L263

この方法ではファイルを勝手に作成することはありませんでした。
また、コードを読む限りもっと細かく設定ができそうでした。

この方法ならアプリケーションに組み込むというのもできそうです。

まとめ

以上、MLXのwhisper-v3-largeの8bit量子化モデルを使って文字起こしをするために試したことでした。

何かのお役に立てれば幸いです。


国内企業 AI活用実態調査2026 配布中

クラスメソッドが独自に行なったAI診断調査をもとに、企業のAI活用の現在地を調査レポートとしてまとめました。企業規模別の活用度傾向に加え、規模を超えてAI活用を進める企業に共通する取り組みまで、自社の現在地を捉えるためのヒントにぜひ。

国内企業 AI活用実態調査2026

無料でダウンロードする

この記事をシェアする

関連記事