Node.js এর সাথে Text-to-Speech API ব্যবহার করা

১. সংক্ষিপ্ত বিবরণ

গুগল ক্লাউড টেক্সট-টু-স্পিচ এপিআই ডেভেলপারদের তাদের অ্যাপ্লিকেশনে প্লে করার যোগ্য অডিও হিসেবে স্বাভাবিক শোনায় এমন কৃত্রিম মানব কণ্ঠস্বর অন্তর্ভুক্ত করার সুযোগ দেয়। টেক্সট-টু-স্পিচ এপিআই টেক্সট বা স্পিচ সিন্থেসিস মার্কআপ ল্যাঙ্গুয়েজ (SSML) ইনপুটকে MP3 বা LINEAR16 (WAV ফাইলে ব্যবহৃত এনকোডিং) এর মতো অডিও ডেটাতে রূপান্তর করে।

এই কোডল্যাবে, আপনি Node.js-এর সাথে টেক্সট-টু-স্পিচ এপিআই (Text-to-Speech API) ব্যবহারের উপর মনোযোগ দেবেন। আপনি শিখবেন কীভাবে উপলব্ধ কণ্ঠস্বরগুলির তালিকা তৈরি করতে হয় এবং টেক্সট থেকে অডিও সংশ্লেষণ করতে হয়।

আপনি যা শিখবেন

  • ক্লাউড শেল কীভাবে ব্যবহার করবেন
  • টেক্সট-টু-স্পিচ এপিআই কীভাবে সক্রিয় করবেন
  • এপিআই অনুরোধগুলি কীভাবে প্রমাণীকরণ করবেন
  • Node.js-এর জন্য গুগল ক্লাউড ক্লায়েন্ট লাইব্রেরি কীভাবে ইনস্টল করবেন
  • উপলব্ধ ভয়েসগুলি কীভাবে তালিকাভুক্ত করবেন
  • টেক্সট থেকে কীভাবে অডিও তৈরি করবেন

আপনার যা যা লাগবে

  • একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রকল্প
  • একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
  • Node.js ব্যবহারে পরিচিতি

জরিপ

আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?

শুধু পুরোটা পড়ুন এটি পড়ুন এবং অনুশীলনগুলো সম্পূর্ণ করুন।

Node.js নিয়ে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

গুগল ক্লাউড প্ল্যাটফর্ম পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

২. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। (যদি আপনার আগে থেকে Gmail বা G Suite অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLpGtQd5Q55

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5 OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

প্রজেক্ট আইডিটি মনে রাখবেন, যা সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে ব্যবহৃত হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এই কোডল্যাবে এটিকে পরবর্তীতে PROJECT_ID হিসাবে উল্লেখ করা হবে।

  1. এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে।

এই কোডল্যাবটি চালাতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। "পরিষ্কার-পরিচ্ছন্নতা" (Cleaning up) বিভাগে দেওয়া নির্দেশাবলী অবশ্যই অনুসরণ করবেন, যেখানে রিসোর্স বন্ধ করার পরামর্শ দেওয়া হয়েছে, যাতে এই টিউটোরিয়ালের বাইরে আপনার কোনো বিল না আসে। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন। H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0Zz5LtwBlUZFXFCWFrmrWZLqg1MkZz2LdgUDQ .

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

আপনি যদি আগে কখনো ক্লাউড শেল চালু না করে থাকেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন (নিচে দেওয়া আছে) আপনার সামনে আসবে। যদি তাই হয়, তাহলে 'Continue'-তে ক্লিক করুন (এবং আপনি এটি আর কখনো দেখতে পাবেন না)। একবারের জন্য আসা সেই স্ক্রিনটি দেখতে এইরকম:

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

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার প্রায় সমস্ত কাজই শুধুমাত্র একটি ব্রাউজার বা আপনার ক্রোমবুক দিয়ে করা সম্ভব।

ক্লাউড শেলে সংযুক্ত হওয়ার পর আপনি দেখতে পাবেন যে, আপনাকে ইতিমধ্যেই প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
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].

৩. টেক্সট-টু-স্পিচ এপিআই সক্রিয় করুন।

টেক্সট-টু-স্পিচ এপিআই ব্যবহার শুরু করার আগে, আপনাকে অবশ্যই এপিআইটি সক্রিয় করতে হবে। ক্লাউড শেল-এ নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনি এপিআইটি সক্রিয় করতে পারেন:

gcloud services enable texttospeech.googleapis.com

৪. এপিআই অনুরোধ প্রমাণীকরণ করুন

টেক্সট-টু-স্পিচ এপিআই-তে অনুরোধ পাঠানোর জন্য, আপনাকে একটি সার্ভিস অ্যাকাউন্ট ব্যবহার করতে হবে। একটি সার্ভিস অ্যাকাউন্ট আপনার প্রোজেক্টের অন্তর্গত এবং গুগল ক্লায়েন্ট নোড.জেএস লাইব্রেরি টেক্সট-টু-স্পিচ এপিআই অনুরোধ পাঠানোর জন্য এটি ব্যবহার করে। অন্য যেকোনো ইউজার অ্যাকাউন্টের মতোই, একটি সার্ভিস অ্যাকাউন্ট একটি ইমেল অ্যাড্রেস দ্বারা চিহ্নিত করা হয়। এই অংশে, আপনি ক্লাউড এসডিকে ব্যবহার করে একটি সার্ভিস অ্যাকাউন্ট তৈরি করবেন এবং তারপর সেই সার্ভিস অ্যাকাউন্ট হিসেবে প্রমাণীকরণের জন্য প্রয়োজনীয় ক্রেডেনশিয়াল তৈরি করবেন।

প্রথমে, আপনার GOOGLE_CLOUD_PROJECT দিয়ে একটি এনভায়রনমেন্ট ভেরিয়েবল সেট করুন, যা আপনি এই কোডল্যাব জুড়ে ব্যবহার করবেন:

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

এরপরে, টেক্সট-টু-স্পিচ এপিআই অ্যাক্সেস করার জন্য নিম্নলিখিত পদ্ধতি ব্যবহার করে একটি নতুন সার্ভিস অ্যাকাউন্ট তৈরি করুন:

gcloud iam service-accounts create my-text-to-speech-sa \
  --display-name "my text-to-speech codelab service account"

এরপরে, এমন ক্রেডেনশিয়াল তৈরি করুন যা আপনার Node.js কোড নতুন সার্ভিস অ্যাকাউন্ট হিসেবে লগইন করতে ব্যবহার করবে। নিম্নলিখিত কমান্ডটি ব্যবহার করে এই ক্রেডেনশিয়ালগুলো তৈরি করুন এবং " ~/key.json " নামে একটি 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 এনভায়রনমেন্ট ভেরিয়েবলটি সেট করুন, যা আপনার ক্রেডেনশিয়াল খুঁজে পেতে পরবর্তী ধাপে আলোচিত টেক্সট-টু-স্পিচ এপিআই নোড.জেএস লাইব্রেরি দ্বারা ব্যবহৃত হয়। এনভায়রনমেন্ট ভেরিয়েবলটি আপনার তৈরি করা ক্রেডেনশিয়ালস JSON ফাইলের সম্পূর্ণ পাথে সেট করতে হবে, যা নিম্নোক্তভাবে ব্যবহার করা যাবে:

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

৫. Node.js-এর জন্য Google Cloud Text-to-Speech API ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন।

প্রথমে, এই টেক্সট-টু-স্পিচ এপিআই ল্যাবটি চালানোর জন্য একটি প্রজেক্ট তৈরি করুন এবং আপনার পছন্দের একটি ফোল্ডারে একটি নতুন Node.js প্যাকেজ ইনিশিয়ালাইজ করুন:

npm init

NPM প্রজেক্ট কনফিগারেশন সম্পর্কে নাম এবং ভার্সনের মতো বেশ কিছু প্রশ্ন জিজ্ঞাসা করে। প্রতিটি প্রশ্নের জন্য, ডিফল্ট মানগুলো গ্রহণ করতে ENTER চাপুন। ডিফল্ট এন্ট্রি পয়েন্ট হলো index.js নামের একটি ফাইল।

এরপরে, প্রজেক্টটিতে গুগল ক্লাউড স্পিচ লাইব্রেরিটি ইনস্টল করুন:

npm install --save @google-cloud/text-to-speech

গুগল ক্লাউডের জন্য কীভাবে Node.js ডেভেলপমেন্ট সেট আপ করবেন সে সম্পর্কে আরও নির্দেশাবলীর জন্য অনুগ্রহ করে সেটআপ গাইডটি দেখুন।

এখন আপনি টেক্সট-টু-স্পিচ এপিআই ব্যবহার করার জন্য প্রস্তুত!

৬. উপলব্ধ কণ্ঠস্বরগুলির তালিকা

এই অংশে, আপনি প্রথমে অডিও সিন্থেসিসের জন্য ইংরেজিতে উপলব্ধ সমস্ত ভয়েসের একটি তালিকা তৈরি করবেন।

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
...

৭. পাঠ্য থেকে অডিও সংশ্লেষণ করুন

আপনি একটি স্ট্রিংকে অডিও ডেটাতে রূপান্তর করতে টেক্সট-টু-স্পিচ এপিআই ব্যবহার করতে পারেন। আপনি স্পিচ সিন্থেসিসের আউটপুট বিভিন্ন উপায়ে কনফিগার করতে পারেন, যার মধ্যে রয়েছে একটি স্বতন্ত্র কণ্ঠস্বর নির্বাচন করা অথবা পিচ, ভলিউম, কথা বলার গতি এবং স্যাম্পল রেটে আউটপুট পরিবর্তন করা

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"

৮. অভিনন্দন!

আপনি শিখেছেন কীভাবে Node.js ব্যবহার করে টেক্সট-টু-স্পিচ এপিআই (Text-to-Speech API) দিয়ে অডিও ফাইলের বিভিন্ন ধরনের ট্রান্সক্রিপশন করতে হয়!

পরিষ্কার করা

এই কুইকস্টার্টে ব্যবহৃত রিসোর্সগুলির জন্য আপনার গুগল ক্লাউড প্ল্যাটফর্ম অ্যাকাউন্টে চার্জ হওয়া এড়াতে:

  • ক্লাউড প্ল্যাটফর্ম কনসোলে যান।
  • যে প্রজেক্টটি বন্ধ করতে চান, সেটি নির্বাচন করুন, তারপর উপরে থাকা 'ডিলিট' বোতামে ক্লিক করুন: এটি প্রজেক্টটিকে মুছে ফেলার জন্য নির্ধারিত করবে।

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে রয়েছে।