Реализация автоматического определения языка речи (Language Detection)
Автоматическое определение языка — обязательный компонент мультиязычных систем. Позволяет маршрутизировать аудио к нужной STT-модели или оператору без ручного указания языка.
Подходы к language detection
Whisper-based — наиболее точный, использует первые 30 секунд аудио:
from faster_whisper import WhisperModel
model = WhisperModel("small", device="cuda") # small достаточно для LID
def detect_language(audio_path: str) -> tuple[str, float]:
_, info = model.transcribe(audio_path, language=None, task="transcribe")
return info.language, info.language_probability
langid / langdetect — быстрее, но работает с текстом (нужен предварительный грубый STT).
Lightweight audio-based classifiers:
# speechbrain — специализированная LID-модель
from speechbrain.pretrained import EncoderClassifier
classifier = EncoderClassifier.from_hparams(
source="speechbrain/lang-id-voxlingua107-ecapa",
savedir="tmp_langid"
)
signal = classifier.load_audio("speech.wav")
prediction = classifier.classify_batch(signal)
lang_id = prediction[3][0] # ISO 639-1
confidence = float(prediction[1].exp())
VoxLingua107 распознаёт 107 языков с точностью 93.3% на 1-секундных фрагментах.
Практические пороги
При confidence < 0.7 лучше попросить пользователя выбрать язык вручную или запустить более тяжёлую модель. Для систем с ограниченным набором языков точность существенно выше.
Сроки
Интеграция готового классификатора: 1 день. Кастомная модель под специфический набор языков: 1–2 недели.







