言語識別
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 と校正済み拒否規則を追加してください。