Как синтезировать речь в SpeechKit API v3
В этом разделе вы научитесь синтезировать речь из текста с помощью SpeechKit API v3 (gRPC).
Аутентификация для работы с API
Для работы с API SpeechKit пройдите аутентификацию. Ее способ зависит от типа аккаунта:
- Получите IAM-токен для аккаунта на Яндексе или федеративного аккаунта.
- Получите идентификатор каталога, на который у вашего аккаунта есть роли
ai.speechkit-stt.user
,ai.speechkit-tts.user
или выше. -
При обращении к SpeechKit через API в каждом запросе передавайте полученные параметры:
-
Для API v1 и API v2:
Указывайте IAM-токен в заголовке
Authorization
в следующем формате:Authorization: Bearer <IAM-токен>
Идентификатор каталога указывайте в теле запроса в параметре
folderId
. -
Для API v3:
- в заголовке
Authorization
указывайте IAM-токен; - в заголовке
x-folder-id
указывайте идентификатор каталога.
Authorization: Bearer <IAM-токен> x-folder-id <идентификатор_каталога>
- в заголовке
-
SpeechKit поддерживает два способа аутентификации с сервисным аккаунтом:
-
С помощью IAM-токена:
-
Полученный IAM-токен передавайте в заголовке
Authorization
в следующем формате:Authorization: Bearer <IAM-токен>
-
С помощью API-ключей.
Используйте API-ключи, если у вас нет возможности автоматически запрашивать IAM-токен.
-
Полученный API-ключ передавайте в заголовке
Authorization
в следующем формате:Authorization: Api-Key <API-ключ>
Не указывайте в запросах идентификатор каталога — сервис использует каталог, в котором был создан сервисный аккаунт.
В примере ниже аутентификация выполняется от имени аккаунта на Яндексе.
Перед началом работы
-
Установите утилиту grpcurl
. -
Установите утилиту jq
для потоковой обработки JSON-файлов:sudo apt update && sudo apt install jq
Примечание
Вы можете реализовать синтез речи в SpeechKit API v3 как с помощью указанных утилит, так и другими способами.
Преобразуйте текст в аудиофайл
Чтобы синтезировать речь из текста в TTS-разметке в файл формата WAV
-
Создайте файл c телом запроса API и текстом для синтеза речи:
tts_req.json
{ "text": "Я Яндекс Спичк+ит. Я могу превратить любой текст в речь. Теперь и в+ы — можете!", "outputAudioSpec": { "containerAudio": { "containerAudioType": "WAV" } }, "hints": [ { "voice": "jane" }, { "role": "good" } ], "loudnessNormalizationType": "LUFS" }
-
Выполните команды:
export FOLDER_ID=<идентификатор_каталога> export IAM_TOKEN=<IAM-токен> jq . -c tts_req.json | \ grpcurl -H "authorization: Bearer ${IAM_TOKEN}" \ -H "x-folder-id: ${FOLDER_ID}" \ -d @ tts.api.cloud.yandex.net:443 speechkit.tts.v3.Synthesizer/UtteranceSynthesis | \ jq -r '.audioChunk.data' | base64 -d > speech.wav
Где:
-
FOLDER_ID
— идентификатор каталога, полученный ранее.Если вы используете IAM-токен сервисного аккаунта, не указывайте в запросе идентификатор каталога — сервис использует каталог, в котором был создан сервисный аккаунт.
-
IAM_TOKEN
— IAM-токен, полученный ранее. -
speech.wav
– файл, в который будет записан ответ.
-
В результате в папке будет создан файл speech.wav
с синтезированной речью.