Używanie interfejsu Text-to-Speech API z Node.js

1. Omówienie

Interfejs Google Cloud Text-to-Speech API pozwala programistom uwzględniać w aplikacjach naturalnie brzmiącą syntetyczną mowę ludzką jako dźwięk, który można odtwarzać. Text-to-Speech API konwertuje tekst lub dane wejściowe Speech Synthesis Markup Language (SSML) na dane audio, takie jak MP3 lub LINEAR16 (kodowanie używane w plikach WAV).

Z tego ćwiczenia w Codelabs dowiesz się, jak używać interfejsu Text-to-Speech API w środowisku Node.js. Dowiesz się, jak wyświetlić listę dostępnych głosów i jak syntetyzować dźwięk z tekstu.

Czego się nauczysz

  • Jak używać Cloud Shell
  • Jak włączyć interfejs Text-to-Speech API
  • Jak uwierzytelniać żądania do interfejsu API
  • Jak zainstalować bibliotekę klienta Google Cloud dla Node.js
  • Jak wyświetlić listę dostępnych głosów
  • Jak zsyntetyzować plik audio z tekstu

Czego potrzebujesz

  • Projekt Google Cloud Platform
  • przeglądarkę, np. Chrome lub Firefox;
  • Znajomość środowiska Node.js

Ankieta

Jak wykorzystasz ten samouczek?

Tylko do przeczytania Przeczytaj go i wykonaj ćwiczenia

Jak oceniasz korzystanie z Node.js?

Początkujący Poziom średnio zaawansowany Biegły

Jak oceniasz swoje wrażenia z korzystania z usług Google Cloud Platform?

Początkujący Poziom średnio zaawansowany Biegły
.

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail lub G Suite, musisz je utworzyć.

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Zapamiętaj identyfikator projektu, unikalną nazwę we wszystkich projektach Google Cloud (powyższa nazwa jest już zajęta i nie będzie Ci odpowiadać). W dalszej części tego ćwiczenia w Codelabs będzie ona określana jako PROJECT_ID.

  1. Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Google Cloud.

Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Postępuj zgodnie z instrukcjami podanymi w sekcji „Czyszczenie” W tym samouczku znajdziesz wskazówki, jak wyłączyć zasoby, aby uniknąć naliczania opłat. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

Uruchamianie Cloud Shell

Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w chmurze.

Aktywowanie Cloud Shell

  1. W konsoli Cloud kliknij Aktywuj Cloud Shell H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0Zz5LtwBlUZFXFCWFrmrWZLqg1MkZz2LdgUDQ.

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

Jeśli dopiero zaczynasz korzystać z Cloud Shell, wyświetli się ekran pośredni (w części strony widocznej po przewinięciu) z opisem tej funkcji. W takim przypadku kliknij Dalej (nie zobaczysz go więcej). Tak wygląda ten jednorazowy ekran:

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

Uzyskanie dostępu do Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelnianie. Większość czynności z tego ćwiczenia z programowania można wykonać w przeglądarce lub na Chromebooku.

Po nawiązaniu połączenia z Cloud Shell powinno pojawić się informacja, że użytkownik jest już uwierzytelniony i że projekt jest już ustawiony na identyfikator Twojego projektu.

  1. Uruchom to polecenie w Cloud Shell, aby potwierdzić, że jesteś uwierzytelniony:
gcloud auth list

Dane wyjściowe polecenia

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

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

Dane wyjściowe polecenia

[core]
project = <PROJECT_ID>

Jeśli tak nie jest, możesz go ustawić za pomocą tego polecenia:

gcloud config set project <PROJECT_ID>

Dane wyjściowe polecenia

Updated property [core/project].

3. Włączanie Text-to-Speech API

Zanim zaczniesz używać interfejsu Text-to-Speech API, musisz go włączyć. Interfejs API możesz włączyć, używając w Cloud Shell tego polecenia:

gcloud services enable texttospeech.googleapis.com

4. Uwierzytelnianie żądań do interfejsu API

Aby wysyłać żądania do interfejsu Text-to-Speech API, musisz używać konta usługi. Konto usługi należy do Twojego projektu i jest używane przez bibliotekę klienta Google Node.js do tworzenia żądań do interfejsu Text-to-Speech API. Tak jak każde inne konto użytkownika, konto usługi jest reprezentowane przez adres e-mail. W tej sekcji utworzysz konto usługi za pomocą pakietu Cloud SDK, a następnie utworzysz dane logowania, które będziesz potrzebować do uwierzytelnienia jako konto usługi.

Najpierw ustaw zmienną środowiskową za pomocą parametru GOOGLE_CLOUD_PROJECT, którego będziesz używać podczas tego ćwiczenia z programowania:

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

Następnie utwórz nowe konto usługi, aby uzyskać dostęp do interfejsu Text-to-Speech API, korzystając z:

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

Następnie utwórz dane logowania, których Twój kod w Node.js będzie używać do logowania się jako Twoje nowe konto usługi. Utwórz te dane i zapisz je w pliku JSON „~/key.json”. za pomocą tego polecenia:

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

Na koniec ustaw zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS używaną przez bibliotekę Node.js interfejsu Text-to-Speech API, która jest używana w następnym kroku, aby znaleźć Twoje dane logowania. Zmienna środowiskowa powinna zawierać pełną ścieżkę do utworzonego przez Ciebie pliku JSON z danymi logowania za pomocą polecenia:

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

5. Instalowanie biblioteki klienta interfejsu Google Cloud Text-to-Speech API dla Node.js

Najpierw utwórz projekt, którego użyjesz do uruchomienia tego modułu dotyczącego interfejsu Text-to-Speech API. Zainicjuj nowy pakiet Node.js w wybranym folderze:

npm init

Narzędzie NPM zadaje kilka pytań dotyczących konfiguracji projektu, np. nazwy i wersji. Przy każdym pytaniu naciśnij ENTER, aby zaakceptować wartości domyślne. Domyślnym punktem wejścia jest plik o nazwie index.js.

Następnie zainstaluj w projekcie bibliotekę Google Cloud Speech:

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

Więcej instrukcji konfigurowania środowiska programistycznego w środowisku Node.js na potrzeby Google Cloud znajdziesz w przewodniku po konfiguracji.

Teraz możesz korzystać z interfejsu Text-to-Speech API.

6. Lista dostępnych głosów

W tej sekcji zobaczysz najpierw wszystkie głosy dostępne w języku angielskim na potrzeby syntezy dźwięku.

Przejdź do pliku index.js wewnątrz kodu i zastąp go tym:

'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');

Poświęć chwilę na zapoznanie się z kodem. Uruchom aplikację:

node . 

Powinny się wyświetlić te dane wyjściowe:

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. Syntetyzowanie pliku audio z tekstu

Za pomocą interfejsu Text-to-Speech API możesz przekonwertować ciąg znaków na dane dźwiękowe. Sygnały wyjściowe syntezy mowy możesz skonfigurować na wiele sposobów, na przykład przez wybranie unikalnego głosu lub zmianę wysokości tonu, głośności, szybkości mówienia i częstotliwości próbkowania.

Przejdź do pliku index.js wewnątrz i dołącz ten kod:

/**
 * 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();

Poświęć chwilę na zapoznanie się z kodem i zobacz, jak można go wykorzystać do utworzenia pliku audio na podstawie tekstu.

node .

Powinny się wyświetlić te dane wyjściowe:

Audio content written to file "output.mp3"

8. Gratulacje!

Wiesz już, jak używać interfejsu Text-to-Speech API za pomocą Node.js do wykonywania różnych rodzajów transkrypcji plików audio.

Czyszczenie danych

Oto kroki, które musisz wykonać, aby uniknąć obciążenia konta Google Cloud Platform opłatami za zasoby zużyte podczas krótkiego wprowadzenia:

  • Otwórz konsolę Cloud Platform.
  • Wybierz projekt, który chcesz wyłączyć, i kliknij „Usuń”. u góry: spowoduje to zaplanowanie usunięcia projektu.

Więcej informacji

Licencja

To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.