Нормализация результатов распознавания
Нормализация — это преобразование (постобработка) текста, полученного в результате работы модели распознавания речи Yandex SpeechKit. Нормализация выполняется согласно параметрам, указанным в запросах API.
Примечание
В режиме автоматического распознавания языка (код языка auto) нормализация не выполняется.
Вы можете применять следующие уровни нормализации:
- Представление дат и времени в цифровом формате.
- Преобразование чисел из словарного в цифровой формат.
- Добавление заглавной буквы в начале предложения и в именах собственных.
- Маскирование обсценной лексики.
- Форматирование телефонных номеров. Например,
7(999)123-45-67вместо7 999 123 45 67. - Добавление знаков пунктуации.
Важно
Правила представления нормализованного текста могут меняться. Учитывайте это при интеграции и следите за обновлениями.
Управление параметрами нормализации
API v1
| Уровень нормализации | Параметр API |
|---|---|
| Маскирование обсценной лексики | profanityFilter=true |
| Преобразование чисел из словарного в цифровой формат | По умолчанию включено. Чтобы отключить, укажите rawResults=true |
API v2
| Уровень нормализации | Параметр API |
|---|---|
| Маскирование обсценной лексики | config.specification.profanityFilter=true |
| Преобразование чисел из словарного в цифровой формат | По умолчанию включено. Чтобы отключить, укажите config.specification.rawResults=true |
| Уровень нормализации | Параметр API |
|---|---|
| Маскирование обсценной лексики | config.specification.profanityFilter=true |
| Преобразование чисел из словарного в цифровой формат | По умолчанию включено. Чтобы отключить, укажите config.specification.rawResults=true |
| Добавление заглавной буквы в начале предложения и в именах собственных. Добавление знаков пунктуации | config.specification.literature_text=true |
API v3
Для включения нормализации задайте в API параметр text_normalization=TEXT_NORMALIZATION_ENABLED. Некоторые опции включаются дополнительными параметрами, когда задан text_normalization=TEXT_NORMALIZATION_ENABLED.
| Уровень нормализации | Параметр API | Поддерживаемые языки |
|---|---|---|
| Представление дат и времени в цифровом формате | text_normalization=TEXT_NORMALIZATION_ENABLED |
ru, uz, kk, en, fr, de, es, it, tr |
| Преобразование чисел из словарного в цифровой формат | text_normalization=TEXT_NORMALIZATION_ENABLED |
ru, uz, kk, en, fr, de, es, it, tr |
| Форматирование телефонных номеров | text_normalization=TEXT_NORMALIZATION_ENABLED. Чтобы выключить только этот уровень, укажите дополнительно phone_formatting_mode=PHONE_FORMATTING_MODE_DISABLED. |
ruРаботоспособность не тестировалась: en, fr, de, es, it, tr |
| Маскирование обсценной лексики | profanity_filter=true при включенном параметре text_normalization |
ruРаботоспособность не тестировалась: en, fr, de, es, it, tr |
| Добавление заглавной буквы в начале предложения и в именах собственных. Добавление знаков пунктуации | literature_text=true при включенном параметре text_normalization |
ru |
Нормализация выполняется, только если в списке разрешенных языков указан один язык. Нормализация не поддерживается для следующих языков: pt, pl, nl, fi, sv, he, auto.
SDK
Пример настройки нормализации с помощью SDK:
import os
from yandex_ai_studio_sdk import AIStudio
# Аутентификация через переменные окружения:
# export YC_API_KEY=<API-ключ>
# export YC_FOLDER_ID=<идентификатор_каталога>
sdk = AIStudio(
auth=os.environ['YC_API_KEY'],
folder_id=os.environ['YC_FOLDER_ID'],
)
# Нормализация включена, форматирование телефонных номеров активно по умолчанию.
stt = sdk.speechkit.speech_to_text(
audio_format='wav',
language_codes='ru-RU',
text_normalization=True,
)
with open('speech.wav', 'rb') as f:
audio_data = f.read()
result = stt.run(audio_data)
print(result.text)
# Нормализация без форматирования телефонных номеров.
stt = stt.configure(
text_normalization=stt.TextNormalization(phone_formatting=False)
)
result = stt.run(audio_data)
print(result.text)
# Нормализация с фильтром обсценной лексики.
stt = stt.configure(
text_normalization=stt.TextNormalization(profanity_filter=True)
)
result = stt.run(audio_data)
print(result.text)
# Нормализация с добавлением знаков пунктуации и заглавных букв.
stt = stt.configure(
text_normalization=stt.TextNormalization(literature_text=True)
)
result = stt.run(audio_data)
print(result.text)