Руководство по эксплуатации Audiogram
О продукте
Audiogram – это сервис на базе нейронных сетей и методов машинного обучения для распознавания и синтеза речи. Audiogram позволяет выполнять:
-
Синхронное распознавание речи. В этом случае сервис получает запрос с аудиофайлом, который необходимо расшифровать, и возвращает распознанный текст. Данный способ выполняется последовательно и считается наиболее точным. Подходит, например, для расшифровки телефонных разговоров.
-
Асинхронное (отложенное) распознавание речи. Этот способ позволяет распознавать крупные аудиофайлы (размером до 1 ГБ) за период до 8 часов. Необходимо сохранить аудиофайл в s3-хранилище, а затем отправить в Audiogram запрос на отложенное распознавание, содержащий путь к аудиофайлу и параметры распознавания. Во время распознавания можно проверить статус или отменить задачу. Когда распознавание будет закончено, Audiogram сохранит результаты распознавания в s3 рядом с аудио.
-
Потоковое распознавание речи. В случае потокового распознавания устанавливается соединение с Audiogram, по которому речь говорящего отправляется на распознавание частями в режиме online. Сервис возвращает результаты расшифровки по мере обработки. Данный способ подходит, например, для создания голосовых помощников или субтитров к видео.
-
Синхронный синтез речи. При синхронном синтезе запрос к Audiogram содержит текст, который необходимо озвучить, и дополнительную информацию по голосу, частоте дискретизации и кодировке. В ответ возвращается аудиофайл с озвученным текстом. Этот способ может использоваться, например, для озвучивания книг.
-
Потоковый синтез речи. При потоковом синтезе текст отправляется в Audiogram и озвучивается по частям. Потоковый синтез подходит, например, для создания ответных реплик голосовых помощников, так как позволяет достичь эффекта живого общения без неестественных пауз.
-
Сбор аудиоартефактов. Аудиофайлы, поступающие в Audiogram на распознавание речи, сохраняются в отдельном хранилище и могут быть использованы для обучения и усовершенствования ML-моделей, отвечающих за расшифровку речи.
-
Управление клиентами и просмотр статистики. Это можно сделать с помощью удобного веб-клиента в любом браузере.
Термины в документе
-
Audiogram (также Продукт, Система) – сервис, выполняющий услуги по распознаванию речи (превращению аудиозаписей с речью в текст) и синтезированию речи (озвучиванию текстов).
-
ASR (Automatic Speech Recognition) – запрос на распознавание речи.
-
TTS (Text-to-Speech) – запрос на синтезирование речи.
-
ML-модель (также нейросеть, искусственный интеллект) – программа, обученная распознаванию определенных типов закономерностей, которая используется в Audiogram для автоматизации и ускорения выполнения запросов на синтез и распознавание речи. В Audiogram используются различные ML-модели (в зависимости от типа запроса и деталей запросов).
-
Бот (также чат-бот, электронный помощник) – программа, отвечающая на запросы пользователей и имитирующая живое общение между людьми.
Демонстрация Audiogram
Вы можете бесплатно попробовать отправить какой-нибудь текст на озвучку или аудиофайл на распознавание, используя демонстрационную форму Audiogram, которая доступна на основной странице продукта.
Варианты поставки Audiogram
Возможны 2 варианта поставки Audiogram:
-
SaaS: Audiogram установлен в облаке MTS AI. Доступ к сервису осуществляется через подключение по API (gRPC).
-
On-premise: Audiogram развернут и функционирует в инфраструктуре заказчика.
Справочник API
Синхронное распознавание речи
Распознавание речи - это процесс преобразования аудио в текст. Например, вы отправляете в Audiogram аудиофайл с записью разговора между клиентом и оператором, а в ответ получаете результат расшифровки этого диалога в виде текста.
Синхронное распознавание речи бывает 2 видов:
-
потоковое: В этом случае устанавливается соединение между клиентом и Audiogram, речь поступает на распознавание частями (чанками), по мере записи аудиосигнала. Audiogram также выполняет и возвращает результаты распознавания по частям. Чаще всего потоковое распознавание используется для создания голосовых помощников.
-
файловое синхронное: В этом случае клиент отправляет в Audiogram запрос с файлом, речь из которого надо распознать. Audiogram выполняет распознавание и возвращает результат в ответе на запрос. Файловое синхронное распознавание используют, когда необходимо транскрибировать речь из небольших аудиофайлов, записанных заранее.
Для работы с Audiogram клиентам предлагается gRPC контракт (proto-файлы), который можно использовать, например, для создания собственного клиентского приложения. Для демонстрации, у менеджеров Audiogram можно попросить demo-клиенты, написанные на Python.
Важно! Есть 2 вида gRPC контракта:
- Один скрывает все настройки и предлагает использовать заранее созданные конфигурации (пресеты). Рекомендуется использовать этот вид контракта, так как он поможет пользователям избежать непреднамеренных ошибок конфигурации.
- Второй дает возможность самостоятельно настраивать все параметры распознавания.
Примечание: ранее созданные клиентские приложения, передающие полную конфигурацию запроса, еще будут поддерживаться некоторое время. Но впоследствии будет осуществлен полный переход на работу через пресеты.
Для создания собственного клиентского приложения можно использовать любой язык программирования, который есть в библиотеке для работы с gRPC. Подробную информацию об этом протоколе можно посмотреть на https://grpc.io/
В следующих секциях рассмотрим proto-файлы, которые вам понадобятся для создания приложения. Примечание: максимальная длина сообщения, принимаемого от клиентов по gRPC (в байтах): 62914560
Через пресеты
Для создания клиентского приложения, которое будет отправлять в Audiogram запросы на потоковое и файловое синхронное распознавание речи, вам понядобятся следующие proto-файлы:
- stt_presets.proto (синхронное распознавание через заранее созданные пресеты конфигурационных настроек)
- stt_response.proto (конфигурация ответа на запрос на распознавание речи)
stt_presets.proto
Методы
FileRecognize
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
FileRecognize | FileRecognizeRequest | mts.ai.audiogram.stt_response.v1.FileRecognizeResponse | Выполняет распознавание речи в файловом режиме (синхронном). |
Recognize
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
Recognize | stream RecognizeRequest | stream mts.ai.audiogram.stt_response.v1.RecognizeResponse | Выполняет распознавание речи в потоковом режиме. |
Сообщения PROTOBUF
Preset
Эта структура содержит информацию о пресете настроек, который необходимо использовать для распознавания речи.
Поле | Тип | Описание |
---|---|---|
preset_name | string | Название пресета. |
preset_version | string | Версия пресета. |
Название и версию пресета, который вам надо использовать, можно получить у менеджеров Audiogram.
FileRecognizeRequest
Конфигурация файлового (синхронного) распознавания.
Поле | Тип | Описание |
---|---|---|
preset | Preset | Сообщение типа Preset (описано выше). |
audio | bytes | В это поле надо передать байты аудио, речь из которого необходимо распознать. |
RecognizeRequest
Конфигурация потокового распознавания.
Поле | Тип | Описание |
---|---|---|
preset | Preset | Сообщение типа Preset (описано выше). |
audio | bytes | В это поле надо передать чанки (байты аудио), речь из которого необходимо распознать. |
stt_response.proto
Сообщения PROTOBUF
ResponseHeader
Поле | Тип | Описание |
---|---|---|
timestamp | uint64 | Время отправки ответа на стороне Audiogram. Позволяет высчитать сетевую задержку. |
FileRecognizeResponse
Поле | Тип | Описание |
---|---|---|
response | repeated RecognizeResponse | Результат распознавания. |
header | ResponseHeader | Сообщение типа ResponseHeader. |
RecognizeResponse
Ответ с результатами распознавания для метода Recognize.
Поле | Тип | Описание |
---|---|---|
hypothesis | SpeechRecognitionHypothesis | Результат распознавания речи. |
is_final | bool | Флаг, указывающий, что сформирована окончательная гипотеза и меняться она больше не будет: |
channel | int32 | Идентификатор канала (в настоящее время данный параметр не поддерживается). |
va_marks | repeated VoiceActivityMark | Voice Activity разметка. Массив меток отправляется только если VoiceActivityMarkEventsMode = VA_ENABLE / VA_ENABLE_ASYNC. При VoiceActivityMarkEventsMode = VA_ENABLE_ASYNC все остальные поля структуры SpeechRecognitionResult могут быть пустые. |
genderage | SpeakerGenderAgePrediction | Результат работы модели классификации мужчина/женщина/ребенок. Включается флагом enable в GenderAgeEmotionConfig. |
spoofing_result | repeated SpoofingResult | Результат работы модели антиспуфинга. Включается флагом enable в AntiSpoofingConfig. |
speaker_info | SpeakerInfo | Информация по спикеру, которому принадлежат распознанные фразы. |
header | ResponseHeader | Сообщение типа ResponseHeader. |
SpeechRecognitionHypothesis
Результат распознавания речи.
Поле | Тип | Описание |
---|---|---|
transcript | string | Результат работы модели распознавания речи без его последующей обработки сервисами денормализации чисел и расстановки знаков препинания. |
normalized_transcript | string | Результат работы модели распознавания речи с его последующей обработкой сервисами денормализации чисел и расстановки знаков препинания. |
confidence | float | Коэффициент достоверности (степень уверенности) распознанных фраз. |
start_time_ms | uint32 | Временная метка начала распознанной фразы относительно начала аудиопотока. |
end_time_ms | uint32 | Временная метка конца распознанной фразы относительно начала аудиопотока. |
words | repeated WordInfo | Результат распознавания речи с разбивкой по словам. |
normalized_words | repeated WordInfo | В настоящее время не поддерживается. |
WordInfo
Объект, содержащий информацию, относящуюся к распознанному слову.
Поле | Тип | Описание |
---|---|---|
start_time_ms | uint32 | Временная метка начала слова относительно начала аудиопотока. |
end_time_ms | uint32 | Временная метка конца слова относительно начала аудиопотока. |
word | string | Распознанное слово. |
confidence | float | Коэффициент достоверности (степень уверенности) распознанного слова. |
VoiceActivityMark
Определяет разметку голосовой активности во входном акустическом сигнале. Сообщение включает в себя метку времени и тип метки.
Поле | Тип | Описание |
---|---|---|
mark_type | VoiceActivityMarkType | Тип разметки. |
offset_ms | uint32 | Метка времени с точкой отсчета начала входного акустического сигнала, единицы измерения - миллисекунды. |
VoiceActivityMarkType
Определяет тип метки голосовой активности.
Имя | Значение | Описание |
---|---|---|
VA_MARK_NONE | 0 | Тип метки отсутствия изменения голосовой активности. |
VA_MARK_BEGIN | 1 | Тип метки начала голосовой активности. |
VA_MARK_END | 2 | Тип метки конца голосовой активности. |
SpeakerGenderAgePrediction
Пол, возраст и эмоциональная окраска голоса спикера.
Поле | Тип | Описание |
---|---|---|
gender | GenderClass | Значение, определяющее пол. |
age | AgeClass | Значение, определяющее возраст. |
emotion | EmotionsRecognition | Значение, определяющее эмоциональную окраску голоса спикера. |
EmotionsRecognition
Эмоциональная окраска голоса спикера.
Поле | Тип | Описание |
---|---|---|
positive | float | Положительный тон. |
neutral | float | Нейтральный тон. |
negative_angry | float | Сердитый тон. |
negative_sad | float | Печальный тон (в данный момент этот параметр не поддерживается). |
GenderClass
Пол говорящего.
Имя | Значение | Описание |
---|---|---|
GENDER_UNDEF | 0 | Пол не определен. |
GENDER_MALE | 1 | Мужчина. |
GENDER_FEMALE | 2 | Женщина. |
AgeClass
Возраст говорящего.
Имя | Значение | Описание |
---|---|---|
AGE_UNDEF | 0 | Возраст не определен. |
AGE_ADULT | 1 | Взрослый. |
AGE_CHILD | 2 | Ребенок. |
SpoofingResult
Результат работы модели, определяющей является ли аудио, поступившее на распознавание, спуфинг-атакой.
Поле | Тип | Описание |
---|---|---|
result | AttackResult | Результат определения является ли звонок спуфинг-атакой. |
confidence | float | Уверенность в принятом решении в поле result. |
start_time_ms | uint32 | Начальная метка временного отрезка, который анализировался на предмет спуфинг-атаки. |
end_time_ms | uint64 | Конечная метка временного отрезка, который анализировался на предмет спуфинг-атаки. |
AttackResult
Информация - является ли аудио, поступившее на распознавание, спуфинг-атакой или голос принадлежит человеку.
Имя | Значение | Описание |
---|---|---|
ATTACK_DETECTED | 0 | Зафиксирована спуфинг-атака (бот пытается выдать себя за человека). |
GENUINE | 1 | Голос принадлежит человеку. |
SpeakerInfo
Информация по спикеру, которому принадлежат распознанные фразы.
Поле | Тип | Описание |
---|---|---|
speaker_id | uint32 | Идентификатор (ID) спикера, которому принадлежат распознанные фразы. |
Через полную конфигурацию запроса
Для создания клиентского приложения, которое будет отправлять в Audiogram запросы на потоковое и файловое синхронное распознавание речи, вам понядобятся следующие proto-файлы:
- stt_v3.proto (синхронное распознавание через полную конфигурацию настроек запроса)
- stt_response.proto (конфигурация ответа на запрос на распознавание речи - этот файл описан в предыдущей секции)
stt_v3.proto
Методы
FileRecognize
Выполняет распознавание речи в файловом режиме.
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
FileRecognize | FileRecognizeRequest | mts.ai.audiogram.stt_response.v1.FileRecognizeResponse | Метод распознавания аудиофайла целиком. Ожидает аудиофайл, в этом же соединении возвращает результат и закрывает соединение. |
Recognize
Выполняет распознавание речи в потоковом режиме.
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
Recognize | stream RecognizeRequest | stream mts.ai.audiogram.stt_response.v1.RecognizeResponse | Этот метод позволяет проводить распознавание речи в потоковом режиме. Клиент устанавливает соединение с Audiogram и отправляет аудио на распознавание по кускам (чанками). Рекомендуется делать длительность чанка от 250 до 500 миллисекунд (мс). Распознавание проходит по мере поступления аудиоданных и заканчивается, когда поток закрывается клиентом. |
GetModelsInfo
Запрашивает список моделей для распознавания речи.
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
GetModelsInfo | google.protobuf.Empty | ModelsInfo | Метод запроса списка моделей для распознавания речи. Ничего не принимает в качестве аргументов, возвращает список доступных моделей. |
Сообщения PROTOBUF
FileRecognizeRequest
Запрос на распознавание аудио в файловом режиме.
Поле | Тип | Описание |
---|---|---|
config | RecognitionConfig | Конфигурация распознавания. |
audio | bytes | Аудио для распознавания. |
RecognizeRequest
Запрос на распознавание аудио в потоковом режиме.
Первое сообщение типа RecognizeRequest должно содержать данные в поле «config» и не должно содержать данные в поле «audio». Все последующие сообщения RecognizeRequest, наоборот, не должны иметь данных в поле «config», а в поле «audio» передаются аудиоданные. Аудиобайты должны быть закодированы, как указано в RecognitionConfig.
Поле | Тип | Описание |
---|---|---|
config | StreamRecognitionConfig | Конфигурация распознания. |
audio | bytes | Аудиофрагменты для распознания. При распознавании речи в потоковом режиме Audiogram принимает аудио по кускам (чанками). Рекомендуется делать чанки длительностью от 250 до 500 миллисекунд. |
RecognitionConfig
Конфигурация распознавания при вызове метода FileRecognize.
Поле | Тип | Описание |
---|---|---|
encoding | enum AudioEncoding | Формат аудиоданных (кодировка). |
sample_rate_hertz | uint32 | Частота дискретизации аудиоданных в герцах. |
language_code | string | Язык, используемый в аудиофайле. |
audio_channel_count | uint32 | Количество каналов во входных аудиоданных. |
split_by_channel | bool | Этот флаг работает только для распознавания в файловом режиме. При его включении каждый канал будет распознаваться отдельно. Может применяться, например, для аудио из колл-центров, где в одном канале голос клиента, а в другом - оператора. |
model | string | Модель распознавания. |
enable_word_time_offsets | bool | Флаг, включающий вывод временных меток слов (которые возвращаются в поле word структуры WordInfo). |
va_config | VoiceActivityConfig | Конфигурация Voice Activity. |
va_response_mode | VoiceActivityMarkEventsMode | Режим отправки разметки клиенту. По умолчанию – VA_DISABLE. |
genderage_config | GenderAgeEmotionConfig | Конфигурация модели по определению пола, возраста и эмоционального настроя говорящего. |
antispoofing_config | AntiSpoofingConfig | Конфигурация антиспуфинга. |
context_dictionary | ContextDictionaryConfig | Конфигурация распознавания речи с участием словаря. |
punctuation_config | PunctuationConfig | Конфигурация модели проставления пунктуации. |
denormalization_config | DenormalizationConfig | Конфигурация модели денормализации чисел (перевод текстового представления числа в цифровую, например, "пять объектов > 5 объектов"). |
speaker_labeling_config | SpeakerLabelingConfig | Конфигурация диаризации (определение принадлежности распознаваемых фраз к определенным спикерам и разделение аудио на сегменты, относящиеся к определенным спикерам) |
VoiceActivityMarkEventsMode
Режим отправки разметки VoiceActivity клиенту.
Имя | Значение | Описание |
---|---|---|
VA_DISABLE | 0 | Отключает отправку отметок VoiceActivityMark. |
VA_ENABLE | 1 | Включает отправку отметок VoiceActivityMark синхронно вместе с транскрипцией. |
VA_ENABLE_ASYNC | 2 | Включает отправку отметок VoiceActivityMark асинхронно (как только будет получена разметка, не дожидаясь работы asr). Для файлового режима работает идентично ENABLE. |
StreamRecognitionConfig
Конфигурация распознавания при вызове метода Recognize.
Поле | Тип | Описание |
---|---|---|
config | RecognitionConfig | Конфигурация распознавания. |
single_utterance | bool | Флаг для включения режима распознавания одной фразы. В этом режиме (при выставленном значении «true») распознавание завершается сервисом сразу после распознавания первой фразы и соединение разрывается. |
interim_results | bool | Конфигурация для промежуточных результатов: |
AudioEncoding
Поддерживаемые форматы аудиоданных.
Имя | Значение | Описание |
---|---|---|
ENCODING_UNSPECIFIED | 0 | На текущий момент не поддерживается. |
LINEAR_PCM | 1 | PCM без заголовков с целыми знаковыми 16-битными сэмплами в линейном распределении (PCM 16bit). |
FLAC | 2 | На текущий момент не поддерживается. |
MULAW | 3 | PCM без заголовков с 8-битными сэмплами в формате mu-law. |
ALAW | 20 | PCM без заголовков с 8-битными сэмплами в формате a-law. |
VoiceActivityConfig
Структура данных для хранения всех настроек VoiceActivity.
Поле | Тип | Описание |
---|---|---|
usage | VoiceActivityDetectionAlgorithmUsage | Выбор алгоритма VoiceActivity. При DO_NOT_PERFORM_VOICE_ACTIVITY разметка аудио выключена. Значение по умолчанию - USE_VAD |
vad_options | VADOptions | Опции алгоритма VAD. Используется при VoiceActivityDetectionAlgorithmUsage = USE_VAD |
dep_options | DEPOptions | Опции алгоритма DEP. Используется при VoiceActivityDetectionAlgorithmUsage = USE_DEP |
enhanced_vad_options | EnhancedVADOptions | Сообщение типа EnhancedVADOptions |
target_speech_vad_options | TargetSpeechVADOptions | Сообщение типа TargetSpeechVADOptions |
VoiceActivityDetectionAlgorithmUsage
Тип используемого алгоритма VoiceActivity.
Имя | Значение | Описание |
---|---|---|
USE_VAD | 0 | Включает использование VAD-алгоритма (Voice Activity Detection) для разбиения на фразы. Этот алгоритм определяет окончание фразы по паузам в речи и тишине. |
DO_NOT_PERFORM_VOICE_ACTIVITY | 1 | Отключает разбиение на фразы по Voice Activity. То есть весь распознанный текст будет получен в виде одной фразы. |
USE_DEP | 2 | Включает использование DEP-алгоритма для разбиения на фразы. Этот алгоритм реализует более сложную логику определения окончания фразы по законченности мысли. Подходит для создания голосовых ботов. |
USE_ENHANCED_VAD | 3 | Включает улучшенную и более современную версию алгоритма VAD, который разбивает аудиопоток на фразы. Универсально подходит для всех типов задач. |
USE_TARGET_SPEECH_VAD | 4 | Включает использование алгоритма Target Speech VAD. Он основан на алгоритме Enhanced VAD, но отличается тем, что научен работать в шумной среде, где выделяет речь только основного спикера. Может не услышать тихую или неразборчивую речь. |
VADOptions
Настройки работы алгоритма VAD.
Поле | Тип | Описание |
---|---|---|
threshold | float | Порог срабатывания VAD. Если вероятность речи выше порога, значит обработанный чанк содержит речь. Возможные значения: (0, 1.0). Значение по умолчанию для распознавания в файловом режиме - 0.1. Значение по умолчанию для распознавания в потоковом режиме - 0.9 |
speech_pad_ms | int32 | Отступ, добавляемый к границам найденных фрагментов (если speech_pad_ms < 0, отступ будет "внутрь" фрагмента). Опция применима только для распознавания речи в файловом режиме (для FileRecognize запросов). Единицы измерения - миллисекунды. Значение по умолчанию - 300 |
min_silence_ms | uint32 | Если между двумя фрагментами речи встречается пауза короче min_silence_ms, то такая пауза не учитывается и фрагменты объединяются в один. Единицы измерения - миллисекунды. Возможные значения: min_silence_ms >= 0. Значение по умолчанию - 1000 мс |
min_speech_ms | uint32 | Минимальная продолжительность речи. Фрагменты короче min_speech_ms не учитываются. Опция применима только для распознавания речи в файловом режиме (для FileRecognize запросов). Единицы измерения - миллисекунды. Возможные значения: min_speech_ms >= 0. Значение по умолчанию - 250 |
mode | VoiceActivityDetectionMode | Выбор типа разметки VAD-ом аудиофайла для запроса в файловом режиме. |
VoiceActivityDetectionMode
Выбор типа разметки аудио с помощью VAD.
Имя | Значение | Описание |
---|---|---|
VAD_MODE_DEFAULT | 0 | Значение по умолчанию для распознавания в файловом режиме - SPLIT_BY_PAUSES, для распознавания в потоковом режиме - ONLY_SPEECH. |
SPLIT_BY_PAUSES | 1 | Аудио разделяется по паузам (ничего не вырезается). |
ONLY_SPEECH | 2 | Вырезаются только сегменты с речью. |
DEPOptions
Настройки работы алгоритма DEP.
Поле | Тип | Описание |
---|---|---|
smoothed_window_threshold | float | Порог срабатывания алгоритма DEP. На заданном окне сглаживания считается среднее значение верояности завершения фразы. Если это значение больше порога то алгоритм срабатывает. Возможные значения: (0, 1.0). Значение по умолчанию - 0.754 |
smoothed_window_ms | int32 | Окно, на котором происходит сглаживание при принятии решения о конце фразы. Единицы измерения - миллисекунды. Возможные значения: smoothed_window_ms >= 10. Значение по умолчанию - 970 мс. Значение должно быть кратно 10 мс |
EnhancedVADOptions
Поле | Тип | Описание |
---|---|---|
beginning_window_ms | int32 | Размер окна (в миллисекундах), для сглаживания вероятности наличия речи в каждый момент времени. Для каждого момента времени вероятность наличия речи считается как средняя вероятность за предыдущее окно размером beginning_window_ms. Размер окна не должен превышать размер чанка и должен быть кратен 40мс. Используется для поиска границы начала речи. |
beginning_threshold | float | Порог срабатывания модели для поиска начала речи. Используется для поиска начала фразы. Если в текущий момент вероятность речи превысила порог beginning_threshold, то считается, что обнаружено начало речи. Значение порога - от 0 до 1. |
ending_window_ms | int32 | Размер окна (в миллисекундах), для сглаживания вероятности наличия речи в каждый момент времени. Для каждого момента времени вероятность наличия речи считается как средняя вероятность за "будущее" окно (в пределах чанка) размером ending_window_ms. Размер окна не должен превышать размер чанка и должен быть кратен 40мс. Используется для поиска границы конца речи. |
ending_threshold | float | Порог срабатывания модели для поиска конца речи. Используется для поиска конца фразы. Если ранее было обнаружено начало речи, то конец речи наступает в момент, когда вероятность наличия речи становится ниже порога ending_threshold. Значение порога - от 0 до 1. Должно быть меньше, чем beginning_threshold. |
TargetSpeechVADOptions
Поле | Тип | Описание |
---|---|---|
beginning_window_ms | int32 | Размер окна (в миллисекундах), для сглаживания вероятности наличия речи в каждый момент времени. Для каждого момента времени вероятность наличия речи считается как средняя вероятность за предыдущее окно размером beginning_window_ms. Размер окна не должен превышать размер чанка и должен быть кратен 40мс. Используется для поиска границы начала речи. |
beginning_threshold | float | Порог срабатывания модели для поиска начала речи. Используется для поиска начала фразы. Если в текущий момент вероятность речи превысила порог beginning_threshold, то считается, что обнаружено начало речи. Значение порога - от 0 до 1. |
ending_window_ms | int32 | Размер окна (в миллисекундах), для сглаживания вероятности наличия речи в каждый момент времени. Для каждого момента времени вероятность наличия речи считается как средняя вероятность за "будущее" окно (в пределах чанка) размером ending_window_ms. Размер окна не должен превышать размер чанка и должен быть кратен 40мс. Используется для поиска границы конца речи. |
ending_threshold | float | Порог срабатывания модели для поиска конца речи. Используется для поиска конца фразы. Если ранее было обнаружено начало речи, то конец речи наступает в момент, когда вероятность наличия речи становится ниже порога ending_threshold. Значение порога - от 0 до 1. Должно быть меньше, чем beginning_threshold. |
GenderAgeEmotionConfig
Настройки работы сервиса genderage.
Поле | Тип | Описание |
---|---|---|
enable | bool | Флаг, включающий модуль определения пола, возраста и эмоционального настроя говорящего. Примечание: пол ребенка в настоящий момент не определяется. |
AntiSpoofingConfig
Конфигурация антиспуфинга.
Поле | Тип | Описание |
---|---|---|
FAR | float | Допустимый процент принятия ботов за людей. |
FRR | float | Допустимый процент отклонения людей (принятия их за ботов). |
max_duration_for_analysis_ms | uint32 | Максимальная длительность анализа (в миллисекундах). Значение по умолчанию - 5000 миллисекунд. |
enable | bool | Флаг, включающий модуль определения является ли аудио, поступившее на распознавание, спуфинг-атакой. |
ContextDictionaryConfig
Конфигурация распознавания речи с участием словаря.
Поле | Тип | Описание |
---|---|---|
dictionary_name | string | Название словаря. |
weight | float | Вес указанного словаря в процессе распознавания. |
PunctuationConfig
Конфигурация модели капитализации и расстановки знаков препинания.
Поле | Тип | Описание |
---|---|---|
enable | bool | Флаг, включающий модуль капитализации и расстановки знаков препинания. |
DenormalizationConfig
Конфигурация модели денормализации чисел.
Поле | Тип | Описание |
---|---|---|
enable | bool | Флаг, включающий модуль денормализации чисел. |
SpeakerLabelingConfig
Конфигурация диаризации.
Поле | Тип | Описание |
---|---|---|
enable | bool | Флаг, включающий модуль диаризации. |
max_speakers | uint32 | Максимальное количество спикеров в аудио. Не является обязательным параметром, но улучшает качество диаризации. Этот параметр рекомендуется передать, если вы не знаете точное количество спикеров в аудио, но точно знаете, что их не больше определенного числа. |
num_speakers | uint32 | Точное количество спикеров в аудио. Не является обязательным параметром, но улучшает качество диаризации. |
ModelsInfo
Доступные модели распознавания речи.
Поле | Тип | Описание |
---|---|---|
models | repeated ModelInfo | Список доступных моделей. |
header | mts.ai.audiogram.stt_response.v1.ResponseHeader | Сообщение типа ResponseHeader. |
ModelInfo
Информация о модели распознавания речи.
Поле | Тип | Описание |
---|---|---|
name | string | Название модели распознавания речи. |
sample_rate_hertz | uint32 | Частота дискретизации аудиоданных, с которой модель работает без необходимости перекодировать аудио. |
language_code | string | Язык, речь на котором может распознавать модель, по умолчанию ru. |
dictionary_name | repeated string | Название словаря (одного или нескольких), который используется моделью распознавания. |
Асинхронное (отложенное) распознавание речи
Распознавание речи - это процесс преобразования аудио в текст. Асинхронное (его еще называют отложенным) распознавание речи используют, когда необходимо распознать речь из больших аудиофайлов (объемом до 1 ГБ). Так как объем файлов большой, то и времени на асинхронное распознавание может уходить больше (до 8 часов).
Процесс асинхронного распознавания выглядит следующим образом:
- Клиенту необходимо сохранить аудиофайл (можно сразу несколько, но объем каждого не должен превышать 1 ГБ) в s3-хранилище, которое используется Audiogram.
- Далее, через gRPC API, необходимо поставить Audiogram задачу на асинхронное распознавание. В задаче необходимо указать путь до аудиофайла и некоторые другие параметры. Их разберем подробнее в следующих секциях.
- По истечении некоторого времени, используя клиентское приложение, нужно отправить в Audiogram запрос на статус поставленной задачи.
- Если задача выполнена, нужно скачать результаты распознавания. Audiogram сохраняет результат распознавания в s3-подобное хранилище, используемое Audiogram и доступное через HTTP API сервиса audio-archive-back.
Для работы с Audiogram клиентам предлагается gRPC контракт (proto-файлы), который можно использовать, например, для создания собственного клиентского приложения. Для демонстрации, у менеджеров Audiogram можно попросить demo-клиенты, написанные на Python.
Важно! Есть 2 вида gRPC контракта:
- Один скрывает все настройки и предлагает использовать заранее созданные конфигурации (пресеты). Рекомендуется использовать этот вид контракта, так как он поможет пользователям избежать непреднамеренных ошибок конфигурации.
- Второй дает возможность самостоятельно настраивать все параметры распознавания.
Примечание: ранее созданные клиентские приложения, передающие полную конфигурацию запроса, еще будут поддерживаться некоторое время. Но впоследствии будет осуществлен полный переход на работу через пресеты.
Для создания собственного клиентского приложения можно использовать любой язык программирования, который есть в библиотеке для работы с gRPC. Подробную информацию об этом протоколе можно посмотреть на https://grpc.io/
В следующих секциях рассмотрим proto-файлы, которые вам понадобятся для создания приложения.
Через пресеты
Для создания клиентского приложения, которое будет отправлять в Audiogram запросы на асинхронное файловое распознавание речи, вам понядобятся следующие proto-файлы:
- longrunning_presets.proto (асинхронное распознавание через заранее созданные пресеты конфигурационных настроек)
- longrunning_task.proto (конфигурация ответа на запросы из longrunning_presets.proto)
- stt_presets.proto (синхронное распознавание через пресеты - этот файл описан выше, в разделе про синхронное распознавание)
- stt_response.proto (конфигурация ответа на запрос на распознавание речи - этот файл описан выше, в разделе про синхронное распознавание)
longrunning_presets.proto
Методы
LongRunningRecognize
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
LongRunningRecognize | LongRunningRecognizeRequest | mts.ai.audiogram.longrunning_task.v1.Task | Создает задачу на распознавание речи в файловом (асинхронном) режиме. |
GetTaskInfo
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
GetTaskInfo | mts.ai.audiogram.longrunning_task.v1.TaskRequest | mts.ai.audiogram.longrunning_task.v1.Task | Получает информацию по задаче на распознавание речи в асинхронном режиме. |
CancelTask
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
CancelTask | mts.ai.audiogram.longrunning_task.v1.TaskRequest | mts.ai.audiogram.longrunning_task.v1.Task | Отменяет задачу на распознавание речи в асинхронном режиме. Примечание: нельзя отменить задачу, которая находится в статусе IN_PROGRESS. |
Сообщения PROTOBUF
LongRunningRecognizeRequest
Поле | Тип | Описание |
---|---|---|
preset | mts.ai.audiogram.stt_presets.v1.Preset | Описание пресета, который необходимо использовать. |
s3_audio_path | repeated AudioPath | Это поле содержит один или несколько путей к аудиофайлам, которые надо распознать. |
AudioPath
Поле | Тип | Описание |
---|---|---|
bucket_name | string | Имя s3-контейнера (бакета), в котором хранится аудио, речь из которого необходимо распознать. |
object_name | string | Имя объекта (аудиофайла), речь из которого необходимо распознать. |
longrunning_task.proto
Сообщения PROTOBUF
ResponseHeader
Поле | Тип | Описание |
---|---|---|
timestamp | uint64 | Время отправки ответа на стороне Audiogram. Позволяет высчитать сетевую задержку. |
Task
Эта структура содержит информацию о поставленной задаче на асинхронное распознавание речи.
Поле | Тип | Описание |
---|---|---|
id | string | Идентификатор задачи. |
status | Status | Статус задачи. |
created_at | google.protobuf.Timestamp | Время создания задачи. |
audio_requests | repeated Audio | Информация об аудиофайлах, которые будут распознаны в рамках задачи. |
header | ResponseHeader | Сообщение типа ResponseHeader. |
Status
Статус задачи на асинхронное распознавание речи.
Имя | Значение | Описание |
---|---|---|
UNDEFINED | 0 | Статус не определен. |
NEW | 1 | Новая задача. |
IN_PROGRESS | 2 | Задача в процессе. |
COMPLETE | 3 | Задача выполнена. |
CANCELED | 4 | Задача отменена. |
ERROR | 5 | Во время выполнения задачи произошла ошибка. |
Audio
Информация об аудиофайлах, которые будут распознаны в рамках задачи.
Поле | Тип | Описание |
---|---|---|
bucket_name | string | Имя s3-контейнера (бакета), в котором хранится аудиофайл, речь из которого необходимо распознать. |
object_name | string | Имя объекта (аудиофайл), речь из которого необходимо распознать. |
status | string | Статус задачи на распознавание речи. |
response_id | string | Идентификатор, который приписывается распознаванию аудиофайла. По нему можно будет скачать результаты распознавания. |
TaskRequest
Поле | Тип | Описание |
---|---|---|
task_id | string | Идентификатор задачи на распознавание речи. Это то же самое, что и id в структуре Task. Только id возвращается в ответ на создание задачи. А затем, если необходимо посмотреть статус этой задачи или отменить ее, нужно вложить значение id в task_id и в запросах на статус или отмену указывать task_id. |
Через полную конфигурацию запроса
Для создания клиентского приложения, которое будет отправлять в Audiogram запросы на файловое асинхронное распознавание речи, вам понядобятся следующие proto-файлы:
- longrunning_stt.proto (асинхронное распознавание через полную конфигурацию настроек запроса)
- longrunning_task.proto (конфигурация ответа на запросы на асинхронное распознавание - этот файл описан выше, в разделе про асинхронное распознавание через пресеты)
- stt_v3.proto (синхронное распознавание через полную конфигурацию настроек запроса - этот файл описан выше, в разделе про синхронное распознавание)
- stt_response.proto (конфигурация ответа на запрос на распознавание речи - этот файл описан выше, в разделе про синхронное распознавание)
longrunning_stt.proto
Методы
LongRunningRecognize
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
LongRunningRecognize | LongRunningRecognizeRequest | mts.ai.audiogram.longrunning_task.v1.Task | Создает задачу на распознавание речи в файловом (асинхронном) режиме. |
GetTaskInfo
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
GetTaskInfo | mts.ai.audiogram.longrunning_task.v1.TaskRequest | mts.ai.audiogram.longrunning_task.v1.Task | Получает информацию по задаче на распознавание речи в асинхронном режиме. |
CancelTask
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
CancelTask | mts.ai.audiogram.longrunning_task.v1.TaskRequest | mts.ai.audiogram.longrunning_task.v1.Task | Отменяет задачу на распознавание речи в асинхронном режиме. Примечание: нельзя отменить задачу, которая находится в статусе IN_PROGRESS. |
Сообщения PROTOBUF
LongRunningRecognizeRequest
Поле | Тип | Описание |
---|---|---|
config | mts.ai.audiogram.stt.v3.RecognitionConfig | Конфигурация запроса на распознавание речи. |
s3_audio_path | repeated AudioPath | Это поле содержит один или несколько путей к аудиофайлам, которые надо распознать. |
AudioPath
Поле | Тип | Описание |
---|---|---|
bucket_name | string | Имя s3-контейнера (бакета), в котором хранится аудио, речь из которого необходимо распознать. |
object_name | string | Имя объекта (аудиофайла), речь из которого необходимо распознать. |
Синтез речи
Синтез речи - это озвучивание текста по заданным параметрам. Например, вы отправляете в Audiogram текст и настройки (каким голосом его озвучить, с какой интонацией и другие), а в ответ получаете аудиодорожку с озвучкой.
Синтез речи бывает 2 видов:
-
потоковый: В этом случае текст отправляется в Audiogram и озвучивается частями по мере поступления. Потоковый синтез подходит, например, для создания ответных реплик голосовых помощников, так как позволяет достичь эффекта живого общения без неестественных пауз.
-
файловый: При файловом синтезе весь текст, который необходимо озвучить, поступает в Audiogram целиком. В ответ возвращается аудиофайл с озвучкой. Этот способ может использоваться, например, для озвучивания книг.
Для работы с Audiogram клиентам предлагается gRPC контракт (proto-файлы), который можно использовать, например, для создания собственного клиентского приложения. Для демонстрации, у менеджеров Audiogram можно попросить demo-клиенты, написанные на Python.
Важно! Есть 2 вида gRPC контракта:
- Один скрывает все настройки и предлагает использовать заранее созданные конфигурации (пресеты). Рекомендуется использовать этот вид контракта, так как он поможет пользователям избежать непреднамеренных ошибок конфигурации.
- Второй дает возможность самостоятельно настраивать все параметры распознавания.
Примечание: ранее созданные клиентские приложения, передающие полную конфигурацию запроса, еще будут поддерживаться некоторое время. Но впоследствии будет осуществлен полный переход на работу через пресеты.
Для создания собственного клиентского приложения можно использовать любой язык программирования, который есть в библиотеке для работы с gRPC. Подробную информацию об этом протоколе можно посмотреть на https://grpc.io/
В следующих секциях рассмотрим proto-файлы, которые вам понадобятся для создания приложения. Примечание: максимальная длина сообщения, принимаемого от клиентов по gRPC (в байтах): 62914560
Через пресеты
Для создания клиентского приложения, которое будет отправлять в Audiogram запросы на синтез речи, вам понядобятся следующие proto-файлы:
- tts_presets.proto (потоковый или файловый синтез речи через заранее созданные пресеты конфигурационных настроек)
tts_presets.proto
Методы
StreamingSynthesize
Потоковый синтез речи.
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
StreamingSynthesize | SynthesizeSpeechRequest | stream StreamingSynthesizeSpeechResponse | Метод потокового синтеза речи. Разбивает текст на короткие фразы, и возвращает результат по мере их синтеза. |
Synthesize
Синхронный файловый синтез речи.
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
Synthesize | SynthesizeSpeechRequest | SynthesizeSpeechResponse | Метод синхронного файлового синтеза речи. Возвращает целый аудиофайл в формате, заданном в encoding с заголовками выбранного контейнера, пригодный для сохранения на диск. |
Сообщения PROTOBUF
Preset
Эта структура содержит информацию о пресете настроек, который необходимо использовать для синтеза речи.
Поле | Тип | Описание |
---|---|---|
preset_name | string | Название пресета. |
preset_version | string | Версия пресета. |
Название и версию пресета, который вам надо использовать, можно получить у менеджеров Audiogram.
SynthesizeSpeechRequest
Настройки синтеза для синтеза речи.
Поле | Тип | Описание |
---|---|---|
text | string | Текст для синтеза без SSML разметки (необходимо задавать только одно из полей – text или ssml). Если в поле text отправить на озвучку текст с SSML-тегами, Audiogram озвучит не только текст, но и теги. |
ssml | string | Текст для синтеза в формате SSML (необходимо задавать только одно из полей – text или ssml). Если в поле ssml отправить на озвучку текст без SSML-разметки, вернется ошибка синтеза. |
preset | Preset | Сообщение типа Preset (описано выше). |
ResponseHeader
Поле | Тип | Описание |
---|---|---|
timestamp | uint64 | Время отправки ответа на стороне Audiogram. Позволяет высчитать сетевую задержку. |
StreamingSynthesizeSpeechResponse
Результат работы потокового синтеза речи.
Поле | Тип | Описание |
---|---|---|
audio | bytes | Байты аудиоданных без заголовка, закодированные, как указано в encoding и заданной в sample_rate_hertz частотой дискретизации. Результат синтеза может прийти в нескольких ответах, по мере их синтезирования. |
header | ResponseHeader | Сообщение типа ResponseHeader. |
SynthesizeSpeechResponse
Результат работы файлового синтеза речи.
Поле | Тип | Описание |
---|---|---|
audio | bytes | В данном поле передаётся целый синтезированный аудиофайл с заголовками в формате, заданном в encoding и заданной в sample_rate_hertz частотой дискретизации. |
header | ResponseHeader | Сообщение типа ResponseHeader. |
Через полную конфигурацию запроса
Для создания клиентского приложения, которое будет отправлять в Audiogram запросы на синтез речи, вам понядобятся следующие proto-файлы:
- tts.proto (потоковый или файловый синтез речи через полную конфигурацию настроек запроса)
tts.proto
Методы
StreamingSynthesize
Потоковый синтез речи.
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
StreamingSynthesize | SynthesizeSpeechRequest | stream StreamingSynthesizeSpeechResponse | Метод потокового синтеза речи. Разбивает текст на короткие фразы, и возвращает результат по мере их синтеза. |
Synthesize
Синхронный файловый синтез речи.
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
Synthesize | SynthesizeSpeechRequest | SynthesizeSpeechResponse | Метод синхронного файлового синтеза речи. Возвращает целый аудиофайл в формате, заданном в encoding с заголовками выбранного контейнера, пригодный для сохранения на диск. |
GetModelsInfo
Запрос моделей для синтеза речи.
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
GetModelsInfo | google.protobuf.Empty | ModelsInfo | Метод запроса списка моделей для синтеза речи. Ничего не принимает в качестве аргументов, возвращает список доступных моделей. |
Сообщения PROTOBUF
AudioEncoding
Поддерживаемые форматы аудиоданных.
Имя | Значение | Описание |
---|---|---|
ENCODING_UNSPECIFIED | 0 | На текущий момент не поддерживается. |
LINEAR_PCM | 1 | 1. Если данное поле выбрано при использовании метода Synthesize, то в поле SynthesizeSpeechResponse.audio вернётся WAV linear PCM аудиофайл с заголовком, содержащий целые знаковые 16-битные сэмплы в линейном распределении (PCM 16bit) и заданной частотой дискретизации в соответствии с полем sample_rate_hertz. 2. При использовании метода StreamingSynthesize в поле StreamingSynthesizeSpeechResponse.audio по мере синтеза отправляются чанки linear PCM без заголовка WAV с целыми знаковыми 16-битными сэмплами в линейном распределении (PCM 16bit). |
FLAC | 2 | На текущий момент не поддерживается. |
MULAW | 3 | 1. Если данное поле выбрано при использовании метода Synthesize, то в поле SynthesizeSpeechResponse.audio вернётся WAV PCM аудиофайл с заголовком, содержащий 8-битные сэмплы в формате mu-law и заданной частотой дискретизации в соответствии с полем sample_rate_hertz. 2. При использовании метода StreamingSynthesize в поле StreamingSynthesizeSpeechResponse.audio по мере синтеза отправляются чанки PCM без заголовка WAV с 8-битными сэмплами в формате mu-law. |
ALAW | 20 | 1. Если данное поле выбрано при использовании метода Synthesize, то в поле SynthesizeSpeechResponse.audio вернётся WAV PCM аудиофайл с заголовком, содержащий 8-битные сэмплы в формате a-law и заданной частотой дискретизации в соответствии с полем sample_rate_hertz. 2. При использовании метода StreamingSynthesize в поле StreamingSynthesizeSpeechResponse.audio по мере синтеза отправляются чанки PCM без заголовка WAV с 8-битными сэмплами в формате a-law. |
VoiceStyle
Эмоциональная окраска голоса.
Имя | Значение | Описание |
---|---|---|
VOICE_STYLE_NEUTRAL | 0 | Спокойное состояние. |
VOICE_STYLE_HAPPY | 1 | Радость. |
VOICE_STYLE_ANGRY | 2 | Злость. |
VOICE_STYLE_SAD | 3 | Грусть. |
VOICE_STYLE_SURPRISED | 4 | Удивление. |
SynthesizeOptions
Опции синтеза.
Поле | Тип | Описание |
---|---|---|
model_type | string | Тип модели. Доступные варианты: 1) high_quality - относится к поколению моделей, которые отличаются улучшенными характеристиками синтеза речи. Используется для озвучки текста в потоковом и файловом режимах. |
model_sample_rate_hertz | uint32 | Частота дискретизации модели (в герцах). Если поле не указано, то будет подобрана наиболее близкая модель к указанной частоте дискретизации аудио. |
voice_style | VoiceStyle | Стиль речи. Значение по умолчанию - VOICE_STYLE_NEUTRAL |
postprocessing_mode | PostprocessingMode | Постобработка аудио. |
custom_options | map<string, CustomSynthesizeOptionValue> | Дополнительный набор опций по настройке синтеза. В custom_options выносятся экспериментальные настройки, которые еще не прошли полную проверку. На текущий момент список дополнительных настроек пустой, так как этот функционал проходит тестирование. |
CustomSynthesizeOptionValue
Индивидуальные настройки синтеза.
Поле | Тип | Описание |
---|---|---|
int32_value | int32 | Значение типа int32. |
int64_value | int64 | Значение типа int64. |
number_value | double | Значение типа double. |
string_value | string | Значение типа string. |
bool_value | bool | Значение типа bool. |
PostprocessingMode
Постобработка аудио (удаление фоновых шумов, выравнивание громкости, эквализация и другие улучшения).
Имя | Значение | Описание |
---|---|---|
POST_PROCESSING_DISABLE | 0 | Постобработка выключена. |
POST_PROCESSING_PHONE_CHANNEL | 1 | Этот параметр больше не поддерживается. |
POST_PROCESSING_PRETTIFY | 2 | Не рекомендуется использовать этот параметр. |
SynthesizeSpeechRequest
Настройки синтеза для файлового метода синтеза речи.
Поле | Тип | Описание |
---|---|---|
text | string | Текст для синтеза без SSML разметки (необходимо задавать только одно из полей – text или ssml). Если в поле text отправить на озвучку текст с SSML-тегами, Audiogram озвучит не только текст, но и теги. |
ssml | string | Текст для синтеза в формате SSML (необходимо задавать только одно из полей – text или ssml). Если в поле ssml отправить на озвучку текст без SSML-разметки, вернется ошибка синтеза. |
language_code | string | Язык, который используется для синтеза. В настоящее время поддерживается только русский язык. |
encoding | AudioEncoding | Формат аудио данных (кодировка). |
sample_rate_hertz | int32 | Частота дискретизации синтеза (в герцах). |
voice_name | string | Имя голоса. Список доступных моделей: женские голоса: мужские голоса: |
synthesize_options | SynthesizeOptions | Опции синтеза аудио. |
ResponseHeader
Поле | Тип | Описание |
---|---|---|
timestamp | uint64 | Время отправки ответа на стороне Audiogram. Позволяет высчитать сетевую задержку. |
StreamingSynthesizeSpeechResponse
Результат работы потокового синтеза речи.
Поле | Тип | Описание |
---|---|---|
audio | bytes | Байты аудиоданных без заголовка, закодированные, как указано в encoding и заданной в sample_rate_hertz частотой дискретизации. Результат синтеза может прийти в нескольких ответах, по мере их синтезирования. |
header | ResponseHeader | Сообщение типа ResponseHeader. |
SynthesizeSpeechResponse
Результат работы файлового синтеза речи.
Поле | Тип | Описание |
---|---|---|
audio | bytes | В данном поле передаётся целый синтезированный аудиофайл с заголовками в формате, заданном в encoding и заданной в sample_rate_hertz частотой дискретизации. |
header | ResponseHeader | Сообщение типа ResponseHeader. |
ModelsInfo
Доступные голоса для синтеза речи.
Поле | Тип | Описание |
---|---|---|
models | repeated ModelInfo | Список доступных голосов для синтеза речи. |
header | ResponseHeader | Сообщение типа ResponseHeader. |
ModelInfo
Информация о модели синтеза речи.
Поле | Тип | Описание |
---|---|---|
name | string | Название модели синтеза речи. |
sample_rate_hertz | uint32 | Частота дискретизации аудио данных в герцах. |
language_code | string | Язык, которым озвучивается текст, отправленный на синтез. По умолчанию ru. |
type | string | Тип модели. Возможные значения: |
Использование SSML-разметки
SSML (Speech Synthesis Markup Language) – это язык разметки с фиксированным набором тегов и атрибутов, основанный на XML (но без тега xml в начале) и применяемый для синтеза речи. Его можно использовать, чтобы настроить скорость и звучание голоса.
Настройка проводится с помощью SSML-тегов, которые нужно указать в тексте, отправляемом на синтез.
Примечание: текст без тегов необходимо писать в поле SynthesizeSpeechRequest.text
На данный момент в Audiogram поддерживаются следующие SSML-теги:
Тег | Описание | Параметры тега |
---|---|---|
speak | Обязательный тег для работы с SSML. В него должен быть обернут весь текст, отправляемый на синтез. При помощи дополнительных параметров может управлять скоростью и высотой тона (питчем) всего текста. Должен сопровождаться закрывающим тегом \ |
(значения меньше единицы – медленнее, больше – быстрее). Данный параметр является опциональным. Если параметр не указан, его значение по умолчанию = 1.0
Отрицательные значения – низкий тон, положительные – высокий. Данный параметр является опциональным. Если параметр не указан, его значение по умолчанию = 0.0 |
prosody | Этот тег позволяет управлять скоростью и высотой тона произвольного количества предложений и слов. Например, его можно использовать, чтобы изменить скорость и высоту тона прямой речи, тем самым выделяя ее на фоне речи рассказчика. Тег \ Конструкцию \ |
(значения меньше единицы – медленнее, больше – быстрее). Данный параметр является опциональным. Если параметр не указан, его значение по умолчанию = 1.0
Отрицательные значения – низкий тон, положительные – высокий. Данный параметр является опциональным. Если параметр не указан, его значение по умолчанию = 0.0 |
break | Добавляет паузу произвольной длины в секундах в любое место. Этот тег является самозакрывающимся \ |
Если вы указываете время паузы, необходимо обязательно вставить единицу измерения s (секунды) после количества секунд - \ |
voice | Указывает каким голосом и эмоцией необходимо озвучить текст. Доступен для синтеза только с помощью модели high_quality. | Мужские голоса: - gandzhaev - gavrilov Женские голоса: - borisova - kishchik
- neutral (спокойное состояние) - sad (грусть) - happy (радость) - angry (злость) - surprised (удивление) |
Параметры тегов указываются внутри треугольных скобок в виде
<название_тега название_параметра1="величина_параметра1" название_параметра2="величина_параметра2" закрытие тега>
Важно! Обратите внимание на кавычки, в которых указываются величины параметров. Необходимо использовать " (ASCII code 34).
Как поставить ударение в слове
Некоторые слова могут читаться по-разному. Например, «жАркое» или «жаркОе». При помощи SSML-разметки можно указать где надо делать ударение. Для этого после ударной гласной необходимо вставить {'} :
- «жа{'}ркое», чтобы получилось «жАркое»; и
- «жарко{'}е», чтобы получилось «жаркОе».
Важно! В фигурных скобках необходимо использовать одинарную кавычку ' (ASCII code 39).
Дополнительно
-
Если отправить какой-то текст без разметки на озвучку в поле text, а потом этот же текст обернуть только в тег
и отправить на озвучку в поле ssml, то текст будет озвучен одинаково. -
Если текст с SSML-тегами отправить на озвучку в поле text, то Audiogram озвучит не только текст, но и теги. Например, если отправить "
Привет мир ", то озвучка будет - "спик привет мир спик". -
Знак ударения {'} синтез не считает ssml-тегом и он будет обработан как ударение и в text, и в ssml.
-
Синтез текста без SSML-разметки и синтез этого же текста с разметкой не будут различаться по нагрузке на систему.
Примеры использования SSML-тегов
Пример 1 (весь текст с SSML-разметкой, отправляемый на синтез, должен быть обернут в тег speak):
<speak>Глава 1.
Жаркое лето изменило все планы. Было решено сэкономить на поездке к морю и провести весь отпуск на даче.
«Я уверен вам понравится, поставим бассейн, будем шашлыки жарить» - резюмировал Георгий.
Супруга не разделяла радость: «Я чувствую комары нас съедят».</speak>
Пример 2 (добавляем паузу после «Глава 1.»):
<speak>Глава 1. <break time="1.5s"/>
Жаркое лето изменило все планы. Было решено сэкономить на поездке к морю и провести весь отпуск на даче.
«Я уверен вам понравится, поставим бассейн, будем шашлыки жарить» - резюмировал Георгий.
Супруга не разделяла радость: «Я чувствую комары нас съедят».</speak>
Пример 3 (ставим ударение, чтобы Audiogram правильно произнес «жАркое», а не «жаркОе»):
<speak>Глава 1. <break time="1.5s"/>
Жа{'}ркое лето изменило все планы. Было решено сэкономить на поездке к морю и провести весь отпуск на даче.
«Я уверен вам понравится, поставим бассейн, будем шашлыки жарить» - резюмировал Георгий.
Супруга не разделяла радость: «Я чувствую комары нас съедят».</speak>
Пример 4 (укажем высоту и скорость произнесения всего текста):
<speak speed="0.8" pitch="-0.4">Глава 1. <break time="1.5s"/>
Жа{'}ркое лето изменило все планы. Было решено сэкономить на поездке к морю и провести весь отпуск на даче.
«Я уверен вам понравится, поставим бассейн, будем шашлыки жарить» - резюмировал Георгий.
Супруга не разделяла радость: «Я чувствую комары нас съедят».</speak>
Пример 5 (изменим высоту и скорость произнесения прямой мужской речи):
<speak speed="0.8" pitch="-0.4">Глава 1. <break time="1.5s"/>
Жа{'}ркое лето изменило все планы. Было решено сэкономить на поездке к морю и провести весь отпуск на даче.
<prosody speed="1.1" pitch="-0.2">«Я уверен вам понравится, поставим бассейн, будем шашлыки жарить»</prosody> - резюмировал Георгий.
Супруга не разделяла радость: «Я чувствую комары нас съедят».</speak>
Пример 6 (если для синтеза речи используется модель high_quality, можно указать какими голосами и эмоциональной окраской озвучить прямую речь):
<speak speed="0.8" pitch="-0.4">Глава 1. <break time="1.5s"/>
Жа{'}ркое лето изменило все планы. Было решено сэкономить на поездке к морю и провести весь отпуск на даче.
<prosody speed="1.1" pitch="-0.2"><voice name="gandzhaev" style="happy">«Я уверен вам понравится, поставим бассейн, будем шашлыки жарить»</voice></prosody> - резюмировал Георгий.
Супруга не разделяла радость: <voice name="borisova" style="sad">«Я чувствую комары нас съедят».</voice></speak>
Метаданные gRPC-запросов
- Каждый запрос к Audiogram API должен содержать токен доступа. Передавайте токен следующим способом:
authorization: Bearer <access_token>
- В запросе можно передать уникальный идентификатор, который позволит детально проследить за историей выполнения запроса. Для этого используйте ключ trace-id:
external_trace_id: <id>
Список ML-моделей и голосов в Audiogram
Модель для распознавания речи (ASR) или голос для синтеза речи (TTS) следует указывать, используя псевдоним (alias). Это позволяет обновлять модели без необходимости проводить повторную интеграцию клиентов.
Внимание! Если в запросе указана частота дискретизации (sample rate) отличная от значений, поддерживаемых моделью, то:
- в случае распознавания речи (ASR) произойдет перекодирование частоты дискретизации на значение, поддерживаемое моделью (16000 Гц).
- в случае синтеза речи (TTS) будет использована модель с ближайшей частотой дискретизации в большую сторону.
ASR e2e
Alias – это имя модели, которое указывается в конфиге распознавания RecognitionConfig.model | Alias | Sample rate (Hz) | Описание |
---|---|---|---|
e2e-v1 | 16000 | Модель конформер онлайн. | |
e2e-v1 | 16000 | Модель конформер оффлайн. |
TTS
Alias – это имя голоса, которое указывается в конфиге распознавания SynthesizeSpeechRequest.voice_name | Alias | Sample rate (Hz) | Описание |
---|---|---|---|
женские голоса: | |||
borisova | 8000 | Голос Борисовой 8000 Гц | |
borisova | 22050 | Голос Борисовой 22050 Гц | |
borisova | 44100 | Голос Борисовой 44100 Гц | |
kishchik | 8000 | Голос Кищик 8000 Гц | |
kishchik | 22050 | Голос Кищик 22050 Гц | |
kishchik | 44100 | Голос Кищик 44100 Гц | |
мужские голоса: | |||
gandzhaev | 8000 | Голос Ганджаева 8000 Гц | |
gandzhaev | 22050 | Голос Ганджаева 22050 Гц | |
gandzhaev | 44100 | Голос Ганджаева 44100 Гц | |
gavrilov | 8000 | Голос Гаврилова 8000 Гц | |
gavrilov | 22050 | Голос Гаврилова 22050 Гц | |
gavrilov | 44100 | Голос Гаврилова 44100 Гц |
Сообщения об ошибках
Код | Описание |
---|---|
PERMISSION_DENIED | Данная ошибка может вернуться в следующих ситуациях: |
INTERNAL | Не работают внутренние сервисы |
UNKNOWN | Ошибки, которые пока не обрабатываются на стороне сервиса |
Примеры кода клиентских приложений Audiogram
Для работы с Audiogram необходимо создать клиентское приложение. Примеры кода клиентских приложений собраны в этом разделе. Их можно использовать в качестве образцов при написании сервисов, использующих Audiogram.
Архив содержит следующие примеры кода:
Распознавание речи:
- клиент, выполняющий распознавание речи в файловом режиме
- клиент, выполняющий распознавание речи в потоковом режиме
- клиент, получающий список доступных моделей для распознавания речи
Синтез речи:
- клиент, выполняющий синтез речи в файловом режиме
- клиент, выполняющий синтез речи в потоковом режиме
- клиент, получающий список доступных моделей для синтеза речи
Работа с аудиоархивом:
- клиент, получающий список запросов на распознавание речи
- клиент, позволяющий скачать аудио, полученное на распознавание речи
- клиент, позволяющий скачать разметку голосовой активности
- клиент, позволяющий скачать результат распознавания речи
Внимание! Примеры из архива, перечисленные выше, создавались для stt_v3.proto и tts_v2.proto
В качестве образца кода клиентских приложений для предыдущей версии stt.proto файла используйте следующие примеры:
История релизов Audiogram
Текущая версия - Audiogram 3.31.0
Обновление Audiogram 3.31.0 содержит следующие улучшения и исправления:
Новый функционал
- В компоненте asr-e2e-agent:
- добавлена возможность проверять состояние соединений с помощью механизма KEEPALIVE.
- добавлена возможность принимать и устанавливать защищенное соединение.
Улучшения
- Добавлена метрика real_time_lag, которая показывает есть ли задержки во время потокового распознавания речи. Это позволит вовремя обнаружить возможные проблемы с производительностью.
- Часть логов информативного характера (например, финальные расшифровки речи) вынесены с уровня DEBUG на уровень INFO, что позволит извлекать логи в тех случаях, когда нет параметра request_id.
- В целях устранения уязвимостей в asr-e2e-agent выровнены версии базового образа и зависимых Python-библиотек.
Исправления
- Исправлена ошибка потокового распознавания речи, которая появлялась при включении режима отправки разметки VAD va_response_mode=VA_ENABLE.
Предыдущие версии
Audiogram 3.30.0
Audiogram 3.30.0 содержит следующее улучшение:
- Внесены различные изменения, повышающие стабильность работы компонентов, отвечающих за асинхронное (отложенное) распознавание.
Audiogram 3.29.0
Audiogram 3.29.0 содержит следующие улучшения и исправления:
Новый функционал
- Добавлена возможность настраивать через переменную окружения компонента audio-archive-back к какому бакету хранилища extremum будет обращаться Audiogram. Это упрощает настройку окружений, когда у вас несколько стендов с Audiogram.
- На всех микросервисах, вошедших в это обновление Audiogram, добавлена возможность проверять состояние соединений с помощью механизма KEEPALIVE.
Улучшения
- В асинхронное (отложенное) распознавание речи добавлена более оптимальная модель VAD (Voice Activity Detection), что позволит увеличить пропускную способность и распознавать файлы больших размеров.
- Повышена стабильность функционирования ML-модели, отвечающей за диаризацию (разделение) спикеров, на GPU.
- В целях оптимизации часть логов с уровня INFO была перенесена на уровень DEBUG.
Исправления
- Исправлена ошибка, которая возникала из-за того, что Triton-server и ML-модель одновременно использовали порт 8003.
- Исправлена проблема с утечкой памяти в интерфейсе offline_vad, который используется для диаризации спикеров, посредством перевода работы offline_vad с CPU на GPU.
Audiogram 3.28.0
Audiogram 3.28.0 содержит следующее улучшение:
- Осуществлен переход на групповую (батчевую) обработку запросов между компонентами для синтеза речи tts-agent и tts-server. Это позволит минимизировать сетевые задержки и затраты на передачу служебной информации. Алгоритм группировки запросов работает без таймаута, что делает его более приемлемым для непрерывной большой нагрузки. Размер группы (по умолчанию 5 запросов) настраивается на стороне tts-agent через переменную TTS_AGENT_TTS_BATCH_SIZE.
Audiogram 3.27.0
Audiogram 3.27.0 содержит следующие улучшения и изменения:
Новый функционал
- Внедрена поддержка отложенного распознавания речи. Этот функционал позволяет распознавать файлы размером до 1 ГБ за период до 8 часов.
Улучшения
- Обновлена модель синтеза речи high_quality. В ней выровнен интонационный рисунок на "склейках" (местах соединения фрагментов озвучивания) и улучшено качество синтеза в целом. Также модель теперь потребляет столько же ресурсов, сколько и менее ресурсоемкая модель light, при той же пропускной способности и том же уровне latency.
Изменения
- Начиная с этого обновления, вступают в силу следующие изменения:
- Audiogram API поддерживает транскодер только версии 2.0 и выше.
- tts-agent больше не поддерживает модель синтеза light. Для вызова модели light необходимо использовать tts-agent версии 7.1.z.
- Протокол взаимодействия с сервисами transcriber, acronym и numbers изменен с HTTP на gRPC.
Audiogram 3.26.0
Audiogram 3.26.0 содержит следующее улучшение:
- Реализована поддержка шифрования данных, сохраняемых в аудиоархив, и возможность их дешифровки на стороне компонента archive-back. Это позволило повысить уровень безопасности для коммуникации между архивом и другими сервисами Audiogram, а также надежнее защитить данные в архиве от потенциальных угроз.
Audiogram 3.25.0
Audiogram 3.25.0 содержит следующие улучшения и исправления:
- Скорость модели антиспуфинга повышена в ~2 раза с улучшением качества работы.
- Модели пунктуатора и денормализатора чисел оптимизированы и объединены в один Triton-сервер без потери обратной совместимости, что позволило повысить уровень RPS и снизить latency.
- Улучшено качество работы модели денормализатора чисел (особое внимание было уделено обработке номеров карт, лицевых счетов, серии/номера паспорта, а также почтовых индексов):
- Исправлена ошибка, из-за которой денормализатор не обрабатывал числа, написанные с большой буквы.
- Исправлена ошибка, из-за которой в распознавании длинных последовательностей цифр, продиктованных по одной цифре, могли появиться лишние элементы.
- Исправлена ошибка, из-за которой денормализатор не обрабатывал числительные, в названии которых присутствовала буква "ё".
Audiogram 3.24.0
Audiogram 3.24.0 содержит следующие улучшения и исправления:
- Улучшена ML-модель "Денормализатор чисел":
- Triton-сервер обновлен до версии 24.05.
- Добавлены 2 вида config-файлов - для CPU- и GPU-версий.
- При выборе работы модели на GPU теперь все вычисления максимально переносятся на видеокарту. Это уменьшает потребление CPU-ядер и несколько ускоряет работу на видеокарте.
- Улучшена ML-модель "Обработчик сокращений":
- Исправлен ряд ошибок, которые приводили к некорректной озвучке некоторых сокращений.
- Расширен датасет с "руб." и "коп." для более корректной озвучки этих сокращений.
- Исправлена ошибка записи результатов распознавания речи в случаях мгновенного закрытия канала после отправки данных со стороны клиента.
Audiogram 3.23.0
Audiogram 3.23.0 содержит следующие улучшения:
- Исправлена ошибка, из-за которой паузы между словами при синтезе речи были длиннее, чем указывалось в ssml-разметке.
- Исправлена ошибка, из-за которой первые запросы на синтез речи в "непрогретую" ML-модель завершались падением.
Audiogram 3.22.1
В обновлении Audiogram 3.22.1 оптимизирована логика передачи client_id (необходим для получения данных из s3) в Audiogram API для записи в хранилище s3.
Если при работе с Audiogram используется авторизация, client_id не нужно передавать в запросе - Audiogram api сделает это автоматически.
Если работа с Audiogram проходит без авторизации, client_id необходимо передавать в заголовке запроса в виде пары ключ-значение.
Audiogram 3.22.0
Audiogram 3.22.0 содержит следующие обновления и улучшения:
Новый функционал
- Добавлен сервис, который в распознанной речи осуществляет денормализацию чисел (преобразует текстовое представление числа в цифровое, например, "пять файлов > 5 файлов").
- Добавлен сервис, который в распознанной речи проводит капитализацию необходимых слов и расставляет знаки препинания (точка, запятая, вопросительный знак, дефис).
- Добавлен сервис, который осуществляет диаризацию речи во время распознавания (разделяет входящий аудиопоток на однородные сегменты в соответствии с их принадлежностью тому или иному говорящему).
Улучшения
- В ответе на запрос списка моделей распознавания речи теперь содержатся имена WFST графов, интегрированных в модели.
- Обновлены дашборды для Triton-серверов.
- Обновлён дашборд для сервиса api.
- Исправлены разного рода уязвимости (в частности, добавлены последние версии различных библиотек).
Audiogram 3.21.0
Audiogram 3.21.0 содержит следующие обновления, улучшения и исправления:
- В Audiogram API добавлена поддержка публичного stt_v3.proto и сохранена обратная совместимость с stt_v2.proto.
- Выполнен переход на stt_v3.proto во всех сервисах модулей ASR и MEDIA.
- Проведена подготовка по добавлению нового сервиса денормализации чисел (преобразует текстовое представление числа в цифровое, например, "пять файлов > 5 файлов").
- Проведена подготовка по добавлению нового сервиса, который в распознанной речи проводит капитализацию необходимых слов и расставляет знаки препинания (точка, запятая, вопросительный знак, дефис).
- Добавлена возможность оперативно улучшать результаты распознавания речи с помощью технологии WFST графов. Заказчик предоставляет список терминов, распознавание которых необходимо улучшить. На основе списка создается WFST граф и интегрируется в модель распознавания речи. После этого модель будет распознавать слова из списка более точно.
- Исправлены разного рода уязвимости (в частности, добавлены последние версии различных библиотек).
- Улучшено качество распознавания англицизмов с помощью модели e2e-enru (данная модель распознает англицизмы английскими словами).
Audiogram 3.20.0
Audiogram 3.20.0 содержит следующие улучшения:
Исправление ошибок
- Исправлена ошибка, которая иногда возникала при подготовке текста на озвучку и приводила к появлению искажений в конечном звучании.
Audiogram 3.19.0
Audiogram 3.19.0 содержит следующие улучшения и исправления:
Улучшения
- Информация о client_id (для api) перенесена с уровня debug-логов на уровень info с целью реализации возможности собирать данные по запросам от разных клиентов.
Исправление ошибок
- Исправлена ошибка синтеза речи, из-за которой символ тире "-" в некоторых случаях озвучивался как "минус".
- Исправлена ошибка, из-за которой некорректно озвучивались структуры типа "0.01 руб.".
- Исправлена ошибка, из-за которой некорректно озвучивались фразы, оканчивающиеся на сокращение, сразу за которым следовал SSML-тег (например,
... 562.0 руб.</speak>
).
Audiogram 3.18.0
Audiogram 3.18.0 содержит следующие улучшения и исправления:
Улучшения
- Повышена скорость работы Triton-серверов с ML-моделями на CPU.
- Повышена скорость записи аудиоданных, поступивших на распознавание, и результатов расшифровки в архив (Extremum).
- Добавлена балансировка по весам для antispoofing-agent.
- Реализована поддержка масштабируемости и наблюдаемости сервиса antispoofing-agent, а также создан дашборд для Grafana.
Исправление ошибок
- Исправлена редкая ошибка, из-за которой случались искажения в распознавании речи при отправке чанков аудио нечетного размера.
- Исправлена ошибка, из-за которой при детекции речи через DEP в редких случаях могла дублироваться метка BEGIN, что приводило к прерыванию выполнения запроса.
Audiogram 3.17.0
Audiogram 3.17.0 содержит следующие улучшения, обновления и исправления:
Новый функционал
- Добавлена возможность передавать новый ключ session-id в метаданных запросов на распознавание речи. По этому ключу можно агрегировать из аудиоархива все запросы, относящиеся к одному диалогу.
Улучшения
- Обновлена модель high_quality: произведено ускорение тритон-сервера, улучшен интонационный рисунок синтеза.
Исправление ошибок
- Исправлена ошибка, которая приводила к погрешностям при сборе статистики по синтезу и распознаванию речи.
- Исправлена ошибка, из-за которой количество каналов в многоканальных аудио не изменялось на 1 при значении параметра split_by_channels = False, что приводило к ошибкам и сбоям в работе транскодера.
Audiogram 3.16.0
Audiogram 3.16.0 содержит следующие улучшения, обновления и исправления:
Новый функционал
- Добавлен новый сервис Антиспуфинг, позволяющий отличить реального человека от бота при входящем звонке.
Улучшения
- Произведен рефакторинг компонента asr-e2e-agent.
Исправление ошибок
- Исправлена ошибка, из-за которой для некоторых аудио, отправленных на распознавание в потоковом режиме с выключенным VAD, приходили пустые результаты распознавания.
Audiogram 3.15.0
Audiogram 3.15.0 содержит следующие улучшения и исправления:
Оптимизация
- Ускорена ML-нормализация чисел более, чем в 2 раза, за счёт изменения алгоритмов работы.
Исправление ошибок
- Исправлена ошибка, из-за которой иногда происходила некорректная озвучка дат и сумм в некоторых падежах.
Audiogram 3.14.0
Audiogram 3.14.0 содержит следующие улучшения:
Новый функционал
- Добавлена поддержка определения тональности аудио при распознавании речи. По тону высказывание может быть позитивным, нейтральным, грустным или сердитым.
Определение тональности работает по сегментам VAD (Voice Activity Detection). Если VAD выключен, определяется тональность всего аудио. Если VAD включен, то определяется тональность каждого сегмента, отмеченного VAD.
Оптимизация
-
Проведены работы по общей оптимизации Audiogram, направленные на повышение быстродействия сервиса и уменьшение потребления системных ресурсов:
- Библиотека log-kit была дополнительно переработана и обновлена в следующих сервисах:
- api
- asr-e2e-agent
- tts-agent
- vad-agent
- genderage-agent
- statistics-api
- statistics-ingester
- grpc-service-template
- Сервисы Audiogram, работающие по gRPC, переведены на формат пропагации трассировки ABNF.
- Оптимизирована упаковка чанков аудио в InferInput.
- Удалена метка grpc-code для метрики grpc_requests_processing_time_seconds.
Результаты оптимизации по сравнению с предыдущей версией Audiogram:
Распознавание речи (ASR):
- 100 одновременных запросов в потоковом режиме - Latency p95 сократился на 8%; Latency mean сократился на 11%
- 150 одновременных запросов в потоковом режиме - Latency p95 сократился на 17.4%; Latency mean сократился на 29.8%
- 100 одновременных запросов в файловом режиме - RTFx увеличился на 7%
- 150 одновременных запросов в файловом режиме - RTFx увеличился на 6.1%
Синтез речи (TTS) (проверялся только потоковый режим; замеры по файловому режиму отдельно не проводились, так как он основан на потоковом):
- 100 одновременных запросов на синтез в потоковом режиме моделью light - Latency p95 сократился на 4.5%; Latency mean сократился на 3%; RTFx увеличился на 7.5%
- 100 одновременных запросов на синтез в потоковом режиме моделью high_quality - Latency p95 сократился на 4.2%; Latency mean сократился на 6%; RTFx увеличился на 5.8%
-
Проведены доработки сервиса transcriber:
- Triton Inference Server обновлен до версии 23.07.
- С целью улучшения качества синтеза речи пополнены следующие словари:
- эфикация
- ёфикация
- однозначные ударения
- морфологические омонимы
- контекстуальные омонимы
- слова с дефисом
-
Проведены доработки и интеграция обновленного сервиса transcoder:
-
Изменен способ задания формата кодеков. Теперь приходящий в api запрос имеет следующий маппинг по полю encoding сообщения AudioEncoding:
AudioEncoding Значение поля format Значение поля codec ENCODING_UNSPECIFIED не поддерживается не поддерживается LINEAR_PCM s16le s16le FLAC не поддерживается не поддерживается MULAW s16le pcm_mulaw ALAW s16le pcm_alaw
-
Передача трассировочной информации теперь осуществляется через метаданные в формате ABNF.
-
Добавлена поддержка версионирования api и обратная совместимость между версиями сервиса transcoder.
-
Проведена прямая интеграция библиотек FFmpeg в transcoder, что позволило увеличить пропускную способность сервиса в 10-15 раз.
-
-
Повышена точность работы сервиса genderage за счет изменения значения CHUNK_ALIGNMENT_SIZE по умолчанию с 25600 до 32000 секунд.
Исправление ошибок
- Исправлена ошибка, из-за которой распознавание в файловом режиме проходило успешно, но в логах сервиса asr-e2e-agent иногда записывалась ложная ошибка о незакрытой последовательности контекста.
- Исправлена ошибка, из-за которой при запросе доступных ML-моделей в список попадали более не поддерживаемые модели.
- Исправлена ошибка, из-за которой клиентское приложение зависало при отправке в сервис genderage нечетного количества байт.
- Исправлена ошибка, из-за которой в запросах от api к transcoder иногда выставлялось неверное значение аудиоканалов.
Audiogram 3.10.0
Audiogram 3.10.0 содержит следующие улучшения:
Новый функционал
- Добавлена поддержка обработки сокращений и ML-нормализации чисел (с сохранением функционала нормализации чисел, работающей на правилах).
- Добавлена поддержка распознавания многоканального аудио (каждый канал распознаётся по отдельности).
Оптимизация
- Улучшена работа библиотеки log-kit, что позволит сервисам Audiogram тратить меньше времени и ресурсов на запись логов.
Исправление ошибок
- Исправлена ошибка в работе сервиса DEP, из-за которой в некоторых случаях, когда голос звучал в самом начале первого чанка, некорректно идентифицировалось начало речи.
- Исправлена ошибка в работе сервиса VAD, из-за которой иногда некорректно выставлялись метки начала и конца речи.
Audiogram 3.9.0
В обновлении Audiogram 3.9.0 вдвое увеличена скорость синтеза речи моделью high_quality.
Audiogram 3.8.0
Audiogram 3.8.0 содержит следующие улучшения:
Оптимизация
-
Переработана и оптимизирована трассировка для компонентов asr-e2e-agent и vad-agent, что позволило сократить задержку (latency) p99.
-
Переработано и оптимизировано логирование для компонента asr-e2e-agent, что позволило сократить задержку и нагрузку на систему.
-
Проведены исследования и увеличена длительность аудиофрагмента, отправляемого на расшифровку, с 0.8 до 2 секунд. Это позволило снизить нагрузку на систему и количество ошибок распознавания речи (WER - Word Error Rate).
-
Упрощено извлечение информации из логов за счет введения структурированного логирования для компонентов auth и audio-archive-back.
Исправление ошибок
-
Исправлена ошибка, из-за которой в логах сборки обфусцированных образов asr-e2e-agent, vad-agent и audio-archive-back появлялась строка о проблеме, но при этом сами образы были рабочими.
-
Исправлена ошибка, из-за которой метрики производительности компонента vad-agent не отображались на обзорной панели.
-
Исправлена ошибка, из-за которой в ключе tts-cache не учитывалось применение постобработки, вследствие чего один и тот же текст нельзя было озвучить с другим видом постобработки.
-
Исправлена ошибка, из-за которой наблюдалось снижение производительности синтеза речи при включенной авторизации.
-
Исправлена ошибка, из-за которой в ответе на запрос распознанных фраз из архива audio-archive-back возвращал только первую фразу.
Дополнительно
-
Версия Triton в VAD обновлена до 23.07 для более стабильной работы сервиса.
-
Для избежания проблем с уязвимостью обновлена версия утилиты grpc_health_probe до 0.7.0.
-
Обновлён образ audio-archive-back (Python > v3.11).
Audiogram 3.7.0
Audiogram 3.7.0 содержит следующие улучшения:
Новый функционал:
-
Добавлены gRPC-метрики, позволяющие отслеживать взаимодействие между компонентами asr-e2e-agent и genderage_agent (количество запросов, количество запросов в прогрессе, время выполнения запросов, количество ошибок и т.д.) с помощью Prometheus.
-
Реализована возможность работы сервиса genderage отдельно от встроенного VAD (Voice Activity Detection), что позволяет заказчикам при необходимости подключать свой собственный VAD (компонент, отвечающий за определение голосовой активности в аудио).
Оптимизация
-
Фразы, полученные при распознавании в файловом режиме, больше не объединяются в один элемент, а перечисляются по отдельности. Это позволяет впоследствии корректно выполнить определение пола и возраста участников разговора, если в аудио несколько спикеров.
-
Повышена скорость взаимодействия asr-e2e-agent и Triton-сервера благодаря оптимизации подготовки инпутов (объектов для входа).
Исправление ошибок
-
Исправлена ошибка с отправкой некорректной метки, из-за которой в Prometheus не отображались алерты (alerts) для компонента asr-e2e-agent.
-
Исправлена ошибка с отправкой некорректной метки, из-за которой в Prometheus не отображались алерты (alerts) для компонента vad-agent.
-
Исправлена ошибка, из-за которой возникали разные результаты определения пола при отправке запроса к genderage через Audiogram API и напрямую.
-
Исправлена ошибка, из-за которой распознавание речи не работало при выключенном VAD.
Audiogram 3.6.0
Audiogram 3.6.0 содержит следующие улучшения:
-
В ходе тестирования были выявлены и исправлены несколько ошибок, что повысило общую стабильность работы сервиса.
-
Оптимизированы развертывание, работа и названия моделей для синтеза речи. Теперь обе модели доступны одновременно. Чтобы выбрать какой моделью необходимо произвести озвучку, передайте её название в запросе:
- light - эта модель является менее ресурсоемкой и рекомендуется к использованию в производственных целях.
- high_quality - данная модель потребляет больше системных ресурсов, так как относится к новому поколению моделей, отличающихся более хорошими показателями качества синтеза, На данный момент ее рекомендуется использовать при невысокой нагрузке.
Вы можете выбрать любую модель, но если в запросе не указать конкретное название, то для синтеза в потоковом режиме по умолчанию будет использоваться light, а для синтеза в файловом режиме - high_quality.
Audiogram 3.5.1
Audiogram 3.5.1 содержит следующее улучшение:
- Исправлена ошибка трассировки, из-за которой в один трейс попадали спаны нескольких запросов.
Audiogram 3.5.0
Audiogram 3.5.0 содержит следующие улучшения:
Для сервиса распознавания речи (ASR)
- Проведены работы по снижению задержки (latency). Например: убрано шифрование модуля sentence-piece (данное изменение не влияет на безопасность); внедрен новый предиктор ML-модели; и др.
Для сервиса синтеза речи
- Внедрена новая модель, что привело к улучшению интонаций и уменьшению количества потребляемых ресурсов видеокарты.
- Улучшено качество синтеза голоса Ганджаева благодаря дополнительному обучению моделей.