Главная → Блог → Какие языки распознавание речи вытягивает, а какие нет
Какие языки распознавание речи вытягивает, а какие нет
Девяносто девять языков звучит как решённая задача. На практике список — это градиент: дюжина языков, где распознавание близко к человеческому, длинная середина, где оно полезно с проверкой, и хвост, где вывод требует больше работы, чем экономит.
Список — это градиент, а не галочка
Поддержка определяется тем, сколько языка было в обучающих данных, а это распределено крайне неравномерно. Грубая практическая группировка:
| Уровень | Языки | Чего ждать |
|---|---|---|
| Сильный | Английский, испанский, немецкий, французский, итальянский, португальский, русский, японский, китайский | Единицы процентов ошибок на чистой речи; годится при лёгкой вычитке |
| Хороший | Польский, нидерландский, турецкий, корейский, украинский, арабский, шведский, чешский и подобные | Содержание надёжно, промахов на именах и терминах больше |
| Рабочий | Большинство остальных европейских и крупных азиатских | Суть передана верно, редактура понадобится настоящая |
| Слабый хвост | Малоресурсные языки в конце списка | Проверьте на своих записях, прежде чем что-то на этом строить |
Единственное значимое число — то, которое вы измерили на собственных записях: акцент, качество звука и тематика сдвигают результат сильнее, чем уровень в таблице.
Как работает автоопределение и когда оно ошибается
По умолчанию язык определяется автоматически по началу записи. На чём-либо длиннее пары фраз это надёжно. Сбои бывают в двух ситуациях:
- Очень короткие записи. Три секунды речи — слабое основание, а короткая фраза на одном языке легко похожа на другой.
- Шумное начало. Если запись открывается музыкой, гудком или перебиванием, определение работает по ним.
И то и другое лечится прямым указанием языка:
r = client.audio.transcriptions.create(
model="whisper-1", file=f, language="de",
)
Используйте двухбуквенный код. Указание языка ещё и пропускает проход определения, поэтому обработка идёт чуть быстрее.
Как узнать, что именно определилось
Когда поток действительно многоязычный, оставьте автоопределение и читайте результат — он возвращается вместе с оценкой уверенности:
r = client.audio.transcriptions.create(
model="whisper-1", file=f, response_format="verbose_json",
)
print(r.language, r.language_probability)
if r.language_probability < 0.6:
queue_for_review(r) # низкая уверенность — проверить глазами
Это же самый дешёвый способ маршрутизировать входящие обращения: определили язык, отдали разговор менеджеру, который на нём говорит, а сомнительные несколько процентов пометили для человека.
Записи, где язык меняется
Вот настоящее ограничение, и его стоит понимать точно: язык выбирается один раз, по началу записи, а остальное расшифровывается в этом режиме. Человек, начавший по-немецки и перешедший на английский посреди фразы, получит английскую часть расшифрованной как немецкую — часто в виде правдоподобной бессмыслицы.
Два способа с этим жить:
- Разрезать на месте перехода и расшифровать каждую часть со своим языком, если переходов немного и они предсказуемы: двуязычное интервью, конференция с двумя спикерами.
- Принять доминирующий язык, если второй появляется только отдельными заимствованиями и терминами, — этот случай обычно отрабатывает нормально, потому что такие слова передаются как услышаны.
Чего ждать не стоит — что один запрос последует за переключением. Никакие параметры этого не меняют.
Имена и термины — слабое место в любом языке
По всему списку ошибки собираются в одном месте: имена собственные. Названия продуктов, фамилии, топонимы, аббревиатуры — слова, которых модели неоткуда ждать. Лекарство везде одно:
r = client.audio.transcriptions.create(
model="whisper-1", file=f, language="fr",
prompt="Intervenants : Amélie Roussel, Karim Benali. Produits : Kestrel, Hawknest.",
)
Пишите подсказку на языке аудио. Она смещает распознавание к нужным написаниям и заодно к той пунктуации, в которой написана сама.
Что проверить до того, как строить на этом продукт
- Двадцать реальных записей на целевом языке, снятых в ваших условиях, а не чистые студийные образцы.
- Измерьте долю ошибок по тому, что вам важно: если бизнесу нужны номера заказов, считайте ошибки в цифрах отдельно.
- Прогоните с параметром
languageи без него — на коротких записях разница часто больше, чем от любой другой правки. - Добавьте список терминов и измерьте снова. Если ваша боль — имена собственные, решается она именно здесь.
Половина дня такой работы скажет больше, чем любой опубликованный бенчмарк, потому что измерено на том звуке, который вы и будете отправлять.
Попробуйте на своих записях. Регистрация занимает минуту, бесплатных минут хватает, чтобы оценить качество.
Получить ключ бесплатноЧастые вопросы
Все ли 99 языков распознаются одинаково точно?
Нет. Дюжина распространённых языков близка к человеческой точности на чистой речи, дальше по списку качество плавно снижается. Проверяйте на своих записях, а не доверяйте самому числу языков.
Указывать язык или доверить определению?
Указывайте, если аудио одноязычное, особенно на коротких записях, где определению почти не на что опереться. Оставляйте автоопределение, когда записи действительно приходят на разных языках.
Что произойдёт, если говорящий перейдёт на другой язык?
Язык выбирается по началу записи, и остаток расшифровывается в этом режиме. Разрежьте аудио на месте перехода и расшифруйте части по отдельности.
Как узнать, какой язык был определён?
Запросите verbose_json — в ответе будут определённый язык и вероятность. Низкая вероятность — надёжный сигнал, что запись стоит проверить.
Работает ли параметр prompt на любом языке?
Да, и писать его нужно на языке аудио. Это самое действенное средство против ошибок в именах и специальных терминах — главном источнике ошибок в любом языке.
Читайте также
- Транскрибация голосовых сообщений: Telegram, WhatsApp и другие мессенджеры — Как автоматически переводить голосовые сообщения в текст: работа с форматом ogg/opus, обработка коротких записей, примеры кода для чат-ботов.
- Как повысить точность распознавания речи: восемь рабочих приёмов — Восемь изменений, которые действительно двигают качество расшифровки: подготовка звука, подсказка языка, параметр prompt, нарезка по паузам, форматы и замер ошибок.
- Как расшифровать запись звонка в текст — Пошаговое руководство: как перевести аудиозапись телефонного разговора в текст через API за несколько минут. Примеры кода на Python и C#, разбор ошибок.