Identificación de idioma
Identifica en el dispositivo el idioma hablado con SpeechBrain ECAPA VoxLingua107. El runtime Swift admite MLX nativo y Core ML compilado, y ordena 107 etiquetas de idioma.
Arquitectura
El audio se remuestrea a 16 kHz y pasa por un frontend log-mel de 60 bandas idéntico al de SpeechBrain. La normalización de media temporal alimenta un codificador ECAPA-TDNN y su clasificador de 107 clases.
CLI
speech language-id recording.wav
speech language-id recording.wav --engine coreml --top 3
speech language-id recording.wav --json
MLX es el motor predeterminado. Usa --engine coreml para el modelo compilado, --top para elegir candidatos y --json para una salida procesable.
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")
Grabaciones largas
Cada llamada analiza hasta unos 30 segundos. Las grabaciones más largas se dividen en ventanas sin solapamiento y sus probabilidades se combinan ponderadas por duración.
El modelo siempre ordena una de sus etiquetas conocidas. Su confianza no detecta idiomas desconocidos. Añade VAD y una política de rechazo calibrada para silencio, música, cambio de código e idiomas no admitidos.