1. بررسی اجمالی
Google Cloud Text-to-Speech API به توسعه دهندگان این امکان را می دهد که گفتار انسان با صدای طبیعی و مصنوعی را به عنوان صدای قابل پخش در برنامه های خود بگنجانند. Text-to-Speech API ورودی متن یا زبان نشانه گذاری سنتز گفتار (SSML) را به داده های صوتی مانند MP3 یا LINEAR16 (رمزگذاری مورد استفاده در فایل های WAV) تبدیل می کند.
در این کد لبه، شما بر روی استفاده از API Text-to-Speech با Node.js تمرکز خواهید کرد. شما یاد خواهید گرفت که چگونه صداهای موجود را فهرست کنید و همچنین صدا را از متن ترکیب کنید.
چیزی که یاد خواهید گرفت
- نحوه استفاده از Cloud Shell
- نحوه فعال کردن Text-to-Speech API
- نحوه احراز هویت درخواست های API
- نحوه نصب کتابخانه سرویس گیرنده Google Cloud برای Node.js
- نحوه فهرست کردن صداهای موجود
- چگونه صدا را از متن ترکیب کنیم
آنچه شما نیاز دارید
نظرسنجی
چگونه از این آموزش استفاده خواهید کرد؟
تجربه خود را با Node.js چگونه ارزیابی می کنید؟
تجربه خود را در استفاده از سرویسهای پلتفرم ابری Google چگونه ارزیابی میکنید؟
2. راه اندازی و الزامات
تنظیم محیط خود به خود
- به کنسول Cloud وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. (اگر قبلاً یک حساب Gmail یا G Suite ندارید، باید یک حساب ایجاد کنید .)
شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID
نامیده خواهد شد.
- در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورتحساب را در Cloud Console فعال کنید .
اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. حتماً دستورالعملهای موجود در بخش «تمیز کردن» را دنبال کنید که به شما توصیه میکند چگونه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
Cloud Shell را فعال کنید
- از Cloud Console، روی Activate Cloud Shell کلیک کنید
.
اگر قبلاً Cloud Shell را راهاندازی نکردهاید، با یک صفحه میانی (زیر تاشو) روبرو میشوید که آن را توصیف میکند. اگر اینطور است، روی Continue کلیک کنید (و دیگر آن را نخواهید دید). در اینجا به نظر می رسد که آن صفحه یک بار مصرف:
تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این دایرکتوری اصلی 5 گیگابایتی دائمی را ارائه می دهد و در 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 را فعال کنید
قبل از اینکه بتوانید از 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
خود تنظیم کنید که در سراسر این کد لبه استفاده خواهید کرد:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
سپس، یک حساب سرویس جدید برای دسترسی به API Text-to-Speech با استفاده از:
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 که در مرحله بعد پوشش داده شده است، برای یافتن اعتبار شما استفاده می شود. متغیر محیطی باید با استفاده از:
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. تبریک می گویم!
شما یاد گرفتید که چگونه از API Text-to-Speech با استفاده از Node.js برای انجام انواع رونویسی روی فایل های صوتی استفاده کنید!
پاک کن
برای جلوگیری از تحمیل هزینه به حساب Google Cloud Platform برای منابع استفاده شده در این شروع سریع:
- به کنسول Cloud Platform بروید.
- پروژهای را که میخواهید تعطیل کنید انتخاب کنید، سپس روی «حذف» در بالا کلیک کنید: با این کار، پروژه برای حذف برنامهریزی میشود.
بیشتر بدانید
- Google Cloud Text-to-Speech API: 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/
مجوز
این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.