Yandex SpeechKit — сервис синтеза речи (TTS) и распознавания речи (STT) в составе Yandex AI Studio. Для контентных задач он позволяет превращать статьи и другие тексты в аудио; на pimenov.ai через SpeechKit создан отдельный аудиослой.
Что умеет SpeechKit
| Возможность | Для чего |
| Синтез речи (TTS) | Аудиоверсии статей, озвучка интерфейсов и голосовые уведомления |
| Распознавание речи (STT) | Расшифровка звонков, голосовых сообщений и диктовки |
| Brand Voice | Создание отдельного голоса для бренда |
| Playground | Проверка синтеза в браузере перед интеграцией |
| Потоковый синтез | Последовательная отправка текста в одной сессии API v3, например по мере генерации ответа языковой моделью |
Официальная документация указывает, что модели синтеза оценивают текст целиком и учитывают контекст при выборе интонации. Доступные языки, голоса и амплуа зависят от конкретной голосовой модели, поэтому их лучше выбирать по актуальному списку голосов.
API v1 и API v3
Синтез SpeechKit доступен через API или Playground. Адрес сервиса: tts.api.cloud.yandex.net:443.
У синтеза две версии API:
| Параметр | API v1 | API v3 |
| Интерфейс | REST | REST и gRPC |
| Голос | voice | hints: voice |
| Амплуа | emotion | hints: role |
| Скорость | speed | hints: speed |
| Управление произношением | SSML и TTS-разметка | TTS-разметка |
| Тембр | Не настраивается | hints: pitch_shift |
| Нормализация громкости | Не настраивается | loudness_normalization_type |
| Аудиошаблоны | Не поддерживаются | text_template |
| Тарификация | По суммарному количеству символов | По запросам |
В API v3 один запрос может вернуть несколько аудиофрагментов. Чтобы получить полный результат, клиент должен собрать все части в правильном порядке.
Потоковый режим API v3 позволяет отправлять новые порции текста в одной сессии. Он подходит для голосовых агентов и озвучивания ответа языковой модели по мере генерации. По состоянию на дату проверки потоковый синтез не поддерживает голоса SpeechKit Brand Voice Lite.
SpeechKit также доступен в официальном Python-пакете Yandex AI Studio SDK (наборе инструментов для разработки):
pip install yandex-ai-studio-sdkРепозиторий SDK: github.com/yandex-cloud/yandex-ai-studio-sdk.
Голоса, амплуа и тембр
Каждый голос связан с определённым языком и моделью диктора. Если передать текст на неподходящем языке, результат может получиться с акцентом или ошибками произношения.
Амплуа (role или emotion, в зависимости от API) меняет характер произношения одного голоса. Набор амплуа различается между голосами. Несовместимая комбинация голоса и амплуа приводит к ошибке сервиса.
В API v3 можно менять относительную высоту голоса параметром hints: pitch_shift. Допустимый диапазон — от -1000 до 1000 Гц, значение по умолчанию — 0. Положительное смещение делает голос выше, отрицательное — ниже.
Управление произношением
Имена, англицизмы и технические термины лучше проверять отдельно: прочитанные «как есть», они часто звучат как аудиоверсия опечатки.
SpeechKit поддерживает два вида разметки:
- SSML доступна только в API v1 и передаётся через параметр
ssml. - TTS-разметка работает в API v1 и API v3. В v1 размеченный текст передаётся через
text; API v3 и Yandex AI Studio SDK рассматривают переданный текст как TTS-разметку без отдельного параметра.
Разметка помогает управлять паузами и произношением отдельных фрагментов. Для повторяющихся названий сервисов и брендов полезно вести собственный словарь проверенных вариантов.
Громкость и выходное аудио
В API v3 формат результирующего аудио задаётся через output_audio_spec. В API v3 и Yandex AI Studio SDK можно также настроить нормализацию громкости.
Поддерживаются два типа нормализации:
MAX_PEAK— подъём пикового уровня до допустимой границы без цифровых искажений;LUFS— взвешенная нормализация по стандарту EBU R 128.
Тип задаётся параметром loudness_normalization_type; по умолчанию используется LUFS. Уровень передаётся через hints: volume:
- для
MAX_PEAKдопустим интервал(0;1], значение по умолчанию —0.7; - для
LUFSдопустим интервал[-149;0), значение по умолчанию —-19.
Значение вне поддерживаемого диапазона приводит к ошибке InvalidArgument. Перечень контейнеров, кодеков и параметров частоты дискретизации ищите в официальном разделе «Поддерживаемые форматы аудио».
Как проверить интеграцию
Минимальная проверка должна показывать наблюдаемый результат:
- Выберите голос и совместимое с ним амплуа в актуальном списке голосов.
- Отправьте короткую фразу через Playground или выбранный метод API.
- Убедитесь, что сервис вернул аудиоданные без ошибки параметров или авторизации.
- Для API v3 соберите все фрагменты ответа, если их несколько.
- Прослушайте файл и проверьте произношение имён, чисел и терминов.
- Повторите тест на длинном фрагменте, прежде чем запускать массовую генерацию.
Этот материал основан на официальной документации и снимке репозитория; приведённые параметры не проверялись отдельным живым API-запросом в рамках текущего обновления.
Тарифы и изменяемые лимиты
Способ тарификации зависит от версии API и режима. В официальной документации указано: API v1 тарифицируется по суммарному количеству символов, API v3 — по запросам. Конкретные ставки не приведены, поскольку приложенный снимок официальной страницы тарифов содержал только CAPTCHA и не позволял подтвердить цифры.
Перед расчётом бюджета проверьте:
- правила тарификации SpeechKit;
- способ округления и единицу тарификации выбранного API;
- отдельные условия Brand Voice;
- актуальные квоты и ограничения нужного метода.
Точные лимиты распознавания также не обновлялись: свежего полного первичного источника по STT в приложенных данных нет.
Полезные сценарии
Аудиоверсии статей
Исходные данные — готовый текст статьи. Вы выбираете голос, проверяете произношение терминов, синтезируете материал частями и собираете итоговое аудио. Результат можно проверить прослушиванием полного файла и сравнением его длительности с набором исходных фрагментов.
Для длинных материалов заранее закладывайте этап редакционной подготовки текста: заголовки, URL, подписи к изображениям и служебные блоки обычно не стоит озвучивать буквально.
Голосовые ответы по мере генерации
API v3 принимает последовательные порции текста в одной потоковой сессии. Это подходит для голосового агента, которому нужно озвучивать ответ по мере появления новых фрагментов текста. Проверяемый результат: новые порции текста принимаются в рамках одной сессии, а полученные аудиофрагменты можно собрать в полный результат. Порядок сборки и задержку начала воспроизведения проверьте на своём сценарии.
Ограничение: потоковый режим не поддерживает Brand Voice Lite на дату проверки.
Расшифровка аудио
Официальный SDK включает Speech To Text. Сценарий подходит для расшифровки звонков, заметок и голосовых сообщений. Конкретный режим распознавания и его лимиты нужно выбирать по актуальной документации STT, которой нет в приложенных снимках.
Наш кейс: аудиослой pimenov.ai
На pimenov.ai через SpeechKit API v3 были созданы 365 аудиоматериалов общей длительностью 21 час 25 минут. Стоимость этого исторического прогона здесь не приводится: приложенный снимок официальной страницы тарифов закрыт CAPTCHA, а актуальные условия нужно проверять в правилах тарификации.
В работе использовались голос anton, амплуа neutral и MP3 64 кбит/с. Основная сложность оказалась связана с произношением названий и технических терминов. Для повторяющихся слов появился отдельный словарь, а для статей и базы знаний использовались разные форматы: полные аудиоверсии и короткие обзоры.
Файлы хранятся отдельно от CMS, а на сайт попадает только одобренное аудио. Для новых материалов настроена автоматическая проверка отсутствующих записей и пакетная генерация.
Подробности:
- Я научил сайт говорить, и он первым делом переврал собственное имя
- Весь pimenov.ai теперь можно слушать: 365 аудиоматериалов
Официальные ссылки
Следующий шаг
Если хотите увидеть, как аудиослой работает на большом сайте, посмотрите разбор 365 аудиоматериалов pimenov.ai: Весь pimenov.ai теперь можно слушать: 365 аудиоматериалов
Обсуждение аудиослоя может быть полезно командам, которые хотят озвучивать длинные материалы и заранее контролировать качество произношения.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov


