ローカル音声認識・音声合成

Orukeetローカル文字起こし:英語・欧州言語の音声をMacで書き起こす

Orukeetは英語・欧州言語を中心とする音声ファイルを書き起こすローカルASRです。

Orukeetは録音を文章にする0.6B規模のASR1モデルです。英語と欧州言語を中心に25言語に対応し、約714MBのQ8 GGUF2をMacのMetal3でも実行できます。自動インストーラーでモデルとランタイム4を準備し、短いWAVファイルを文字起こしします。

実行条件と要点
  • 英語・フランス語・ドイツ語など25言語に対応します。韓国語と日本語は対応リストに含まれません。
  • 公式nativeインストーラーはQ8重みを検証し、Apple Silicon Metal、検出されたCUDA、CPUの経路を選びます。
  • 25言語FLEURSのWER 9.85%は、20,146録音、greedy-batch TDT、FP32重み、CUDA BF16 autocastの条件で算出されています。

Orukeetの対応言語と出力

Orukeetは録音を入力し、認識した語句をテキストとして返す自動音声認識(ASR)モデルです。2026年9月11日に公開された0.6B規模で、モデルカードによるとNVIDIA Parakeet TDT 0.6B v3を基にしています。主な用途は文字起こしであり、話者分離5や感情スコアではありません。

モデルカードに記載されている25言語は、ブルガリア語、クロアチア語、チェコ語、デンマーク語、オランダ語、英語、エストニア語、フィンランド語、フランス語、ドイツ語、ギリシャ語、ハンガリー語、イタリア語、ラトビア語、リトアニア語、マルタ語、ポーランド語、ポルトガル語、ルーマニア語、ロシア語、スロバキア語、スロベニア語、スペイン語、スウェーデン語、ウクライナ語です。韓国語と日本語は含まれません。韓国語音声が主な用途なら、韓国語に対応するASRを選んでください。

携帯型レコーダーと、音声波形を表示したノートPCが並んでいる
まず録音の言語がOrukeetの対応一覧に含まれるか確認します。

ハードウェアを評価する前に推論形式を選ぶ

NeMoソースは研究・公式評価経路に近く、ローカル文字起こしアプリやMacではnative GGUFが簡単な出発点です。native Q8は714,456,704 bytes(約714MB)、F16は約1.30GBです。ONNX INT8アーカイブは約487MBで、展開後は約672MBです。ダウンロード容量は実行時のRAM/VRAMではないため、必要メモリとして扱わないでください。

nativeパッケージはApple SiliconでMetal、NVIDIAデバイス検出時はCUDA6、それ以外はCPU7を選べます。ただし選択はシステムで利用できるランタイムに依存するため、インストール結果JSONの`device`、`model`、`runtime`を保存しておくと次回実行時の環境を確認しやすくなります。

モデルファイルと利用条件はコードと分けて確認します
経路おおよその配布ファイル主な注意点
NeMo2,509,342,720 bytes公式評価経路。NeMoが必要
native Q8 GGUF714,456,704 bytesMetal・CUDA・CPUランタイム
ONNX INT8圧縮時486,807,585 bytes、展開後約672MBsherpa-onnx経路

モデルファイルと利用条件はコードと分けて確認します

NeMo

おおよその配布ファイル
2,509,342,720 bytes
主な注意点
公式評価経路。NeMoが必要

native Q8 GGUF

おおよその配布ファイル
714,456,704 bytes
主な注意点
Metal・CUDA・CPUランタイム

ONNX INT8

おおよその配布ファイル
圧縮時486,807,585 bytes、展開後約672MB
主な注意点
sherpa-onnx経路

Python 3.12以降でnative文字起こしを始める

公式モデルカードはPython 3.12以降とv0.1.1ホイールを案内しています。仮想環境8にホイールを導入し、`orukeet install`でQ8重みとnativeランタイムを取得します。アプリでは録音ごとにモデルを再ロードせず、`Orukeet`オブジェクトを保持してファイルごとに`transcribe()`を呼び出します。

短いWAVファイルから試し、返された`text`フィールドとインストールJSONを確認します。語句が抜ける場合は、対応言語か、ファイルを開けるか、選択されたruntimeが導入済みかを先に調べます。以下のPython例はモデルカードのインターフェースに沿ったもので、この執筆作業で実行した結果ではありません。

公式v0.1.1 wheelをインストール
python -m pip install --upgrade \
  https://github.com/Oruk-AI/orukeet/releases/download/v0.1.1/orukeet-0.1.1-py3-none-any.whl
orukeet install --device auto --cache ./orukeet-cache --output installation.json
音声ファイルを1つ文字起こしする
import json
from pathlib import Path
from orukeet import Orukeet

config = json.loads(Path("installation.json").read_text(encoding="utf-8-sig"))
with Orukeet(config["model"], config["runtime"], device=config["device"]) as asr:
    result = asr.transcribe("recording.wav")
    print(result["text"])
開いた手書きノートの横に、音声波形と文字起こし作業を表示するノートPCがある
長いファイルに使う前に短い区間で脱落や句読点を確認します。
小型Macとモニターが置かれた文字起こし作業机
インストールJSONに記録されたMetal runtimeとdeviceを保存すると、実行経路を後から確認できます。

FLEURSスコアは評価条件と一緒に読みます

Oruk AIは25言語FLEURSのpooled WERについて、基準値11.01%からOrukeetで9.85%になったと報告しています。評価は20,146件の録音で構成され、同じNeMo greedy-batch TDT経路、FP329重み、CUDA BF1610 autocastを使用しています。9.85%はこのデータセットと推論条件での結果であり、あらゆる録音での誤り率を保証するものではありません。

論文は追加学習とチェックポイント11選択にLibriSpeech test-otherを使ったと明記しています。この評価資料はモデル開発にも使われたため、スコアの解釈で考慮が必要です。自分の録音では同じファイルと実行設定を保ち、欠落や誤認識した単語を比較してください。

同じNeMo評価経路によるFLEURSの25言語集計
モデル単語誤り率(WER)評価条件
Parakeet TDT 0.6B v311.01%20,146録音、greedy-batch TDT、FP32重み・CUDA BF16 autocast
Orukeet9.85%同じ条件

同じNeMo評価経路によるFLEURSの25言語集計

Parakeet TDT 0.6B v3

単語誤り率(WER)
11.01%
評価条件
20,146録音、greedy-batch TDT、FP32重み・CUDA BF16 autocast

Orukeet

単語誤り率(WER)
9.85%
評価条件
同じ条件

コードと重みのライセンスを分けて確認する

リポジトリのコードはMIT、Hugging Faceモデルカード上の重みとfitted kernelsはCC BY-SA 4.0です。モデルや重みを改変・再配布する場合、コードライセンスだけでは不十分です。表示義務と継承条件を含め、重みの条件を別途確認してください。

英語・欧州言語の録音をローカルで文字起こしし、テキストと区間時刻が必要なら、native出力形式を確認して短いサンプルで評価できます。話者識別、感情分析、韓国語対応が重要なら公開範囲外のため、別のツールを選ぶ方が適切です。

初回実行で止まったら言語・ファイル・runtimeを確認します

ダウンロード検証やruntime選択に失敗した場合は、`installation.json`が作成されたか、記録された`device`と`runtime`のパスが現在のOSに合うか確認します。モデルファイルが見つからない場合は、`--cache`フォルダーの書き込み権限とQ8ファイルのダウンロード完了を確認してください。nativeインストーラーはモデルとruntimeの両方を確認するため、この段階を解決する前にPythonコードから変更しないでください。

文字起こしが空の場合、まず録音が対応25言語のいずれかか、ファイル形式と音声トラックを読み取れるか確認します。結果は返るものの語句が抜ける場合は、同じ短い区間を対応言語で試し、入力音声の聞き取りやすさと認識結果を分けて見ます。他言語で使う場合は、その言語の録音で性能を確認してください。

用語の注釈

  1. 自動音声認識 — 音声中の発話を認識してテキストに変換する技術です。

    本文に戻る
  2. GGUF — モデル情報を格納するファイル形式で、llama.cpp系のツールで広く使われます。

    本文に戻る
  3. Metal — Apple機器でグラフィックスやGPUの並列計算を実行する低水準の技術です。

    本文に戻る
  4. ランタイム — プログラムの実行時に必要な機能を提供するソフトウェア環境です。ローカルAIではモデル実行エンジンを指すこともあります。

    本文に戻る
  5. 話者ダイアリゼーション — 録音を「誰がいつ話したか」の区間に分け、話者ごとにラベル付けする処理です。

    本文に戻る
  6. CUDA — NVIDIA GPUで汎用計算を行うソフトウェア基盤です。

    本文に戻る
  7. CPU — コンピューターで汎用のプログラム命令を実行する中央処理装置です。AI処理ではGPUなど他のプロセッサーと役割を分けることがあります。

    本文に戻る
  8. Python仮想環境 — プロジェクトごとにPythonパッケージを分けて導入する環境です。パッケージのバージョンの衝突を減らせます。

    本文に戻る
  9. FP32 — 32ビット浮動小数点形式です。BF16より値あたりのメモリを多く使い、数値をより細かく表現できます。

    本文に戻る
  10. BF16 — モデルの数値を保存・計算する16ビット浮動小数点形式です。利用可否はハードウェアと実行環境によります。

    本文に戻る
  11. チェックポイント — 学習済みモデルの重みなどを保存したファイルです。同じモデル系列でも、版や用途によって異なるチェックポイントを使うことがあります。

    本文に戻る