Перейти к содержанию
Публикация AiManual

Amazon Polly: обновление генеративного движка, 14 новых голосов, хинди и финский

AWS обновила генеративный движок Amazon Polly: речь стала выразительнее и точнее при низкой задержке, добавились 14 голосов в 9 локалях, а хинди и финский вперв

Коротко

Что будет в материале

  1. 01

    Что именно улучшил новый генеративный движок

  2. 02

    14 новых голосов и 9 локалей: что добавилось

  3. 03

    Как включить новые голоса: Boto3 и AWS CLI

  4. 04

    Drop-in замена: что это значит для существующего продакшена

Amazon Polly получила крупное обновление генеративного движка. AWS заявляет более выразительную и точную речь при сохранении низкой задержки, и обновление уже доступно в общем доступе в production, без превью-флагов и отдельных заявок. Детали AWS описала в анонсе в блоге Machine Learning.

Вместе с движком добавили 14 новых голосов в 9 локалях. Генеративные голоса на хинди и финском впервые стали общедоступны: Arjun и Kiara для хинди, Suvi для финского. Для разработчика важнее другое: это drop-in замена. Имена голосов и вызовы API не меняются, поэтому существующие приложения продолжают работать без правок кода.

Ниже: что конкретно улучшилось в синтезе, как вызвать новый голос через Boto3 и AWS CLI, в каких сценариях обновление даёт выигрыш и какие ограничения стоит проверить заранее.

Что именно улучшил новый генеративный движок

В анонсе три заявленных улучшения: выразительность с просодией по тексту, точность на сложных для синтеза данных и низкая задержка. Каждое проверяется на конкретных примерах из демо AWS, которые приводятся в том же материале.

Выразительность и просодия без ручной настройки

Движок сам выбирает интонацию по тексту, ручная разметка SSML для базовой выразительности больше не обязательна. В демо голос Tiffany приветствует фразой: «Hi there! I'm Tiffany, one of Polly's generative voices. I was built to sound natural, expressive, and a little bit delightful. What should we talk about?». Звучит как приглашение к разговору, а не как чтение строки из файла.

Второй пример нагляднее. Одну фразу «Your package arrived early» движок озвучивает в трёх манерах: нейтрально («Your package arrived early.»), с неуверенностью («So, um… your package arrived early. I think?») и с удивлением («Wait, what? Your package arrived early?»). Сигнал для смены подачи — сам текст, включая разговорные маркеры вроде «um» и «I think?». Отдельный параметр эмоции в API для этого не нужен.

Точность на числах, валютах, адресах и кодах

Самое болезненное место любого TTS в продакшене — цифры. Голос Kenneth зачитывает подтверждение заказа целиком: «Thanks for calling. Your order, number 4471 9902 ships today to 85 Harbor View Drive, Apartment 4B, Portland, Oregon 97209. It should arrive on Thursday, October 22nd, between 9 AM and 1 PM. Your total was $1,284.50 and your confirmation code is K-7-Q-2-X-9.»

Корректно читаются трек-номер, дата и интервал доставки, сумма с центами и посимвольный код подтверждения. В контакт-центре ошибка в одной цифре кода означает повторный звонок, потерянные минуты оператора и раздражённого клиента.

Низкая задержка: почему это важно для продакшена

Заявлена низкая задержка, конкретных миллисекунд AWS не приводит. Для голосовых агентов на LLM это узкое место: пока синтез думает, пользователь слышит тишину и решает, что связь оборвалась. Как такие задержки измеряют и где они обычно прячутся, разбираем в материале про путь голосового AI-сервиса от демо до продакшена.

Для потоковой выдачи звука по мере генерации у Polly есть StartSpeechSynthesisStream, о нём в разделе с кодом.

14 новых голосов и 9 локалей: что добавилось

Новых голосов 14, локалей 9. Полный перечень в тексте анонса не раскрыт, там перечислены только ключевые новинки и примеры, поэтому актуальный список смотрите в консоли Polly или в документации AWS. Ниже подтверждённое в анонсе.

Хинди: Arjun и Kiara

Хинди впервые стал общедоступен в генеративном движке. Два голоса, Arjun и Kiara. Примеры из демо: Arjun — «नमस्कार, आप सुन रहे हैं आज की मुख्य ख़बरें...», Kiara — «नमस्ते! मेरा नाम कियारा है...». Arjun читает в новостной манере, Kiara представляется от первого лица. Обе фразы легко представить в IVR индийского контакт-центра, в озвучке курсов или в новостном боте.

Финский: Suvi

Финский в генеративном движке появился впервые, и Suvi — единственный подтверждённый генеративный голос для него. Демо-фраза: «Majakanvartija ei ollut nähnyt laivaa yhteentoista päivään...». Финский нужен не только продуктовым командам в Финляндии: это часть североевропейских локалей в e-learning, госуслугах и внутренних корпоративных базах знаний.

Как ориентироваться в каталоге 57 голосов

По данным анонса, каталог вырос до 57 генеративных голосов в 11 языках и 25 локалях. Цифры стоит сверить с консолью перед планированием: список голосов там фильтруется по языку и движку, а документация AWS даёт таблицу доступности по регионам. Практический порядок действий: отфильтровать по движку generative и нужной локали, затем прослушать два-три кандидата на своих реальных текстах, а не на демо-фразах.

Как включить новые голоса: Boto3 и AWS CLI

Включать отдельно нечего: новые голоса доступны сразу, как только SDK о них знает. Достаточно передать VoiceId и Engine='generative'.

SynthesizeSpeech на Boto3: пошаговый пример

Минимальный скрипт на Python вызывает SynthesizeSpeech и пишет mp3 в файл:

import boto3

polly = boto3.client("polly", region_name="us-east-1")

response = polly.synthesize_speech(
    Text="Your order 4471 9902 ships today. Your total was $1,284.50.",
    VoiceId="Kenneth",
    Engine="generative",
    OutputFormat="mp3",
)

with open("speech.mp3", "wb") as f:
    f.write(response["AudioStream"].read())

Engine задаёт движок, VoiceId — голос. Для хинди подставьте Arjun или Kiara, для финского Suvi, для выразительного английского Tiffany. Роли нужен IAM-разрешение polly:SynthesizeSpeech. Регион проверьте заранее: набор генеративных голосов привязан к региону, таблица доступности лежит в документации AWS.

AWS CLI: одна команда для проверки голоса

CLI возвращает JSON, где аудио лежит в base64-поле AudioStream, поэтому звук удобно декодировать сразу в файл:

aws polly synthesize-speech \
  --engine generative \
  --voice-id Suvi \
  --output-format mp3 \
  --text "Majakanvartija ei ollut nähnyt laivaa yhteentoista päivään." \
  --query AudioStream --output text | base64 --decode > suvi.mp3

На macOS у base64 флаг -D вместо --decode. Для хинди замените --voice-id на Arjun или Kiara и подставьте текст на деванагари, для проверки английской точности на цифрах — на Kenneth и фразу с заказом.

Потоковый вывод через StartSpeechSynthesisStream

SynthesizeSpeech возвращает аудио целиком, StartSpeechSynthesisStream отдаёт его чанками по мере генерации. Это сокращает время до первого звука: агент начинает говорить, пока синтезируется остаток ответа. Сигнатуру, лимиты и поддерживаемые SDK смотрите в документации AWS, они отличаются по версиям.

Схема для голосового агента простая: LLM выдаёт токены, потоковый синтез сразу превращает их в звук, и задержка TTS перестаёт быть главным слагаемым в цепочке. Остальные барьеры таких агентов, включая промахи ASR и скорость reasoning, разобраны в статье про то, почему голосовой AI ещё не пережил свой момент ChatGPT.

Drop-in замена: что это значит для существующего продакшена

Имена голосов и вызовы API не меняются. Если сервис уже вызывает Polly с генеративным голосом, после обновления он получает новое качество без изменений в коде и конфигурации: AWS называет это drop-in upgrade.

Миграции нет, но регрессионные тесты нужны. Звук меняется, и меняется в сторону большей вариативности интонации, поэтому критичные сценарии стоит переслушать:

  • обновить AWS SDK до актуальной версии, чтобы новые голоса появились в списке VoiceId;
  • прогнать ключевые фразы: суммы, адреса, коды подтверждения, длинные названия компаний;
  • сравнить аудио до и после на своих текстах, а не на демо-примерах;
  • проверить длительность: другая просодия даёт другую длину файла, а от неё зависят тайминги и кэш.

Для каких сценариев обновление даёт реальный выигрыш

Контакт-центры и голосовые боты

Точность на числах, валютах, адресах и кодах подтверждения — прямой аргумент для телефонии. Kenneth читает заказ вместе с трек-номером, датой доставки, суммой и кодом без переспросов. Добавьте низкую задержку и потоковый вывод, и получится IVR, который не заставляет абонента ждать на каждом шаге.

Голосовые агенты на LLM и дубляж

Агенту нужна просодия, которая следует за смыслом ответа: LLM выдаёт текст непредсказуемой формы, а движок сам расставляет интонацию без ручной разметки. Для дубляжа ценна выразительность голосов уровня Tiffany, но там же вылезает ограничение по таймингам, о нём в разделе про speech marks.

E-learning и доступность

В обучении просодия по тексту снимает часть ручной SSML-разметки: длинные модули читаются ровнее, списки и примеры не сливаются в монотонную ленту. Для доступности критична предсказуемость на числах и адресах: цены, индексы и номера квартир должны звучать так, как их произносит человек, иначе смысл теряется на слух.

Цена, регионы и доступность

Цена не выросла, новых SKU не появилось: обновление движка не добавляет строку в счёт, генеративные голоса тарифицируются по прежней схеме. Конкретные ставки смотрите на странице цен Polly, они различаются по движку и объёму символов.

Доступность расширилась: регион AWS GovCloud (US-West) добавил поддержку, всего генеративные голоса заявлены в 11 регионах AWS. Полный перечень AWS держит в таблице доступности по сервисам. Для проектов с требованием к GovCloud это может стать решающим аргументом. Остальным важнее проверить, что нужный голос есть в их регионе: список голосов привязан к региону, и в неподдерживаемом регионе вызов вернёт ошибку.

Ограничения, о которых стоит знать заранее

Нет speech marks: что это ломает и как обойти

Speech marks — метаданные о времени и позиции фрагментов. С их помощью субтитры подстраиваются под речь, слова подсвечиваются в караоке-режиме, губы аватара синхронизируются со звуком. У генеративных голосов speech marks нет.

Что это значит на практике:

  • субтитры и подсветку слов придётся считать отдельно, например по длительности сегментов и расставленным паузам;
  • липсинк аватара проще строить на стандартных или нейронных голосах, где тайминги отдаёт сам сервис;
  • точная синхронизация дубляжа с оригинальной дорожкой требует собственной разметки.

Обходной путь без магии: разделить продукт на два тракта. Там, где нужны тайминги, оставить движок со speech marks. Там, где важен живой звук, взять генеративный голос. Поддержку SSML и speech marks для конкретного голоса проверяйте в документации Polly: набор возможностей отличается по движкам, а обещать, что ограничение снимут в ближайшем релизе, никто не может.

Стоит ли переходить: практический вывод

Переходить сейчас, если:

  • нужна выразительность без ручной SSML-разметки;
  • критична точность на числах, валютах, адресах и кодах подтверждения;
  • нужны генеративные голоса на хинди или финском;
  • сервис уже на Polly и хочется улучшения без работ по миграции.

Можно подождать, если:

  • критичны speech marks: дубляж, липсинк, подсветка слов;
  • нужен язык вне 11 поддерживаемых;
  • ваш регион пока не в списке доступных.

Альтернативы есть в обе стороны: другие TTS-сервисы AWS и сторонние провайдеры, которые отдают тайминги и умеют клонирование голоса. Сравнивать их по качеству без замеров на собственных текстах смысла мало: метрики из общих бенчмарков плохо переносятся на конкретный контент с артикулами, адресами и кодами.

Обновление Polly — редкий для продакшена случай, когда качество выросло, а цена и вызовы API остались прежними. Главный риск лежит не в технике, а в сценариях, где нужны тайминги. Их стоит проверить до того, как вы отключите старый тракт синтеза.

Подписаться на канал