言語識別

SpeechBrain ECAPA VoxLingua107 を使って音声の言語をデバイス上で識別します。Swift ランタイムはネイティブ MLX とコンパイル済み Core ML に対応し、107 言語を順位付けします。

アーキテクチャ

音声を 16 kHz にリサンプリングし、SpeechBrain と厳密に一致する 60 ビンの log-Mel フロントエンドで処理します。時間平均正規化後、ECAPA-TDNN エンコーダーと 107 クラス分類器に入力します。

CLI

speech language-id recording.wav
speech language-id recording.wav --engine coreml --top 3
speech language-id recording.wav --json

既定は MLX です。--engine coreml でコンパイル済みモデル、--top で候補数、--json で機械可読出力を選べます。

Swift API

import SpeechLanguageID

let identifier = try await SpeechLanguageIdentifier.fromPretrained(engine: .mlx)
let result = try identifier.identify(
    audio: samples,
    sampleRate: sampleRate,
    topK: 5
)
print(result.best?.label.code ?? "unknown")

長い録音

1 回のモデル呼び出しで約 30 秒まで解析します。長い録音は重複しない窓に分割し、時間で重み付けした確率を統合します。

クローズドセットモデル

モデルは必ず既知ラベルのいずれかを順位付けします。信頼度は未知言語の検出器ではありません。無音、音楽、コードスイッチ、不対応言語には VAD と校正済み拒否規則を追加してください。

Hugging Face

CLI: language-id