استفاده از Text-to-Speech API با Node.js

۱. مرور کلی

رابط برنامه‌نویسی کاربردی متن به گفتار گوگل کلود به توسعه‌دهندگان اجازه می‌دهد تا گفتار مصنوعی و طبیعی انسان را به عنوان صدای قابل پخش در برنامه‌های خود بگنجانند. این رابط برنامه‌نویسی کاربردی، متن یا ورودی زبان نشانه‌گذاری سنتز گفتار (SSML) را به داده‌های صوتی مانند MP3 یا LINEAR16 (رمزگذاری مورد استفاده در فایل‌های WAV) تبدیل می‌کند.

در این آزمایشگاه کد، شما بر استفاده از API تبدیل متن به گفتار با Node.js تمرکز خواهید کرد. یاد خواهید گرفت که چگونه صداهای موجود را فهرست کنید و همچنین صدا را از متن ترکیب کنید.

آنچه یاد خواهید گرفت

  • نحوه استفاده از پوسته ابری
  • نحوه فعال کردن API تبدیل متن به گفتار
  • نحوه احراز هویت درخواست‌های API
  • نحوه نصب کتابخانه کلاینت گوگل کلود برای Node.js
  • نحوه فهرست کردن صداهای موجود
  • نحوه ترکیب صدا از متن

آنچه نیاز دارید

  • یک پروژه پلتفرم ابری گوگل
  • یک مرورگر، مانند کروم یا فایرفاکس
  • آشنایی با Node.js

نظرسنجی

چگونه از این آموزش استفاده خواهید کرد؟

فقط تا انتها بخوانید آن را بخوانید و تمرین‌ها را انجام دهید

تجربه خود را با Node.js چگونه ارزیابی می‌کنید؟

تازه کار متوسط ماهر

تجربه خود را در استفاده از خدمات پلتفرم ابری گوگل چگونه ارزیابی می‌کنید؟

تازه کار متوسط ماهر

۲. تنظیمات و الزامات

تنظیم محیط خودتنظیم

  1. وارد Cloud Console شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. (اگر از قبل حساب Gmail یا G Suite ندارید، باید یکی ایجاد کنید .)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aTQz5GpG0T

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5 OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه‌های Google Cloud (نام بالا قبلاً گرفته شده و برای شما کار نخواهد کرد، متاسفیم!). بعداً در این آزمایشگاه کد به آن PROJECT_ID گفته خواهد شد.

  1. در مرحله بعد، برای استفاده از منابع گوگل کلود، باید پرداخت را در Cloud Console فعال کنید .

اجرای این آزمایشگاه کد، اگر اصلاً هزینه‌ای نداشته باشد، نباید هزینه زیادی داشته باشد. حتماً دستورالعمل‌های بخش «پاکسازی» را که به شما نحوه خاموش کردن منابع را آموزش می‌دهد، دنبال کنید تا پس از این آموزش، متحمل هزینه نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.

شروع پوسته ابری

اگرچه می‌توان از راه دور و از طریق لپ‌تاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

فعال کردن پوسته ابری

  1. از کنسول ابری، روی فعال کردن پوسته ابری کلیک کنید H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0Zz5LtwBlUZFXFCWFrmrWZLqg1MkZz2LdgUDQ .

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

اگر قبلاً Cloud Shell را شروع نکرده‌اید، یک صفحه میانی (در زیر صفحه) به شما نمایش داده می‌شود که توضیح می‌دهد چیست. در این صورت، روی ادامه کلیک کنید (و دیگر هرگز آن را نخواهید دید). آن صفحه یکبار مصرف به این شکل است:

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoewT1SUjd6Y3h81RG3rKIkqhoVlFR-G7w

آماده‌سازی و اتصال به Cloud Shell فقط چند لحظه طول می‌کشد.

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

این ماشین مجازی با تمام ابزارهای توسعه‌ای که نیاز دارید، مجهز شده است. این ماشین یک دایرکتوری خانگی ۵ گیگابایتی پایدار ارائه می‌دهد و در فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود می‌بخشد. بخش عمده‌ای از کار شما در این آزمایشگاه کد، اگر نگوییم همه، را می‌توان به سادگی با یک مرورگر یا کروم‌بوک انجام داد.

پس از اتصال به Cloud Shell، باید ببینید که از قبل احراز هویت شده‌اید و پروژه از قبل روی شناسه پروژه شما تنظیم شده است.

  1. برای تأیید احراز هویت، دستور زیر را در 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].

۳. فعال کردن API تبدیل متن به گفتار

قبل از اینکه بتوانید از API تبدیل متن به گفتار استفاده کنید، باید آن را فعال کنید. می‌توانید با استفاده از دستور زیر در Cloud Shell، API را فعال کنید:

gcloud services enable texttospeech.googleapis.com

۴. درخواست‌های API را تأیید اعتبار کنید

برای ارسال درخواست به API تبدیل متن به گفتار، باید از یک حساب کاربری سرویس (Service Account) استفاده کنید. یک حساب کاربری سرویس متعلق به پروژه شماست و توسط کتابخانه Google Client Node.js برای ارسال درخواست‌های API تبدیل متن به گفتار استفاده می‌شود. مانند هر حساب کاربری دیگر، یک حساب کاربری سرویس با یک آدرس ایمیل نمایش داده می‌شود. در این بخش، شما از Cloud SDK برای ایجاد یک حساب کاربری سرویس استفاده خواهید کرد و سپس اعتبارنامه‌هایی را که برای تأیید اعتبار به عنوان حساب کاربری سرویس نیاز دارید، ایجاد خواهید کرد.

ابتدا، یک متغیر محیطی با GOOGLE_CLOUD_PROJECT خود تنظیم کنید که در طول این کد از آن استفاده خواهید کرد:

export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)

در مرحله بعد، با استفاده از دستور زیر، یک حساب کاربری سرویس جدید برای دسترسی به 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 API Text-to-Speech استفاده می‌شود و در مرحله بعدی به آن پرداخته می‌شود، برای یافتن اعتبارنامه‌های خود تنظیم کنید. متغیر محیطی باید با استفاده از دستور زیر، روی مسیر کامل فایل JSON اعتبارنامه‌هایی که ایجاد کرده‌اید تنظیم شود:

export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"

۵. کتابخانه کلاینت 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، لطفاً به راهنمای راه‌اندازی مراجعه کنید.

حالا، شما آماده استفاده از API تبدیل متن به گفتار هستید!

۶. فهرست کردن صداهای موجود

در این بخش، ابتدا تمام صداهای موجود به زبان انگلیسی را برای ترکیب صدا فهرست خواهید کرد.

به فایل 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
...

۷. ترکیب صدا از متن

شما می‌توانید از 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"

۸. تبریک می‌گویم!

شما یاد گرفتید که چگونه از API تبدیل متن به گفتار با استفاده از Node.js برای انجام انواع مختلف رونویسی روی فایل‌های صوتی استفاده کنید!

تمیز کردن

برای جلوگیری از تحمیل هزینه به حساب پلتفرم گوگل کلود خود برای منابع استفاده شده در این راهنمای سریع:

  • به کنسول پلتفرم ابری بروید.
  • پروژه‌ای را که می‌خواهید خاموش کنید انتخاب کنید، سپس روی «حذف» در بالا کلیک کنید: این کار پروژه را برای حذف زمان‌بندی می‌کند.

اطلاعات بیشتر

مجوز

این اثر تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است.