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
Ankieta
Jak zamierzasz korzystać z tego samouczka?
Jak oceniasz swoje doświadczenie z Node.js?
Jak oceniasz korzystanie z usług Google Cloud Platform?
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- 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ć).
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.
- 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
- W konsoli Cloud kliknij Aktywuj Cloud Shell
.
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:
Uzyskanie dostępu do środowiska Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.
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.
- 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
- Google Cloud Text-to-Speech API: https://cloud.google.com/text-to-speech/docs
- Node.js w Google Cloud Platform: https://cloud.google.com/nodejs/
- Klient Google Cloud Node.js: https://googlecloudplatform.github.io/google-cloud-node/
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.