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

1. Przegląd

Interfejs Google Cloud Text-to-Speech API umożliwia deweloperom umieszczanie w aplikacjach naturalnie brzmiącej, syntetycznej mowy ludzkiej w formie odtwarzalnego dźwięku. Interfejs Text-to-Speech API konwertuje tekst lub dane wejściowe w języku SSML na dane audio, takie jak MP3 lub LINEAR16 (kodowanie używane w plikach WAV).

W tym laboratorium skupisz się na używaniu interfejsu Text-to-Speech API z Node.js. Dowiesz się, jak wyświetlić listę dostępnych głosów i jak zsyntetyzować plik audio na podstawie tekstu.

Czego się nauczysz

  • Jak korzystać z Cloud Shell
  • Włączanie interfejsu Text-to-Speech API
  • Uwierzytelnianie żądań do interfejsu API
  • Instalowanie biblioteki 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ądarka, np. Chrome lub Firefox;
  • znajomość Node.js,

Ankieta

Jak zamierzasz korzystać z tego samouczka?

Tylko przeczytaj Przeczytaj i wykonaj ćwiczenia

Jak oceniasz swoje doświadczenie z Node.js?

Początkujący Średnio zaawansowany Zaawansowany

Jak oceniasz korzystanie z usług Google Cloud Platform?

Początkujący Średnio zaawansowany Zaawansowany

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. (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, czyli unikalną nazwę we wszystkich projektach Google Cloud (podana powyżej nazwa jest już zajęta i nie będzie działać w Twoim przypadku). W dalszej części tego laboratorium będzie on nazywany PROJECT_ID.

  1. Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów Google Cloud.

Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Wykonaj instrukcje z sekcji „Czyszczenie”, w której znajdziesz informacje o tym, jak wyłączyć zasoby, aby uniknąć naliczenia opłat po zakończeniu tego samouczka. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Uruchamianie Cloud Shell

Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

Aktywowanie Cloud Shell

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

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni (część strony widoczna po przewinięciu) z opisem tego środowiska. W takim przypadku kliknij Dalej, a ten ekran nie będzie się już wyświetlać. Ten wyświetlany jednorazowo ekran wygląda tak:

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

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

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Większość zadań w tym module, a być może wszystkie, możesz wykonać w przeglądarce lub na Chromebooku.

Po połączeniu z Cloud Shell zobaczysz, że uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu.

  1. Aby potwierdzić, że uwierzytelnianie zostało przeprowadzone, uruchom w Cloud Shell to polecenie:
gcloud auth list

Wynik 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

Wynik polecenia

[core]
project = <PROJECT_ID>

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

gcloud config set project <PROJECT_ID>

Wynik polecenia

Updated property [core/project].

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

Zanim zaczniesz korzystać z interfejsu Text-to-Speech API, musisz go włączyć. Aby włączyć interfejs API, użyj 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żyć konta usługi. Konto usługi należy do Twojego projektu i jest używane przez bibliotekę klienta Google Node.js do tworzenia żądań interfejsu Text-to-Speech API. Podobnie jak każde inne konto użytkownika, konto usługi jest reprezentowane przez adres e-mail. W tej sekcji użyjesz pakietu SDK Cloud, aby utworzyć konto usługi, a następnie utworzysz dane logowania, które będą potrzebne do uwierzytelnienia się jako konto usługi.

Najpierw ustaw zmienną środowiskową wykorzystującą Twój GOOGLE_CLOUD_PROJECT, której będziesz używać podczas naszych ćwiczeń 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 kod Node.js będzie używać do logowania się na nowe konto usługi. Utworzone dane zapisz w pliku JSON „~/key.json” przy użyciu następującego 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, która jest używana przez bibliotekę Node.js interfejsu Text-to-Speech API (omówioną 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. Aby to zrobić, użyj tego 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, w którym będziesz uruchamiać to ćwiczenie z interfejsem Text-to-Speech API, i zainicjuj nowy pakiet Node.js w wybranym folderze:

npm init

NPM zadaje kilka pytań dotyczących konfiguracji projektu, np. nazwy i wersji. W przypadku każdego pytania naciśnij ENTER, aby zaakceptować wartości domyślne. Domyślny punkt wejścia to 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 dotyczących konfigurowania środowiska programistycznego Node.js na potrzeby Google Cloud znajdziesz w przewodniku konfiguracji.

Teraz możesz używać interfejsu Text-to-Speech API.

6. Wyświetlanie listy dostępnych głosów

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

Otwórz plik index.js i zastąp jego zawartość tym kodem:

'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ęć minutę lub dwie 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 przekształcić ciąg znaków w dane audio. Możesz skonfigurować wyjście syntezy mowy na różne sposoby, np. wybrać unikalny głos lub zmienić wysokość głosu, głośność, szybkość mowy i częstotliwość próbkowania.

Otwórz plik index.js i dodaj do niego 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 sprawdź, jak jest on używany do tworzenia pliku audio z 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 w 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 zamknąć, a następnie 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.