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$.
מפעילים את 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
קודם יוצרים פרויקט שבו יופעל ה-API הזה של Text-to-Speech, ומפעילים חבילת 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 כללי.