1. ภาพรวม
Google Cloud Text-to-Speech API ช่วยให้นักพัฒนาซอฟต์แวร์รวมเสียงพูดของมนุษย์ที่ฟังดูเป็นธรรมชาติและเป็นเสียงที่เล่นได้ในแอปพลิเคชันของตน Text-to-Speech API จะแปลงข้อความหรืออินพุตของภาษามาร์กอัปการสังเคราะห์เสียง (SSML) เป็นข้อมูลเสียง เช่น MP3 หรือ LINEAR16 (การเข้ารหัสที่ใช้ในไฟล์ WAV)
ใน Codelab นี้ คุณจะมุ่งเน้นที่การใช้ Text-to-Speech API กับ Node.js คุณจะได้เรียนรู้วิธีแสดงรายการเสียงที่ใช้ได้และสังเคราะห์เสียงจากข้อความด้วย
สิ่งที่คุณจะได้เรียนรู้
- วิธีใช้ Cloud Shell
- วิธีเปิดใช้ Text-to-Speech API
- วิธีตรวจสอบสิทธิ์คำขอ API
- วิธีติดตั้งไลบรารีของไคลเอ็นต์ Google Cloud สำหรับ Node.js
- วิธีแสดงรายการเสียงที่ใช้ได้
- วิธีการสังเคราะห์เสียงจากข้อความ
สิ่งที่คุณต้องมี
แบบสำรวจ
คุณจะใช้บทแนะนำนี้อย่างไร
คุณจะให้คะแนนประสบการณ์การใช้งาน Node.js มากน้อยเพียงใด
คุณจะให้คะแนนความพึงพอใจสำหรับประสบการณ์การใช้บริการ Google Cloud Platform อย่างไร
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
- ลงชื่อเข้าใช้ Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)
โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีคนใช้แล้ว และจะใช้ไม่ได้ ขออภัย) และจะมีการอ้างอิงใน Codelab ว่า PROJECT_ID
ในภายหลัง
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud
การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี ตรวจสอบว่าคุณได้ทำตามวิธีการใน "การล้างข้อมูล" ซึ่งจะแนะนำคุณเกี่ยวกับวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab นี้
เปิดใช้งาน Cloud Shell
- คลิกเปิดใช้งาน Cloud Shell
จาก Cloud Console
หากคุณไม่เคยเริ่มต้นใช้งาน Cloud Shell มาก่อน คุณจะเห็นหน้าจอตรงกลาง (ครึ่งหน้าล่าง) ซึ่งอธิบายว่านี่คืออะไร หากเป็นเช่นนั้น ให้คลิกดำเนินการต่อ (คุณจะไม่เห็นการดำเนินการนี้อีก) หน้าจอแบบครั้งเดียวมีลักษณะดังนี้
การจัดสรรและเชื่อมต่อกับ Cloud Shell ใช้เวลาเพียงไม่กี่นาที
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ทำงานอย่างต่อเนื่องใน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานส่วนใหญ่ใน Codelab นี้สามารถทำได้โดยใช้เบราว์เซอร์หรือ Chromebook เท่านั้น
เมื่อเชื่อมต่อกับ Cloud Shell คุณควรเห็นว่าได้รับการตรวจสอบสิทธิ์แล้ว และโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์แล้ว
- เรียกใช้คำสั่งต่อไปนี้ใน 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
ก่อนที่จะเริ่มใช้ Text-to-Speech API คุณต้องเปิดใช้ API คุณเปิดใช้ API ได้โดยใช้คำสั่งต่อไปนี้ใน Cloud Shell
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
ซึ่งคุณจะใช้ตลอดทั้ง Codelab นี้
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
ซึ่งใช้โดยไลบรารี Node.js ของ Text-to-Speech API ซึ่งจะกล่าวถึงในขั้นตอนถัดไป เพื่อค้นหาข้อมูลเข้าสู่ระบบของคุณ ควรตั้งค่าตัวแปรสภาพแวดล้อมเป็นเส้นทางแบบเต็มของไฟล์ JSON ของข้อมูลเข้าสู่ระบบที่คุณสร้างขึ้น โดยใช้สิ่งต่อไปนี้
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
5. ติดตั้งไลบรารีไคลเอ็นต์ Google Cloud Text-to-Speech API สำหรับ Node.js
ก่อนอื่นให้สร้างโปรเจ็กต์ที่คุณจะใช้ห้องทดลอง API การอ่านออกเสียงข้อความ แล้วเริ่มต้นแพ็กเกจ Node.js ใหม่ในโฟลเดอร์ที่ต้องการ
npm init
NPM ถามคำถามหลายข้อเกี่ยวกับการกำหนดค่าโปรเจ็กต์ เช่น ชื่อและเวอร์ชัน กด ENTER
เพื่อยอมรับค่าเริ่มต้นสำหรับคำถามแต่ละข้อ จุดแรกเข้าเริ่มต้นคือไฟล์ชื่อ index.js
ต่อไป ให้ติดตั้งไลบรารี Google Cloud Speech ลงในโปรเจ็กต์
npm install --save @google-cloud/text-to-speech
โปรดดูคำแนะนำเพิ่มเติมเกี่ยวกับวิธีตั้งค่าการพัฒนา Node.js สำหรับ Google Cloud ในคู่มือการตั้งค่า
ตอนนี้คุณพร้อมใช้งาน 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');
ใช้เวลา 1-2 นาทีเพื่อศึกษาโค้ด เรียกใช้แอป
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();
ใช้เวลา 1-2 นาทีศึกษาโค้ดและดูว่ามีการใช้โค้ดนี้ในการสร้างไฟล์เสียงจากข้อความอย่างไร
node .
คุณควรจะเห็นผลลัพธ์ต่อไปนี้
Audio content written to file "output.mp3"
8. ยินดีด้วย
คุณได้เรียนรู้วิธีใช้ Text-to-Speech API โดยใช้ Node.js เพื่อถอดเสียงเป็นคำในไฟล์เสียงแบบต่างๆ แล้ว
ล้างข้อมูล
เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud Platform สำหรับทรัพยากรที่ใช้ในการเริ่มต้นอย่างรวดเร็วนี้ ควรทำดังนี้
- ไปที่คอนโซล Cloud Platform
- เลือกโครงการที่คุณต้องการปิดการทำงาน แล้วคลิก "ลบ" ที่ด้านบน: การดำเนินการนี้จะกำหนดเวลาการลบโปรเจ็กต์
ดูข้อมูลเพิ่มเติม
- API การอ่านออกเสียงข้อความของ Google Cloud: https://cloud.google.com/text-to-speech/docs
- Node.js บน Google Cloud Platform: https://cloud.google.com/nodejs/
- ไคลเอ็นต์ Google Cloud Node.js: https://googlecloudplatform.github.io/google-cloud-node/
ใบอนุญาต
ผลงานนี้ได้รับอนุญาตภายใต้ใบอนุญาตทั่วไปครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 2.0