Синтез речи на AWS: интеграция Amazon Polly с Python и SSML

При интеграции голосового помощника на AWS многие клиенты сталкиваются с проблемой: стандартный синтез речи Amazon Polly для русского языка звучит неестественно. Neural TTS для ru-RU не поддерживается, а использовать западные акценты нельзя. Вдобавок, есть ограничение на длину текста — при синтезе ч

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

При интеграции голосового помощника на AWS многие клиенты сталкиваются с проблемой: стандартный синтез речи Amazon Polly для русского языка звучит неестественно. Neural TTS для ru-RU не поддерживается, а использовать западные акценты нельзя. Вдобавок, есть ограничение на длину текста — при синтезе через synthesize_speech можно передать не более 1500 символов. Мы решаем эти задачи с помощью SSML-разметки, асинхронной обработки через Lambda и S3, а также кастомных настроек проходии. За 5 лет работы мы реализовали более 50 проектов с TTS в облаке, и у каждого есть свои тонкости.

Как обойти ограничение Neural для русской речи?

Основной инструмент — SSML (Speech Synthesis Markup Language). С его помощью можно управлять паузами, темпом, ударениями и даже произношением отдельных символов. Например, если нужно, чтобы цифры произносились по порядку, используем <say-as interpret-as="digits">. А для создания естественных пауз — <break time="300ms"/>. Вот пример разметки, которую мы применяем в продакшене:

<speak> Здравствуйте! Ваш заказ <break time="300ms"/> номер <say-as interpret-as="digits">12345</say-as> готов. <prosody rate="slow">Пожалуйста, проверьте данные.</prosody> </speak> 

Это позволяет приблизить звучание к человеческому даже на стандартных голосах. По данным документации AWS, SSML корректирует интонацию лучше, чем просто изменение параметров voice. Для русского языка доступны два голоса:

Голос Язык Тип Sample Rate
Maxim ru-RU Standard 8000-22050
Tatyana ru-RU Standard 8000-22050

Для сравнения, Azure Neural TTS поддерживает русский, но его стоимость примерно в 2–3 раза выше при аналогичном объёме. Amazon Polly с SSML даёт 80% качества Azure за меньшую цену.

Почему стоит выбрать интеграцию через Lambda и S3?

Мы используем связку Lambda + S3 для масштабируемой и доступной по цене синхронизации. Клиент отправляет текст — функция Lambda синтезирует речь через boto3 и сохраняет файл в S3. Пользователь получает ссылку с Presigned URL для прямого скачивания. В случае с длинными текстами запускаем асинхронную задачу start_speech_synthesis_task — это экономит ресурсы и не бьёт лимиты Lambda по времени.

import boto3 polly = boto3.client('polly', region_name='us-east-1') def synthesize_speech(text: str) -> bytes: response = polly.synthesize_speech( Text=text, OutputFormat='mp3', # mp3 | ogg_vorbis | pcm | json VoiceId='Tatyana', # Maxim | Tatyana для ru-RU LanguageCode='ru-RU', Engine='standard', # standard | neural (не для ru-RU) SampleRate='22050', # 8000 | 16000 | 22050 TextType='text', # text | ssml ) return response['AudioStream'].read() # SSML синтез ssml_text = """ <speak> Здравствуйте! Ваш заказ <break time="300ms"/> номер <say-as interpret-as="digits">12345</say-as> готов. </speak> """ response = polly.synthesize_speech( Text=ssml_text, TextType='ssml', OutputFormat='mp3', VoiceId='Tatyana', ) 

Для длинных текстов:

# Для длинных текстов — async task в S3 response = polly.start_speech_synthesis_task( Text=long_text, OutputFormat='mp3', VoiceId='Tatyana', OutputS3BucketName='my-tts-bucket', OutputS3KeyPrefix='audio/' ) task_id = response['SynthesisTask']['TaskId'] 

Как SSML помогает на практике: кейс с образовательными видеолекциями

В одном из проектов — озвучка образовательных видеолекций — с помощью кастомных SSML-шаблонов мы улучшили разборчивость чисел и формул на 30% без использования Neural голосов. Для этого настроили произношение специальных символов: <say-as interpret-as="digits"> для номеров, <phoneme alphabet="ipa" ph="pi">π</phoneme> для греческих букв, а также <prosody rate="85%"> для медленного проговаривания сложных терминов. Это позволило сохранить низкую стоимость (стандартный синтез) при высоком качестве восприятия.

Что такое SSML: основные элементы для синтеза речи

Тег Назначение Пример
<break> Пауза в миллисекундах <break time="500ms"/>
<say-as interpret-as="digits"> Произнести цифры по порядку номер <say-as interpret-as="digits">123</say-as>
<prosody rate="..."> Управление темпом речи <prosody rate="slow">важный текст</prosody>
<phoneme alphabet="ipa" ph="..."> Фонетическое произношение <phoneme alphabet="ipa" ph="dʒɪˈrɑːf">жираф</phoneme>
<emphasis level="moderate"> Акцент на слове <emphasis level="moderate">внимание</emphasis>

Эти теги помогают обойти ограничения стандартных голосов и сделать речь более естественной.

Что входит в работу по интеграции Amazon Polly

  • Полный код интеграции с boto3, включая SSML-шаблоны
  • Документация по архитектуре и вызову API
  • Рекомендации по оптимизации стоимости с учётом вашего объёма
  • Тестовый синтез на ваших данных для оценки качества
  • Обучение команды (1 час онлайн) основам SSML и работы с Polly
  • Пост-релизная поддержка 2 недели для оперативного решения вопросов

Процесс работы

  1. Анализ: разбираем ваш сценарий — объём текста, нужные языки, требования к качеству.
  2. Архитектура: проектируем схему — Polly + S3 + Lambda + CloudFront (опционально).
  3. Реализация: пишем код на Python с boto3, настраиваем SSML для ваших текстов.
  4. Тест: прогоняем на реальных данных, измеряем latency p99.
  5. Деплой: разворачиваем в вашем аккаунте AWS, выдаём доступы.

Сроки: от 2 до 5 рабочих дней в зависимости от сложности. Стоимость рассчитывается индивидуально.

Гарантия результата и поддержка

Мы занимаемся интеграцией AWS и TTS более 5 лет, все инженеры сертифицированы. Предоставляем полную документацию и готовые скрипты, чтобы вы могли обслуживать систему самостоятельно. Обучаем команду работе с Polly и SSML, помогаем с отладкой на этапе тестирования. После завершения проекта вы остаётесь с работающим решением и ясным пониманием его архитектуры.

Хотите оценить качество синтеза на своих данных? Свяжитесь с нами — мы подготовим демо-пример и рассчитаем оптимальную конфигурацию под ваш сценарий. Закажите консультацию, чтобы обсудить детали.