1. סקירה כללית
Google Cloud Text-to-Speech API מאפשר למפתחים לכלול באפליקציות שלהם אודיו שניתן להפעלה של דיבור אנושי סינתטי שנשמע טבעי. Text-to-Speech API ממיר טקסט או קלט של Speech Synthesis Markup Language (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.
העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי לא תהיה עלות בכלל. חשוב לפעול לפי ההוראות בקטע 'ניקוי' שבו מוסבר איך להשבית משאבים כדי שלא תחויבו אחרי שתסיימו את המדריך הזה. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300 USD.
מפעילים את Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.
הפעלת Cloud Shell
- ב-Cloud Console, לוחצים על Activate Cloud Shell
.
אם זו הפעם הראשונה שאתם מפעילים את Cloud Shell, יוצג לכם מסך ביניים (מתחת לקו הקיפול) עם תיאור של Cloud Shell. במקרה כזה, לוחצים על המשך (והמסך הזה לא יוצג לכם יותר). כך נראה המסך החד-פעמי:
יחלפו כמה רגעים עד שההקצאה והחיבור ל-Cloud Shell יושלמו.
המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-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, משתמשים בפקודה הבאה ב-Cloud Shell:
gcloud services enable texttospeech.googleapis.com
4. אימות בקשות API
כדי לשלוח בקשות ל-Text-to-Speech API, צריך להשתמש בחשבון שירות. חשבון שירות שייך לפרויקט שלכם, וספריית הלקוח של Google 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
קודם יוצרים פרויקט שבו יופעל ה-Text-to-Speech 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');
כדאי להקדיש דקה או שתיים ללימוד הקוד. מריצים את האפליקציה:
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. מעולה!
למדתם איך להשתמש ב-Text-to-Speech API באמצעות Node.js כדי לבצע תמלול מסוגים שונים בקובצי אודיו.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud Platform על המשאבים שבהם השתמשתם במדריך למתחילים הזה:
- עוברים אל Cloud Platform Console.
- בוחרים את הפרויקט שרוצים לסגור ולוחצים על 'מחיקה' בחלק העליון. הפעולה הזו מתזמנת את הפרויקט למחיקה.
מידע נוסף
- Google Cloud Text-to-Speech API: https://cloud.google.com/text-to-speech/docs
- Node.js ב-Google Cloud Platform: https://cloud.google.com/nodejs/
- לקוח Node.js של Google Cloud: https://googlecloudplatform.github.io/google-cloud-node/
רישיון
העבודה הזו בשימוש במסגרת רישיון Creative Commons שמותנה בייחוס כללי מגרסה 2.0.