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
Ankieta
Jak wykorzystasz ten samouczek?
Jak oceniasz korzystanie z Node.js?
Jak oceniasz swoje wrażenia z korzystania 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 wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail lub G Suite, musisz je utworzyć.
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
.
- 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
- W konsoli Cloud kliknij Aktywuj Cloud Shell
.
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:
Uzyskanie dostępu do Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.
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.
- 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
- Interfejs 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.