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

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

এই কোডল্যাব সম্পর্কে

subjectডিসে ১৫, ২০২২-এ শেষবার আপডেট করা হয়েছে
account_circleAnu Srivastava-এর লেখা

1. ওভারভিউ

Google ক্লাউড স্পিচ-টু-টেক্সট API ব্যবহার করা সহজ API-এ শক্তিশালী নিউরাল নেটওয়ার্ক মডেল প্রয়োগ করে 120টি ভাষা এবং ভেরিয়েন্টে অডিওকে টেক্সটে রূপান্তর করতে ডেভেলপারদের সক্ষম করে।

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

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

আপনি কি প্রয়োজন হবে

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

সমীক্ষা

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

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

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

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

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

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

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCemXuD0pdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCemXuD0pdYncY5Gv3GU Zw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLpGtQd5Q55

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3oK3o67gCu67jCGUJCGUX67j

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

  1. এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷

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

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

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

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

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0ZFZkWt2QLZWR5 dgUDQ .

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb- IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFGUXM2QUZQ4 2ecHrbzQ

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

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoew65-fi2LJo4twUoew65-fi2LJo4twUoew6rq-13SUj

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

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7OD6P1I47nz8vrAdK7yPgxyPvR8 hA

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

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

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

3. স্পিচ-টু-টেক্সট API সক্ষম করুন

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

gcloud services enable speech.googleapis.com

4. API অনুরোধ প্রমাণীকরণ

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

প্রথমে, আপনার PROJECT_ID এর সাথে একটি পরিবেশ পরিবর্তনশীল সেট করুন যা আপনি এই কোডল্যাব জুড়ে ব্যবহার করবেন, যদি আপনি ক্লাউড শেল ব্যবহার করেন তবে এটি আপনার জন্য সেট করা হবে:

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

এর পরে, ব্যবহার করে স্পিচ-টু-টেক্সট API অ্যাক্সেস করতে একটি নতুন পরিষেবা অ্যাকাউন্ট তৈরি করুন:

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

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

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

আপনি স্পিচ-টু-টেক্সট API প্রমাণীকরণ সম্পর্কে আরও পড়তে পারেন।

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

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

npm init

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

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

npm install --save @google-cloud/speech

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

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

6. অডিও ফাইল প্রতিলিপি

এই বিভাগে, আপনি ইংরেজিতে একটি প্রাক-রেকর্ড করা অডিও ফাইল প্রতিলিপি করবেন। অডিও ফাইলটি Google ক্লাউড স্টোরেজে উপলব্ধ।

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 প্যারামিটার API কে বলে যে আপনি অডিও ফাইলের জন্য কোন ধরনের অডিও এনকোডিং ব্যবহার করছেন। Flac হল .raw ফাইলের এনকোডিং টাইপ (আরো বিশদ বিবরণের জন্য এনকোডিং টাইপের জন্য ডক দেখুন)।

RecognitionAudio অবজেক্টে, আপনি ক্লাউড স্টোরেজে আমাদের অডিও ফাইলের uri অথবা অডিও ফাইলের জন্য স্থানীয় ফাইল পাথ API পাস করতে পারেন। এখানে, আমরা একটি ক্লাউড স্টোরেজ ইউরি ব্যবহার করছি।

প্রোগ্রাম চালান:

node .

আপনি নিম্নলিখিত আউটপুট দেখতে হবে:

how old is the Brooklyn Bridge

7. শব্দ টাইমস্ট্যাম্প দিয়ে প্রতিলিপি

স্পিচ-টু-টেক্সট প্রতিলিপিকৃত অডিওর জন্য টাইম অফসেট (টাইমস্ট্যাম্প) সনাক্ত করতে পারে। সময় অফসেটগুলি সরবরাহ করা অডিওতে প্রতিটি উচ্চারিত শব্দের শুরু এবং শেষ দেখায়। একটি সময়ের অফসেট মান 100ms এর বৃদ্ধিতে অডিওর শুরু থেকে অতিবাহিত সময়ের পরিমাণকে উপস্থাপন করে।

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

8. বিভিন্ন ভাষা প্রতিলিপি

স্পিচ-টু-টেক্সট API 100 টিরও বেশি ভাষায় প্রতিলিপি সমর্থন করে! আপনি এখানে সমর্থিত ভাষার একটি তালিকা পেতে পারেন।

এই বিভাগে, আপনি ফরাসি ভাষায় একটি প্রাক-রেকর্ড করা অডিও ফাইল প্রতিলিপি করবেন। অডিও ফাইলটি Google ক্লাউড স্টোরেজে উপলব্ধ।

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

এটি একটি জনপ্রিয় ফরাসি শিশুদের গল্পের একটি বাক্য।

সমর্থিত ভাষা এবং ভাষা কোডের সম্পূর্ণ তালিকার জন্য, এখানে ডকুমেন্টেশন দেখুন।

9. অভিনন্দন!

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

পরিষ্কার করুন

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

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

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।