১. সংক্ষিপ্ত বিবরণ
গুগল ক্লাউড স্পিচ-টু-টেক্সট এপিআই একটি সহজে ব্যবহারযোগ্য এপিআই-এর মাধ্যমে শক্তিশালী নিউরাল নেটওয়ার্ক মডেল প্রয়োগ করে ডেভেলপারদের ১২০টি ভাষা ও তার উপভাষায় অডিওকে টেক্সটে রূপান্তর করতে সক্ষম করে।
এই কোডল্যাবে, আপনি Node.js-এর সাথে স্পিচ-টু-টেক্সট এপিআই (Speech-to-Text API) ব্যবহারের উপর মনোযোগ দেবেন। আপনি শিখবেন কীভাবে ট্রান্সক্রিপশনের জন্য ইংরেজি এবং অন্যান্য ভাষার অডিও ফাইল ক্লাউড স্পিচ-টু-টেক্সট এপিআই-তে পাঠাতে হয়।
আপনি যা শিখবেন
- স্পিচ-টু-টেক্সট এপিআই কীভাবে সক্রিয় করবেন
- এপিআই অনুরোধগুলি কীভাবে প্রমাণীকরণ করবেন
- Node.js-এর জন্য গুগল ক্লাউড ক্লায়েন্ট লাইব্রেরি কীভাবে ইনস্টল করবেন
- ইংরেজিতে অডিও ফাইল কীভাবে প্রতিলিপি করবেন
- ওয়ার্ড টাইমস্ট্যাম্প ব্যবহার করে অডিও ফাইল কীভাবে ট্রান্সক্রাইব করবেন
- বিভিন্ন ভাষায় অডিও ফাইল কীভাবে প্রতিলিপি করবেন
আপনার যা যা লাগবে
- একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রকল্প
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
- জাভাস্ক্রিপ্ট/নোড.জেএস ব্যবহারে পরিচিতি
জরিপ
আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?
Node.js নিয়ে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
গুগল ক্লাউড প্ল্যাটফর্ম পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
২. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিতে পরিবেশ সেটআপ
- ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। (যদি আপনার আগে থেকে Gmail বা G Suite অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)
প্রজেক্ট আইডিটি মনে রাখবেন, যা সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে ব্যবহৃত হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এই কোডল্যাবে এটিকে পরবর্তীতে PROJECT_ID হিসাবে উল্লেখ করা হবে।
- এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে।
এই কোডল্যাবটি চালাতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। "পরিষ্কার-পরিচ্ছন্নতা" (Cleaning up) বিভাগে দেওয়া নির্দেশাবলী অবশ্যই অনুসরণ করবেন, যেখানে রিসোর্স বন্ধ করার পরামর্শ দেওয়া হয়েছে, যাতে এই টিউটোরিয়ালের বাইরে আপনার কোনো বিল না আসে। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
ক্লাউড শেল শুরু করুন
যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।
ক্লাউড শেল সক্রিয় করুন
- ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন।
.
আপনি যদি আগে কখনো ক্লাউড শেল চালু না করে থাকেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন (নিচে দেওয়া আছে) আপনার সামনে আসবে। যদি তাই হয়, তাহলে 'Continue'-তে ক্লিক করুন (এবং আপনি এটি আর কখনো দেখতে পাবেন না)। একবারের জন্য আসা সেই স্ক্রিনটি দেখতে এইরকম:
ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।
এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার প্রায় সমস্ত কাজই শুধুমাত্র একটি ব্রাউজার বা আপনার ক্রোমবুক দিয়ে করা সম্ভব।
ক্লাউড শেলে সংযুক্ত হওয়ার পর আপনি দেখতে পাবেন যে, আপনাকে ইতিমধ্যেই প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।
- আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
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 speech.googleapis.com
৪. এপিআই অনুরোধ প্রমাণীকরণ করুন
স্পিচ-টু-টেক্সট এপিআই-তে অনুরোধ পাঠানোর জন্য, আপনাকে একটি সার্ভিস অ্যাকাউন্ট ব্যবহার করতে হবে। একটি সার্ভিস অ্যাকাউন্ট আপনার প্রোজেক্টের অন্তর্গত এবং গুগল ক্লায়েন্ট নোড.জেএস লাইব্রেরি স্পিচ-টু-টেক্সট এপিআই অনুরোধ পাঠানোর জন্য এটি ব্যবহার করে। অন্য যেকোনো ইউজার অ্যাকাউন্টের মতোই, একটি সার্ভিস অ্যাকাউন্ট একটি ইমেল অ্যাড্রেস দ্বারা চিহ্নিত করা হয়। এই অংশে, আপনি ক্লাউড এসডিকে ব্যবহার করে একটি সার্ভিস অ্যাকাউন্ট তৈরি করবেন এবং তারপর সেই সার্ভিস অ্যাকাউন্ট হিসেবে প্রমাণীকরণের জন্য প্রয়োজনীয় ক্রেডেনশিয়াল তৈরি করবেন।
প্রথমে, আপনার PROJECT_ID দিয়ে একটি এনভায়রনমেন্ট ভেরিয়েবল সেট করুন, যা আপনি এই কোডল্যাব জুড়ে ব্যবহার করবেন। আপনি যদি ক্লাউড শেল ব্যবহার করেন, তবে এটি আপনার জন্য সেট করা থাকবে:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
এরপরে, স্পিচ-টু-টেক্সট এপিআই অ্যাক্সেস করার জন্য নিম্নলিখিত পদ্ধতি ব্যবহার করে একটি নতুন সার্ভিস অ্যাকাউন্ট তৈরি করুন:
gcloud iam service-accounts create my-speech-to-text-sa \
--display-name "my speech-to-text codelab service account"
এরপরে, এমন ক্রেডেনশিয়াল তৈরি করুন যা আপনার Node.js কোড নতুন সার্ভিস অ্যাকাউন্ট হিসেবে লগইন করতে ব্যবহার করবে। নিম্নলিখিত কমান্ডটি ব্যবহার করে এই ক্রেডেনশিয়ালগুলো তৈরি করুন এবং ~/key.json নামে একটি JSON ফাইল হিসেবে সংরক্ষণ করুন:
gcloud iam service-accounts keys create ~/key.json \
--iam-account my-speech-to-text-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
অবশেষে, GOOGLE_APPLICATION_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবলটি সেট করুন, যা আপনার ক্রেডেনশিয়াল খুঁজে পেতে পরবর্তী ধাপে আলোচিত স্পিচ-টু-টেক্সট এপিআই নোড.জেএস লাইব্রেরি দ্বারা ব্যবহৃত হয়। এনভায়রনমেন্ট ভেরিয়েবলটি আপনার তৈরি করা ক্রেডেনশিয়ালস JSON ফাইলের সম্পূর্ণ পাথে সেট করতে হবে, যা নিম্নোক্তভাবে ব্যবহার করা যাবে:
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
স্পিচ-টু-টেক্সট এপিআই-এর প্রমাণীকরণ সম্পর্কে আপনি আরও পড়তে পারেন।
৫. Node.js-এর জন্য Google Cloud Speech-to-Text API ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন।
প্রথমে, এই স্পিচ-টু-টেক্সট এপিআই ল্যাবটি চালানোর জন্য একটি প্রজেক্ট তৈরি করুন এবং আপনার পছন্দের একটি ফোল্ডারে একটি নতুন Node.js প্যাকেজ ইনিশিয়ালাইজ করুন:
npm init
NPM প্রজেক্ট কনফিগারেশন সম্পর্কে নাম এবং ভার্সনের মতো বেশ কিছু প্রশ্ন জিজ্ঞাসা করে। প্রতিটি প্রশ্নের জন্য, ডিফল্ট মানগুলো গ্রহণ করতে ENTER চাপুন। ডিফল্ট এন্ট্রি পয়েন্ট হলো index.js নামের একটি ফাইল।
এরপরে, প্রজেক্টটিতে গুগল ক্লাউড স্পিচ লাইব্রেরিটি ইনস্টল করুন:
npm install --save @google-cloud/speech
গুগল ক্লাউডের জন্য কীভাবে Node.js ডেভেলপমেন্ট সেট আপ করবেন সে সম্পর্কে আরও নির্দেশাবলীর জন্য অনুগ্রহ করে সেটআপ গাইডটি দেখুন।
এখন, আপনি স্পিচ-টু-টেক্সট এপিআই ব্যবহার করার জন্য প্রস্তুত!
৬. অডিও ফাইলগুলো প্রতিলিপি করুন
এই অংশে, আপনি আগে থেকে রেকর্ড করা একটি ইংরেজি অডিও ফাইল ট্রান্সক্রাইব করবেন। অডিও ফাইলটি গুগল ক্লাউড স্টোরেজে উপলব্ধ আছে।
index.js ফাইলের ভিতরে যান এবং কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন:
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'LINEAR16',
sampleRateHertz: 16000,
languageCode: 'en-US',
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
.map(result => result.alternatives[0].transcript)
.join('\n');
console.log(`Transcription: ${transcription}`);
}
quickstart();
এক বা দুই মিনিট সময় নিয়ে কোডটি দেখুন এবং বুঝুন এটি কীভাবে একটি অডিও ফাইল প্রতিলিপি করতে ব্যবহৃত হয়।
Encoding প্যারামিটারটি এপিআই-কে বলে দেয় যে আপনি অডিও ফাইলটির জন্য কোন ধরনের অডিও এনকোডিং ব্যবহার করছেন। .raw ফাইলগুলির জন্য এনকোডিংয়ের ধরন হলো Flac (আরও বিস্তারিত জানতে এনকোডিংয়ের ধরন সম্পর্কিত ডকুমেন্টেশন দেখুন)।
RecognitionAudio অবজেক্টে, আপনি এপিআই-কে ক্লাউড স্টোরেজে থাকা আমাদের অডিও ফাইলের ইউআরআই অথবা অডিও ফাইলটির লোকাল ফাইল পাথ পাস করতে পারেন। এখানে, আমরা একটি ক্লাউড স্টোরেজ ইউআরআই ব্যবহার করছি।
প্রোগ্রামটি চালান:
node .
আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:
how old is the Brooklyn Bridge
৭. শব্দের সময়চিহ্ন সহ প্রতিলিপি করুন
স্পিচ-টু-টেক্সট ট্রান্সক্রাইব করা অডিওর জন্য টাইম অফসেট (টাইমস্ট্যাম্প) শনাক্ত করতে পারে। টাইম অফসেট প্রদত্ত অডিওতে বলা প্রতিটি শব্দের শুরু এবং শেষ দেখায়। একটি টাইম অফসেট মান অডিওর শুরু থেকে অতিবাহিত সময়ের পরিমাণকে বোঝায়, যা ১০০ মিলিসেকেন্ডের ধাপে ধাপে পরিমাপ করা হয়।
index.js ফাইলের ভিতরে যান এবং কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন:
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'LINEAR16',
sampleRateHertz: 16000,
languageCode: 'en-US',
enableWordTimeOffsets: true,
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
response.results.forEach((result) => {
result.alternatives.forEach((alternative) => {
console.log(`Transcript: ${alternative.transcript}`);
console.log(`Word details:`);
console.log(` Word count ${alternative.words.length}`);
alternative.words.forEach((item) => {
console.log(` ${item.word}`);
const s = parseInt(item.startTime.seconds) +
item.startTime.nanos/1000000000;
console.log(` WordStartTime: ${s}s`);
const e = parseInt(item.endTime.seconds) +
item.endTime.nanos/1000000000;
console.log(` WordEndTime: ${e}s`);
});
});
});
}
quickstart();
এক বা দুই মিনিট সময় নিয়ে কোডটি দেখুন এবং বুঝুন এটি কীভাবে ওয়ার্ড টাইমস্ট্যাম্প সহ একটি অডিও ফাইল ট্রান্সক্রাইব করতে ব্যবহৃত হয়। EnableWordTimeOffsets প্যারামিটারটি API-কে টাইম অফসেট সক্রিয় করতে নির্দেশ দেয় (আরও বিস্তারিত জানতে ডকুমেন্টেশন দেখুন)।
আপনার প্রোগ্রামটি আবার চালান:
node .
আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:
Transcript: how old is the Brooklyn Bridge
Word details:
Word count 6
how
WordStartTime: 0s
WordEndTime: 0.3s
old
WordStartTime: 0.3s
WordEndTime: 0.6s
is
WordStartTime: 0.6s
WordEndTime: 0.8s
the
WordStartTime: 0.8s
WordEndTime: 0.9s
Brooklyn
WordStartTime: 0.9s
WordEndTime: 1.1s
Bridge
WordStartTime: 1.1s
WordEndTime: 1.4s
৮. বিভিন্ন ভাষা প্রতিলিপি করুন
স্পিচ-টু-টেক্সট এপিআই ১০০টিরও বেশি ভাষায় ট্রান্সক্রিপশন সমর্থন করে! সমর্থিত ভাষাগুলোর তালিকা আপনি এখানে খুঁজে পেতে পারেন।
এই অংশে, আপনি ফরাসি ভাষায় আগে থেকে রেকর্ড করা একটি অডিও ফাইল প্রতিলিপি করবেন। অডিও ফাইলটি গুগল ক্লাউড স্টোরেজে পাওয়া যাবে।
index.js ফাইলের ভিতরে যান এবং কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন:
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/corbeau_renard.flac';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'FLAC',
languageCode: 'fr-FR',
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
.map((result) => result.alternatives[0].transcript)
.join('\n');
console.log(`Transcription: ${transcription}`);
}
quickstart();
আপনার প্রোগ্রামটি আবার চালান এবং আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:
maître corbeau sur un arbre perché tenait en son bec un fromage
এটি একটি জনপ্রিয় ফরাসি শিশুতোষ গল্পের একটি বাক্য।
সমর্থিত ভাষা এবং ভাষা কোডগুলির সম্পূর্ণ তালিকার জন্য, এখানে ডকুমেন্টেশন দেখুন।
৯. অভিনন্দন!
আপনি শিখেছেন কীভাবে Node.js ব্যবহার করে স্পিচ-টু-টেক্সট এপিআই (Speech-to-Text API)-এর সাহায্যে অডিও ফাইলের বিভিন্ন ধরনের ট্রান্সক্রিপশন করতে হয়!
পরিষ্কার করা
এই কুইকস্টার্টে ব্যবহৃত রিসোর্সগুলির জন্য আপনার গুগল ক্লাউড প্ল্যাটফর্ম অ্যাকাউন্টে চার্জ হওয়া এড়াতে:
- ক্লাউড প্ল্যাটফর্ম কনসোলে যান।
- যে প্রজেক্টটি বন্ধ করতে চান, সেটি নির্বাচন করুন, তারপর উপরে থাকা 'ডিলিট' বোতামে ক্লিক করুন: এটি প্রজেক্টটিকে মুছে ফেলার জন্য নির্ধারিত করবে।
আরও জানুন
- গুগল ক্লাউড স্পিচ-টু-টেক্সট এপিআই: https://cloud.google.com/speech-to-text/docs
- গুগল ক্লাউড প্ল্যাটফর্মে নোড.জেএস: https://cloud.google.com/nodejs/
- গুগল ক্লাউড নোড.জেএস ক্লায়েন্ট: https://googlecloudplatform.github.io/google-cloud-node/
লাইসেন্স
এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে রয়েছে।