Интеграция Amazon Polly для синтеза речи
Amazon Polly — TTS-сервис AWS с нативной интеграцией в экосистему Amazon: S3, Lambda, CloudFront. Поддерживает Neural TTS (NTTS) голоса и классические. Для русского: голоса Maxim (мужской) и Tatyana (женский), Neural версии недоступны для ru-RU.
Синтез через boto3
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',
)
Presigned URL для прямого доступа к S3
# Для длинных текстов — 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']
Стоимость: Standard TTS $4/1M символов. Neural TTS $16/1M символов (только для поддерживаемых языков). Бесплатно: 5 млн символов/месяц первые 12 месяцев.
Ограничение: для ru-RU нет Neural голосов — качество ниже чем у Google Wavenet или Azure Neural. Рекомендуется для систем уже на AWS.
Сроки: 1 день.







