Использование API преобразования текста в речь с Node.js

1. Обзор

API преобразования текста в речь Google Cloud позволяет разработчикам включать в свои приложения естественно звучащую синтезированную человеческую речь в качестве воспроизводимого аудио. API преобразования текста в речь преобразует текст или входные данные в формате SSML ( Speech Synthesis Markup Language ) в аудиоданные, такие как MP3 или LINEAR16 (кодировка, используемая в файлах WAV).

В этом практическом занятии вы сосредоточитесь на использовании API преобразования текста в речь с Node.js. Вы узнаете, как получить список доступных голосов, а также как синтезировать аудио из текста.

Что вы узнаете

  • Как использовать Cloud Shell
  • Как включить API преобразования текста в речь
  • Как аутентифицировать запросы API
  • Как установить клиентскую библиотеку Google Cloud для Node.js
  • Как составить список доступных голосов
  • Как синтезировать аудио из текста

Что вам понадобится

  • Проект Google Cloud Platform
  • Браузер, например Chrome или Firefox.
  • Знание Node.js

Опрос

Как вы будете использовать этот учебный материал?

Прочитайте только от начала до конца. Прочитайте текст и выполните упражнения.

Как бы вы оценили свой опыт работы с Node.js?

Новичок Средний Профессионал

Как бы вы оценили свой опыт использования сервисов Google Cloud Platform?

Новичок Средний Профессионал

2. Настройка и требования

Настройка среды для самостоятельного обучения

  1. Войдите в Cloud Console и создайте новый проект или используйте существующий. (Если у вас еще нет учетной записи Gmail или G Suite, вам необходимо ее создать .)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Запомните идентификатор проекта (Project ID) — уникальное имя для всех проектов Google Cloud (указанное выше имя уже занято и вам не подойдёт, извините!). В дальнейшем в этом практическом занятии оно будет обозначаться как PROJECT_ID .

  1. Далее вам потребуется включить оплату в Cloud Console, чтобы использовать ресурсы Google Cloud.

Выполнение этого практического задания не должно стоить дорого, если вообще что-либо. Обязательно следуйте инструкциям в разделе «Очистка», где указано, как отключить ресурсы, чтобы избежать дополнительных расходов после завершения этого урока. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.

Активировать Cloud Shell

  1. В консоли Cloud нажмите «Активировать Cloud Shell» . H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0Zz5LtwBlUZFXFCWFrmrWZLqg1MkZz2LdgUDQ .

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

Если вы никогда раньше не запускали Cloud Shell, вам будет показан промежуточный экран (внизу), описывающий его назначение. В этом случае нажмите «Продолжить» (и вы больше никогда его не увидите). Вот как выглядит этот одноразовый экран:

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoewT1SUjd6Y3h81RG3rKIkqhoVlFR-G7w

Подготовка и подключение к Cloud Shell займут всего несколько минут.

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог размером 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Большая часть, если не вся, работа в этом практическом задании может быть выполнена с помощью обычного браузера или вашего Chromebook.

После подключения к Cloud Shell вы увидите, что ваша аутентификация пройдена и что проект уже настроен на ваш идентификатор проекта.

  1. Выполните следующую команду в Cloud Shell, чтобы подтвердить свою аутентификацию:
gcloud auth list

вывод команды

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

вывод команды

[core]
project = <PROJECT_ID>

Если это не так, вы можете установить это с помощью следующей команды:

gcloud config set project <PROJECT_ID>

вывод команды

Updated property [core/project].

3. Включите API преобразования текста в речь.

Прежде чем начать использовать API преобразования текста в речь, необходимо его включить. Для этого в Cloud Shell можно использовать следующую команду:

gcloud services enable texttospeech.googleapis.com

4. Аутентификация API-запросов

Для отправки запросов к API преобразования текста в речь вам потребуется использовать сервисный аккаунт . Сервисный аккаунт принадлежит вашему проекту и используется библиотекой Google Client Node.js для отправки запросов к API преобразования текста в речь. Как и любая другая учетная запись пользователя, сервисный аккаунт представлен адресом электронной почты. В этом разделе вы будете использовать Cloud SDK для создания сервисного аккаунта, а затем создадите учетные данные, необходимые для аутентификации в качестве сервисного аккаунта.

Для начала установите переменную окружения с именем вашего проекта GOOGLE_CLOUD_PROJECT , которую вы будете использовать на протяжении всего этого практического занятия:

export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)

Далее создайте новую учетную запись службы для доступа к API преобразования текста в речь, используя:

gcloud iam service-accounts create my-text-to-speech-sa \
  --display-name "my text-to-speech codelab service account"

Далее создайте учетные данные, которые ваш код Node.js будет использовать для входа в систему под вашей новой учетной записью службы. Создайте эти учетные данные и сохраните их в виде JSON-файла " ~/key.json ", используя следующую команду:

gcloud iam service-accounts keys create ~/key.json \
  --iam-account  my-text-to-speech-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com

Наконец, установите переменную среды GOOGLE_APPLICATION_CREDENTIALS , которая используется библиотекой Node.js Text-to-Speech API, описанной на следующем шаге, для поиска ваших учетных данных. Переменная среды должна быть установлена ​​на полный путь к созданному вами JSON-файлу с учетными данными, используя:

export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"

5. Установите клиентскую библиотеку Google Cloud Text-to-Speech API для Node.js.

Сначала создайте проект, который вы будете использовать для выполнения этой лабораторной работы по API преобразования текста в речь, инициализируйте новый пакет Node.js в выбранной вами папке:

npm init

NPM задает несколько вопросов о конфигурации проекта, таких как имя и версия. Для каждого вопроса нажмите ENTER , чтобы принять значения по умолчанию. Точкой входа по умолчанию является файл с именем index.js .

Далее установите библиотеку Google Cloud Speech в проект:

npm install --save @google-cloud/text-to-speech

Дополнительные инструкции по настройке среды разработки Node.js для Google Cloud см. в Руководстве по настройке .

Теперь вы готовы использовать API преобразования текста в речь!

6. Список доступных голосов

В этом разделе сначала необходимо перечислить все доступные голоса на английском языке для синтеза звука.

Перейдите к файлу index.js внутри папки и замените код следующим:

'use strict';

/**
 * Lists available voices for the specified language.
 *
 * @param {string} languageCode - The language code.
 */
async function listVoices(languageCode) {
  const textToSpeech = require('@google-cloud/text-to-speech');

  const client = new textToSpeech.TextToSpeechClient();

  const [result] = await client.listVoices({languageCode});
  const voices = result.voices;

  voices.forEach((voice) => {
    console.log(`${voice.name} (${voice.ssmlGender}): ${voice.languageCodes}`);
  });
}

listVoices('en');

Уделите минуту-две изучению кода. Запустите приложение:

node . 

Вы должны увидеть следующий результат:

en-US-Standard-A (MALE): en-US
en-US-Standard-B (MALE): en-US
en-US-Standard-C (FEMALE): en-US
en-US-Standard-D (MALE): en-US
en-US-Standard-E (FEMALE): en-US
en-US-Standard-F (FEMALE): en-US
...

7. Синтез аудио из текста.

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

Перейдите в файл index.js и добавьте следующий код:

/**
 * Sythesizes sample text into an .mp3 file.
 */
async function synthesize() {
  const textToSpeech = require('@google-cloud/text-to-speech');
  const fs = require('fs');
  const util = require('util');

  const client = new textToSpeech.TextToSpeechClient();

  const text = 'This is a demonstration of the Google Cloud Text-to-Speech API';

  const request = {
    input: {text: text},
    voice: {languageCode: 'en-US', ssmlGender: 'NEUTRAL'},
    audioConfig: {audioEncoding: 'MP3'},
  };

  const [response] = await client.synthesizeSpeech(request);
  // Write the binary audio content to a local file
  const writeFile = util.promisify(fs.writeFile);
  await writeFile('output.mp3', response.audioContent, 'binary');
  console.log('Audio content written to file: output.mp3');
}

synthesize();

Уделите минуту-две изучению кода и посмотрите, как он используется для создания аудиофайла из текста.

node .

Вы должны увидеть следующий результат:

Audio content written to file "output.mp3"

8. Поздравляем!

Вы научились использовать API преобразования текста в речь с помощью Node.js для выполнения различных видов транскрипции аудиофайлов!

Уборка

Чтобы избежать списания средств с вашего счета Google Cloud Platform за ресурсы, использованные в этом кратком руководстве:

  • Перейдите в консоль облачной платформы .
  • Выберите проект, который хотите закрыть, затем нажмите кнопку «Удалить» вверху: это запланирует удаление проекта.

Узнать больше

Лицензия

Данная работа распространяется под лицензией Creative Commons Attribution 2.0 Generic.