Руководство по эксплуатации Audiogram
О продукте
Audiogram – это сервис на базе нейронных сетей и методов машинного обучения для распознавания и синтеза речи. Audiogram позволяет выполнять:
-
Синхронное распознавание речи. В этом случае сервис получает запрос с аудиофайлом, который необходимо расшифровать, и возвращает распознанный текст. Данный способ выполняется последовательно и считается наиболее точным. Подходит, например, для расшифровки телефонных разговоров.
-
Потоковое распознавание речи. В случае потокового распознавания устанавливается соединение с 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
Распознавание речи
Для взаимодействия с API распознавания речи используется протокол gRPC.
Примечание: Подробности об этом протоколе можно прочитать на https://grpc.io/
Чтобы пользоваться сервисом Audiogram для распознавания речи нужно создать клиентское приложение. Можно использовать любой язык программирования, который есть в библиотеке для работы с gRPC.
При написании приложения используйте proto-файл stt.proto.
Максимальная длина сообщения, принимаемого от клиентов по gRPC (в байтах): 31457280
Методы
При обращении по gRPC-протоколу клиентское приложение использует нужный метод сервиса.
Recognize – распознавание аудио целиком
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
Recognize | RecognizeRequest | RecognizeResponse | Метод распознавания аудиофайла целиком. Ожидает аудиофайл, в этом же соединении возвращает результат и закрывает соединение. |
StreamingRecognize – потоковое распознавание речи
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
StreamingRecognize | stream StreamingRecognizeRequest | stream StreamingRecognizeResponse | Метод поточного распознавания. Принимает аудиоданные по мере их доступности. Распознавание заканчивается, когда поток закрывается клиентом. |
GetModelsInfo – запрос моделей для распознавания речи
Имя метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
GetModelsInfo | google.protobuf.Empty | ModelsInfo | Метод запроса списка моделей для распознавания речи. Ничего не принимает в качестве аргументов, возвращает список доступных моделей. |
Сообщения PROTOBUF для распознавания речи
VoiceActivityMark – определяет разметку голосовой активности во входном акустическом сигнале. Сообщение включает в себя метку времени и тип метки.
Поле | Тип | Описание |
---|---|---|
mark_type | VoiceActivityMarkType | Тип разметки. |
offset_ms | uint64 | Метка времени с точкой отсчета начала входного акустического сигнала, единицы измерения - миллисекунды. |
VoiceActivityMarkType – определяет тип метки голосовой активности
Имя | Значение | Описание |
---|---|---|
VA_MARK_NONE | 0 | Тип метки отсутствия изменения голосовой активности. |
VA_MARK_BEGIN | 1 | Тип метки начала голосовой активности. |
VA_MARK_END | 2 | Тип метки конца голосовой активности. |
VoiceActivityDetectionAlgorithmUsage – тип используемого алгоритма VoiceActivity
Имя | Значение | Описание |
---|---|---|
USE_VAD | 0 | Включает использование VAD-алгоритма (Voice Activity Detection) для разбиения на фразы. Этот алгоритм определяет окончание фразы по паузам в речи и тишине. |
DO_NOT_PERFORM_VOICE_ACTIVITY | 1 | Отключает разбиение на фразы по Voice Activity. То есть весь распознанный текст будет получен в виде одной фразы. |
USE_DEP | 2 | Включает использование DEP-алгоритма для разбиения на фразы. Этот алгоритм реализует более сложную логику определения окончания фразы по законченности мысли. |
VoiceActivityMarkEventsMode – режим отправки VoiceActivity разметки клиенту
Имя | Значение | Описание |
---|---|---|
VA_DISABLE | 0 | Отключает отправку отметок VoiceActivityMark. |
VA_ENABLE | 1 | Включает отправку отметок VoiceActivityMark синхронно вместе с транскрипцией. |
VA_ENABLE_ASYNC | 2 | Включает отправку отметок VoiceActivityMark асинхронно (как только будет получена разметка, не дожидаясь работы asr). Для файлового режима работает идентично ENABLE. |
VADOptions – настройки работы алгоритма VAD
Поле | Тип | Описание |
---|---|---|
threshold | float | Порог срабатывания VAD. Если вероятность речи выше порога, значит обработанный чанк содержит речь. Возможные значения: (0, 1.0]. Значение по умолчанию - 0.2 |
speech_pad_ms | int32 | Отступ, добавляемый к границам найденных фрагментов (если speech_pad_ms < 0, отступ будет "внутрь" фрагмента). Опция применима только для offline режима (для Recognize() запросов). Единицы измерения - миллисекунды. Значение по умолчанию - 300 |
min_silence_ms | uint32 | Если между двумя фрагментами речи встречается пауза короче min_silence_ms, то такая пауза не учитывается и фрагменты объединяются в один. Единицы измерения - миллисекунды. Возможные значения: min_silence_ms >= 0. Значение по умолчанию - 100 мс |
min_speech_ms | uint32 | Минимальная продолжительность речи. Фрагменты короче min_speech_ms не учитываются. Опция применима только для offline режима (для Recognize() запросов). Единицы измерения - миллисекунды. Возможные значения: min_speech_ms >= 0. Значение по умолчанию - 250 |
mode | VoiceActivityDetectionMode | Выбор типа разметки VAD-ом аудио файла для файлового запроса. |
VoiceActivityDetectionMode – выбор типа разметки аудио с помощью VAD
Имя | Значение | Описание |
---|---|---|
VAD_MODE_DEFAULT | 0 | Значение по умолчанию для файлового режима - ONLY_SPEECH, для стримингового (потокового) режима - SPLIT_BY_PAUSES. |
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 мс |
VoiceActivityConfig – структура данных для хранения всех настроек VoiceActivity
Имя | Значение | Описание |
---|---|---|
dep_options | DEPOptions | Опции алгоритма DEP. Используется при VoiceActivityDetectionAlgorithmUsage = USE_DEP |
usage | VoiceActivityDetectionAlgorithmUsage | Выбор алгоритма VoiceActivity. При DO_NOT_PERFORM_VOICE_ACTIVITY разметка аудио выключена. Значение по умолчанию - USE_VAD |
vad_options | VADOptions | Опции алгоритма VAD. Используется при VoiceActivityDetectionAlgorithmUsage = USE_VAD |
AudioEncoding – поддерживаемые форматы аудиоданных
Имя | Значение | Описание |
---|---|---|
ENCODING_UNSPECIFIED | 0 | 1. Если данное поле выбрано при использовании метода Recognize, то в поле RecognizeRequest.audio_content.audio ожидается wav audio с заголовком в одном из следующих форматов: 2. При использовании метода StreamingRecognize данное поле использовать не нужно, поскольку потоковый метод работает только с сырым аудиопотоком без заголовка, иначе вернётся ошибка. |
LINEAR_PCM | 1 | PCM без заголовков с целыми знаковыми 16-битными сэмплами в линейном распределении (PCM 16bit). |
FLAC | 2 | На текущий момент не поддерживается. |
MULAW | 3 | PCM без заголовков с 8-битными сэмплами в формате mu-law. |
ALAW | 20 | PCM без заголовков с 8-битными сэмплами в формате a-law. |
RecognitionConfig - конфигурация распознавания при вызове метода Recognize
Поле | Тип | Описание |
---|---|---|
encoding | enum AudioEncoding | Формат аудио данных (кодировка). |
sample_rate_hertz | int32 | Частота дискретизации аудио данных в герцах. |
language_code | string | Язык, используемый в аудио файле. |
max_alternatives | int32 | Максимальное количество возвращаемых гипотез. Сервер может вернуть меньше, чем указано в этом параметре. По умолчанию количество возвращаемых гипотез распознавания равно 1. |
audio_channel_count | int32 | Количество каналов во входных аудиоданных. |
enable_word_time_offsets | bool | Флаг, включающий вывод временных меток слов. |
enable_automatic_punctuation | bool | Флаг, включающий модуль автоматической расстановки знаков препинания. |
model | string | Модель распознавания. |
va_config | VoiceActivityConfig | Конфигурация Voice Activity. |
va_response_mode | VoiceActivityMarkEventsMode | Режим отправки разметки клиенту. По умолчанию – VA_DISABLE. |
enable_genderage | bool | Флаг, включающий модуль определения пола и возраста говорящего. Примечание: пол ребенка в настоящий момент не определяется. |
StreamingRecognitionConfig - конфигурация распознавания при вызове метода StreamingRecognize
Поле | Тип | Описание |
---|---|---|
config | RecognitionConfig | Конфигурация распознавания. |
single_utterance | bool | Флаг для включения режима распознавания одной фразы. В этом режиме (при выставленном значении «true») распознавание завершается сервисом сразу после распознавания первой фразы и соединение разрывается. |
interim_results | bool | Конфигурация для промежуточных результатов: |
StreamingRecognizeRequest - запрос на распознавание аудио
Первое сообщение типа StreamingRecognizeRequest должно содержать данные в поле «streaming_config» и не должно содержать данные в поле «audio». Все последующие сообщения StreamingRecognizeRequest наоборот не должны иметь данных в поле «streaming_config», а в поле «audio» передаются аудиоданные. Аудиобайты должны быть закодированы, как указано в RecognitionConfig.
Поле | Тип | Описание |
---|---|---|
streaming_config | StreamingRecognitionConfig | Конфигурация распознания. |
audio | bytes | Аудиофрагменты для распознания. |
RecognitionAudio – аудио, отправляемое на распознавание
Поле | Тип | Описание |
---|---|---|
audio | bytes | Аудиофрагменты для распознания. |
uri | string | Ссылка на скачивание аудио. В настоящий момент не поддерживается. |
RecognizeRequest – запрос на распознавание аудио
Поле | Тип | Описание |
---|---|---|
config | RecognitionConfig | Конфигурация распознавания. |
audio_content | RecognitionAudio | Структура для передачи аудиоданных в метод распознавания. |
RecognizeResponse – ответ с результатами распознавания для метода Recognize
Поле | Тип | Описание |
---|---|---|
results | repeated SpeechRecognitionResult | Результат распознавания. |
StreamingRecognizeResponse - ответ с результатами распознавания для метода StreamingRecognize
Поле | Тип | Описание |
---|---|---|
results | repeated StreamingRecognitionResult | Этот повторяющийся список содержит последнюю расшифровку, соответствующую аудио, которое в настоящее время обрабатывается. В настоящее время возвращается один результат, причем каждый результат может иметь несколько значений (альтернативы). |
SpeakerGenderAgePrediction - пол и возраст говорящего
Поле | Тип | Описание |
---|---|---|
gender | GenderClass | Значение, определяющее пол. |
age | AgeClass | Значение, определяющее возраст. |
GenderClass - пол говорящего
Имя | Значение | Описание |
---|---|---|
GENDER_UNDEF | 0 | Пол не определен. |
GENDER_MALE | 1 | Мужчина. |
GENDER_FEMALE | 2 | Женщина. |
AgeClass - возраст говорящего
Имя | Значение | Описание |
---|---|---|
AGE_UNDEF | 0 | Возраст не определен. |
AGE_ADULT | 1 | Взрослый. |
AGE_CHILD | 2 | Ребенок. |
SpeechRecognitionAlternative – альтернативные гипотезы
Поле | Тип | Описание |
---|---|---|
transcript | string | Распознанный текст. |
confidence | float | Коэффициент достоверности (степень уверенности) распознанной фразы. |
words | repeated WordInfo | Список информации об объектах распознанных слов. |
start_time | google.protobuf.Duration | Временная метка начала фразы относительно начала аудиопотока. |
end_time | google.protobuf.Duration | Временная метка конца фразы относительно начала аудиопотока. |
WordInfo – объект, содержащий информацию, относящуюся к распознанному слову
Поле | Тип | Описание |
---|---|---|
start_time | google.protobuf.Duration | Временная метка начала слова относительно начала аудиопотока. |
end_time | google.protobuf.Duration | Временная метка конца слова относительно начала аудиопотока. |
word | string | Распознанное слово. |
confidence | float | Коэффициент достоверности (степень уверенности) распознанного слова. |
StreamingRecognitionResult – результат вызова метода распознавания потокового аудио StreamingRecognize
Поле | Тип | Описание |
---|---|---|
result | SpeechRecognitionResult | Результат распознавания. |
is_final | bool | Флаг, указывающий, что сформирована окончательная гипотеза и меняться она больше не будет: |
SpeechRecognitionResult – результат вызова метода файлового распознавания аудио Recognize
Поле | Тип | Описание |
---|---|---|
alternatives | repeated SpeechRecognitionAlternative | Список альтернативных результатов распознавания. Может содержать одну или несколько гипотез распознавания (максимальное значение указано в параметре RecognitionConfig.max_alternatives). Альтернативы упорядочены по точности, причем первая альтернатива является наиболее вероятной в соответствии с SpeechRecognitionAlternative.confidence. |
channel | int32 | Идентификатор канала (в настоящее время данный параметр не поддерживается). |
va_marks | repeated VoiceActivityMark | Voice Activity разметка. Массив меток отправляется только если VoiceActivityMarkEventsMode = VA_ENABLE / VA_ENABLE_ASYNC. При VoiceActivityMarkEventsMode = VA_ENABLE_ASYNC все остальные поля структуры SpeechRecognitionResult могут быть пустые. |
genderage | SpeakerGenderAgePrediction | Результат работы модели классификации мужчина/женщина/ребенок. Включается флагом enable_genderage в RecognitionConfig. |
ModelsInfo – доступные модели распознавания речи
Поле | Тип | Описание |
---|---|---|
models | repeated ModelInfo | Список доступных моделей. |
ModelInfo – информация о модели распознавания речи
Поле | Тип | Описание |
---|---|---|
name | string | Имя модели распознавания речи. |
sample_rate_hertz | uint32 | Частота дискретизации аудио данных в герцах. |
language_code | string | Язык, используемый в аудио файле, по умолчанию ru. |
Синтез речи
Для взаимодействия с API синтеза речи используется протокол gRPC.
Примечание: Подробности об этом протоколе можно прочитать на https://grpc.io/
Чтобы пользоваться сервисом Audiogram для синтеза речи нужно создать клиентское приложение. Можно использовать любой язык программирования, который есть в библиотеке для работы с gRPC.
При написании приложения используйте proto-файл tts.proto.
Максимальная длина сообщения, принимаемого от клиентов по gRPC (в байтах): 31457280
Методы
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) light - это менее ресурсоемкая модель, рекомендуется для синтеза в файловом и потоковом режимах при промышленном использовании; 2) high_quality - относится к новейшему поколению моделей, которые отличаются улучшенными характеристиками синтеза речи, но потребляет больше системных ресурсов. Рекомендуется к использованию при небольшой нагрузке. В запросе на синтез укажите название модели, которую необходимо использовать. Если не передать название модели, то при синтезе в потоковом режиме по умолчанию будет использоваться light, а при синтезе в файловом режиме - 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 | Рекомендуется использовать для телефонного канала. Допускается использовать только с AudioOptions.sample_rate_hertz = 8000 Гц. Наилучший результат дает при использовании модели синтеза default в сочетании с SynthesizeOptions.model_sample_rate_hertz = 22050 Гц. Важно! - данные настройки не рекомендуется применять к модели синтеза high_quality. |
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 | Опции синтеза аудио. |
StreamingSynthesizeSpeechResponse – результат работы потокового синтеза речи
Поле | Тип | Описание |
---|---|---|
audio | bytes | Байты аудиоданных без заголовка, закодированные, как указано в encoding и заданной в sample_rate_hertz частотой дискретизации. Результат синтеза может прийти в нескольких ответах, по мере их синтезирования. |
SynthesizeSpeechResponse – результат работы файлового синтеза речи
Поле | Тип | Описание |
---|---|---|
audio | bytes | В данном поле передаётся целый синтезированный аудиофайл с заголовками в формате, заданном в encoding и заданной в sample_rate_hertz частотой дискретизации. |
ModelsInfo - доступные голоса для синтеза речи
Поле | Тип | Описание |
---|---|---|
models | repeated ModelInfo | Список доступных голосов для синтеза речи. |
ModelInfo - информация о модели синтеза речи
Поле | Тип | Описание |
---|---|---|
name | string | Название модели синтеза речи. |
sample_rate_hertz | uint32 | Частота дискретизации аудио данных в герцах. |
language_code | string | Язык, которым озвучивается текст, отправленный на синтез. По умолчанию ru. |
type | string | Тип модели. Возможные значения: В запросе на синтез укажите название модели, которую необходимо использовать. Если не передать название модели, то при синтезе в потоковом режиме по умолчанию будет использоваться light, а при синтезе в файловом режиме - high_quality. |
Использование SSML-разметки
SSML (Speech Synthesis Markup Language) – это язык разметки с фиксированным набором тегов и атрибутов, основанный на XML (но без тега xml в начале) и применяемый для синтеза речи. Его можно использовать, чтобы настроить скорость и звучание голоса.
Настройка проводится с помощью SSML-тегов, которые нужно указать в тексте, отправляемом на синтез.
Примечание: текст без тегов необходимо писать в поле SynthesizeSpeechRequest.text
На данный момент в Audiogram поддерживаются следующие SSML-теги:
Тег | Описание | Параметры тега |
---|---|---|
speak | Обязательный тег для работы с SSML. В него должен быть обернут весь текст, отправляемый на синтез. При помощи дополнительных параметров может управлять скоростью и высотой тона (питчем) всего текста. Должен сопровождаться закрывающим тегом \ |
(значения меньше единицы – медленнее, больше – быстрее) Если параметр не указан, его значение по умолчанию = 1.
Отрицательные значения – низкий тон, положительные – высокий. Если параметр не указан, его значение по умолчанию = 0. |
prosody | Управляет скоростью и высотой тона (питчем) произвольного количества предложений и слов. Должен сопровождаться закрывающим тегом (\ |
(значения меньше единицы – медленнее, больше – быстрее) Если параметр не указан, его значение по умолчанию = 1.
Отрицательные значения – низкий тон, положительные – высокий. Если параметр не указан, его значение по умолчанию = 0. |
break | Добавляет паузу произвольной длины в секундах в любое место. Этот тег является самозакрывающимся (<break .../>). | (единица измерения s (секунды) после количества секунд является обязательным параметром - \ |
Параметры тегов указываются внутри треугольных скобок в виде
<название_тега название_параметра1="величина_параметра1" название_параметра2="величина_параметра2" закрытие тега>
Как поставить ударение в слове
Некоторые слова могут читаться по-разному. Например, «жАркое» или «жаркОе». При помощи SSML-разметки можно указать где надо делать ударение. Для этого после ударной гласной необходимо вставить {'} :
- «жа{'}ркое», чтобы получилось «жАркое»; и
- «жарко{'}е», чтобы получилось «жаркОе».
Дополнительно
-
Если отправить какой-то текст без разметки на озвучку в поле text, а потом этот же текст обернуть только в тег
и отправить на озвучку в поле ssml, то текст будет озвучен одинаково. -
Если текст с SSML-тегами отправить на озвучку в поле text, то Audiogram озвучит не только текст, но и теги. Например, если отправить "
Привет мир ", то озвучка будет - "спик привет мир спик". -
Знак ударения {'} синтез не считает ssml-тегом и он будет обработан как ударение и в text, и в ssml.
-
Синтез текста без SSML-разметки и синтез этого же текста с разметкой не будут различаться по нагрузке на систему.
Примеры использования SSML-тегов
Пример 1 (весь текст с SSML-разметкой, отправляемый на синтез, должен быть обернут в тег speak):
<speak>Глава 1.
Три девицы под окном
Пряли поздно вечерком.
«Кабы я была царица, —
Говорит одна девица, —
То на весь крещеный мир
Приготовила б я пир».</speak>
Пример 2 (добавляем паузу после «Глава 1.»):
<speak>Глава 1. <break time="2s"/>
Три девицы под окном
Пряли поздно вечерком.
«Кабы я была царица, —
Говорит одна девица, —
То на весь крещеный мир
Приготовила б я пир».</speak>
Пример 3 (поставим ударение, чтобы сервис правильно произнес «девИца», а не «дЕвица»):
<speak>Глава 1. <break time="2s"/>
Три девицы под окном
Пряли поздно вечерком.
«Кабы я была царица, —
Говорит одна деви{'}ца, —
То на весь крещеный мир
Приготовила б я пир».</speak>
Пример 4 (укажем высоту и скорость произнесения всего текста):
<speak speed="0.8" pitch="-0.4">Глава 1. <break time="2s"/>
Три девицы под окном
Пряли поздно вечерком.
«Кабы я была царица, —
Говорит одна деви{'}ца, —
То на весь крещеный мир
Приготовила б я пир».</speak>
Пример 5 (Изменим высоту и скорость произнесения прямой женской речи. Если выбрана мужская голосовая модель, это сделает звучание более аутентичным.):
<speak speed="0.8" pitch="-0.4">Глава 1. <break time="2s"/>
Три девицы под окном
Пряли поздно вечерком.
<prosody speed="1.1" pitch="0.7">«Кабы я была царица, —
Говорит одна деви{'}ца, —
То на весь крещеный мир
Приготовила б я пир».</prosody></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 необходимо создать клиентское приложение. В этом разделе можно посмотреть примеры кода клиентских приложений, написанных на Python. Однако, вы можете использовать и другие языки программирования, для которых существуют библиотеки gRPC.
При написании клиентских приложений используйте proto-файлы.
Распознавание аудио в файловом режиме
Распознавание аудио в потоковом режиме
Синтез аудио в файловом режиме
Синтез аудио в потоковом режиме
История релизов Audiogram
Текущая версия - 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-модели; и др.
Для сервиса синтеза речи
- Внедрена новая модель, что привело к улучшению интонаций и уменьшению количества потребляемых ресурсов видеокарты.
- Улучшено качество синтеза голоса Ганджаева благодаря дополнительному обучению моделей.