语言识别

使用 SpeechBrain ECAPA VoxLingua107 在设备端识别口语语言。Swift 运行时支持原生 MLX 和已编译的 Core ML,并对 107 个语言标签进行排序。

架构

音频会重采样到 16 kHz,并通过精确匹配 SpeechBrain 的 60 维对数梅尔前端。时间均值归一化后的特征进入 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")

长录音

每次模型调用最多分析约 30 秒。更长的录音会被划分为不重叠窗口,并按时长加权合并概率。

封闭集模型

模型始终会在已知标签中给出排名,其置信度不能用于检测未知语言。对于静音、音乐、语码转换和不支持的语言,请加入 VAD 和经过校准的拒识策略。

Hugging Face

CLI: language-id