1. 總覽
Google Cloud Text-to-Speech API 可讓開發人員在應用程式中加入自然的合成人類語音,做為可播放的音訊。Text-to-Speech API 將文字或語音合成標記語言 (SSML) 輸入轉換成音訊資料,例如 MP3 或 LINEAR16 (WAV 檔案使用的編碼)。
在本程式碼研究室中,您將專注於搭配 Node.js 使用 Text-to-Speech API。您將瞭解如何列出可用的語音,以及如何從文字合成音訊。
課程內容
- 如何使用 Cloud Shell
- 如何啟用 Text-to-Speech API
- 如何驗證 API 要求
- 如何安裝 Node.js 適用的 Google Cloud 用戶端程式庫
- 如何列出可用的語音
- 如何從文字合成音訊
軟硬體需求
問卷調查
您會如何使用這個教學課程?
您對 Node.js 的使用體驗有何評價?
根據您使用 Google Cloud Platform 服務的經驗,您會給予什麼評價?
2. 設定和需求
自修環境設定
提醒您,專案 ID 是所有 Google Cloud 專案的專屬名稱 (已經有人使用上述名稱,很抱歉對您不符!)。稍後在本程式碼研究室中會稱為 PROJECT_ID
。
- 接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Google Cloud 資源。
執行這個程式碼研究室並不會產生任何費用,如果有的話。請務必依照「清除所用資源」一節指示本節將說明如何關閉資源,這樣您就不會產生本教學課程結束後產生的費用。Google Cloud 的新使用者符合 $300 美元免費試用計畫的資格。
啟動 Cloud Shell
雖然 Google Cloud 可以從筆記型電腦遠端操作,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是一種在 Cloud 中執行的指令列環境。
啟用 Cloud Shell
- 在 Cloud 控制台中,按一下「啟用 Cloud Shell」圖示
。
如果您從未啟動 Cloud Shell,您會看見中繼畫面 (需捲動位置),說明螢幕內容。如果出現這種情況,請按一下「繼續」 (之後不會再顯示)。以下是單次畫面的外觀:
佈建並連線至 Cloud Shell 只需幾分鐘的時間。
這部虛擬機器都裝載了您需要的所有開發工具。提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,大幅提高網路效能和驗證能力。在本程式碼研究室中,您的大部分作業都可以透過瀏覽器或 Chromebook 完成。
連線至 Cloud Shell 後,您應會發現自己通過驗證,且專案已設為您的專案 ID。
- 在 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. 啟用 Text-to-Speech API
您必須先啟用 API,才能開始使用 Text-to-Speech API。您可以在 Cloud Shell 中使用下列指令啟用 API:
gcloud services enable texttospeech.googleapis.com
4. 驗證 API 要求
為了向 Text-to-Speech API 提出要求,您必須使用服務帳戶。服務帳戶屬於您的專案,供 Google Client Node.js 程式庫使用這個帳戶提出 Text-to-Speech API 要求。就像任何其他使用者帳戶一樣,服務帳戶都是以電子郵件地址表示。在本節中,您將使用 Cloud SDK 建立服務帳戶,然後建立必要憑證以服務帳戶身分進行驗證。
首先,使用 GOOGLE_CLOUD_PROJECT
設定環境變數,您在本程式碼研究室中都會使用這個變數:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
接著,使用以下指令建立新的服務帳戶來存取 Text-to-Speech 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
環境變數,這是 Text-to-Speech API Node.js 程式庫所用的變數 (會在下個步驟中介紹) 以尋找您的憑證。使用以下指令,環境變數應設為所建立 JSON 憑證檔案的完整路徑:
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
5. 安裝 Node.js 適用的 Google Cloud Text-to-Speech API 用戶端程式庫
首先,請建立用於執行這個 Text-to-Speech API 研究室的專案,並在您選擇的資料夾中初始化新的 Node.js 套件:
npm init
NPM 會針對專案設定詢問幾個相關問題,例如名稱和版本。針對每個問題,按 ENTER
即可接受預設值。預設進入點是名為 index.js
的檔案。
接著,將 Google Cloud Speech 程式庫安裝到專案:
npm install --save @google-cloud/text-to-speech
如要進一步瞭解如何設定 Google Cloud 適用的 Node.js 開發作業,請參閱設定指南。
現在您可以開始使用 Text-to-Speech 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. 從文字合成音訊
您可以使用 Text-to-Speech 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. 恭喜!
您已瞭解如何使用 Node.js 來使用 Text-to-Speech API,對音訊檔案執行不同類型的語音轉錄!
清除所用資源
如何避免系統向您的 Google Cloud Platform 帳戶收取您在本快速入門導覽課程中所用資源的相關費用:
- 前往 Cloud Platform 主控台。
- 選取您要關閉的專案,然後按一下「刪除」會安排將專案刪除。
瞭解詳情
- Google Cloud Text-to-Speech API:https://cloud.google.com/text-to-speech/docs
- Google Cloud Platform 上的 Node.js:https://cloud.google.com/nodejs/
- Google Cloud Node.js 用戶端:https://googlecloudplatform.github.io/google-cloud-node/
授權
這項內容採用的是創用 CC 姓名標示 2.0 通用授權。