C# এর সাথে স্পিচ-টু-টেক্সট API ব্যবহার করা

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

গুগল ক্লাউড স্পিচ-টু-টেক্সট এপিআই একটি সহজে ব্যবহারযোগ্য এপিআই-এর মাধ্যমে শক্তিশালী নিউরাল নেটওয়ার্ক মডেল প্রয়োগ করে ডেভেলপারদের ১২০টি ভাষা ও তার উপভাষায় অডিওকে টেক্সটে রূপান্তর করতে সক্ষম করে।

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

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

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

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

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

জরিপ

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

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

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

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

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

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

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

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

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে।
  • আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
  1. এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

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

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

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

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

cb81e7c8e34bc8d.png

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

d95252b003979716.png

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

7833d5e1c5d18f54.png

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

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

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি তা না থাকে, তবে আপনি এই কমান্ডটি দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

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

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

gcloud services enable speech.googleapis.com

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

প্রথমে, একটি সহজ C# কনসোল অ্যাপ্লিকেশন তৈরি করুন যা আপনি স্পিচ-টু-টেক্সট এপিআই নমুনাগুলো চালানোর জন্য ব্যবহার করবেন:

dotnet new console -n SpeechToTextApiDemo

অ্যাপ্লিকেশনটি তৈরি হতে এবং নির্ভরতাগুলো সমাধান হতে দেখবেন:

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

এরপর, SpeechToTextApiDemo ফোল্ডারে যান:

cd SpeechToTextApiDemo/

এবং প্রজেক্টে Google.Cloud.Speech.V1 NuGet প্যাকেজটি যোগ করুন:

dotnet add package Google.Cloud.Speech.V1
info : Adding PackageReference for package 'Google.Cloud.Speech.V1' into project '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.
log  : Restoring packages for /home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Speech.V1' version '1.0.1' added to file '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.

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

৫. অডিও ফাইলগুলো প্রতিলিপি করুন

এই অংশে, আপনি আগে থেকে রেকর্ড করা একটি ইংরেজি অডিও ফাইল ট্রান্সক্রাইব করবেন। অডিও ফাইলটি গুগল ক্লাউড স্টোরেজে উপলব্ধ আছে।

একটি অডিও ফাইল ট্রান্সক্রাইব করতে, ক্লাউড শেলের উপরের ডান দিক থেকে কোড এডিটরটি খুলুন:

fd3fc1303e63572.png

SpeechToTextApiDemo ফোল্ডারের ভিতরে থাকা Program.cs ফাইলটিতে যান এবং কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                SampleRateHertz = 16000,
                LanguageCode = LanguageCodes.English.UnitedStates
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");         
            
            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine(alternative.Transcript);
                }
            }
        }
    }
}

এক বা দুই মিনিট সময় নিয়ে কোডটি দেখুন এবং বুঝুন এটি কীভাবে একটি অডিও ফাইল প্রতিলিপি করতে ব্যবহৃত হয়।

Encoding প্যারামিটারটি এপিআই-কে বলে দেয় যে আপনি অডিও ফাইলটির জন্য কোন ধরনের অডিও এনকোডিং ব্যবহার করছেন। .raw ফাইলগুলির জন্য এনকোডিংয়ের ধরন হলো Flac (আরও বিস্তারিত জানতে এনকোডিংয়ের ধরন সম্পর্কিত ডকুমেন্টেশন দেখুন)।

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

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান:

dotnet run

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

how old is the Brooklyn Bridge

সারসংক্ষেপ

এই ধাপে, আপনি একটি অডিও ফাইল ইংরেজিতে প্রতিলিপি করতে এবং ফলাফলটি প্রিন্ট করতে সক্ষম হয়েছেন। প্রতিলিপি তৈরি সম্পর্কে আরও পড়ুন।

৬. শব্দের সময়চিহ্ন সহ প্রতিলিপি করুন

স্পিচ-টু-টেক্সট ট্রান্সক্রাইব করা অডিওর জন্য টাইম অফসেট (টাইমস্ট্যাম্প) শনাক্ত করতে পারে। টাইম অফসেট প্রদত্ত অডিওতে বলা প্রতিটি শব্দের শুরু এবং শেষ দেখায়। একটি টাইম অফসেট মান অডিওর শুরু থেকে অতিবাহিত সময়ের পরিমাণকে বোঝায়, যা ১০০ মিলিসেকেন্ডের ধাপে ধাপে পরিমাপ করা হয়।

টাইম অফসেট সহ একটি অডিও ফাইল ট্রান্সক্রাইব করতে, SpeechToTextApiDemo ফোল্ডারের ভিতরে থাকা Program.cs ফাইলে যান এবং কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                SampleRateHertz = 16000,
                LanguageCode = LanguageCodes.English.UnitedStates,
                EnableWordTimeOffsets = true
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");
     
            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine($"Transcript: { alternative.Transcript}");
                    Console.WriteLine("Word details:");
                    Console.WriteLine($" Word count:{alternative.Words.Count}");
                    foreach (var item in alternative.Words)
                    {
                        Console.WriteLine($"  {item.Word}");
                        Console.WriteLine($"    WordStartTime: {item.StartTime}");
                        Console.WriteLine($"    WordEndTime: {item.EndTime}");
                    }
                }
            }
        }
    }
}

এক বা দুই মিনিট সময় নিয়ে কোডটি দেখুন এবং বুঝুন এটি কীভাবে ওয়ার্ড টাইমস্ট্যাম্প সহ একটি অডিও ফাইল ট্রান্সক্রাইব করতে ব্যবহৃত হয়। EnableWordTimeOffsets প্যারামিটারটি API-কে টাইম অফসেট সক্রিয় করতে নির্দেশ দেয় (আরও বিস্তারিত জানতে ডকুমেন্টেশন দেখুন)।

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান:

dotnet run

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

dotnet run

Transcript: how old is the Brooklyn Bridge
Word details:
 Word count:6
  how
    WordStartTime: "0s"
    WordEndTime: "0.300s"
  old
    WordStartTime: "0.300s"
    WordEndTime: "0.600s"
  is
    WordStartTime: "0.600s"
    WordEndTime: "0.800s"
  the
    WordStartTime: "0.800s"
    WordEndTime: "0.900s"
  Brooklyn
    WordStartTime: "0.900s"
    WordEndTime: "1.100s"
  Bridge
    WordStartTime: "1.100s"
    WordEndTime: "1.500s"

সারসংক্ষেপ

এই ধাপে, আপনি শব্দের টাইমস্ট্যাম্প সহ একটি ইংরেজি অডিও ফাইল ট্রান্সক্রাইব করতে এবং ফলাফলটি প্রিন্ট করতে সক্ষম হয়েছেন। ওয়ার্ড অফসেট ব্যবহার করে ট্রান্সক্রাইবিং সম্পর্কে আরও পড়ুন।

৭. বিভিন্ন ভাষার প্রতিলিপি তৈরি করুন

স্পিচ-টু-টেক্সট এপিআই ১০০টিরও বেশি ভাষায় ট্রান্সক্রিপশন সমর্থন করে! সমর্থিত ভাষাগুলোর তালিকা আপনি এখানে খুঁজে পেতে পারেন।

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

ফরাসি অডিও ফাইলটি ট্রান্সক্রাইব করতে, SpeechToTextApiDemo ফোল্ডারের ভিতরে থাকা Program.cs ফাইলে যান এবং কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                LanguageCode = LanguageCodes.French.France
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-data/speech/corbeau_renard.flac");

            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine(alternative.Transcript);
                }
            }
        }
    }
}

এক বা দুই মিনিট সময় নিয়ে কোডটি দেখুন এবং বুঝুন কীভাবে এটি একটি অডিও ফাইল ট্রান্সক্রাইব করতে ব্যবহৃত হয়। LanguageCode প্যারামিটারটি API-কে বলে দেয় যে অডিও রেকর্ডিংটি কোন ভাষায় করা হয়েছে।

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান:

dotnet run

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

maître corbeau sur un arbre perché tenait en son bec un fromage

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

সারসংক্ষেপ

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

৮. অভিনন্দন!

আপনি শিখেছেন কীভাবে C# ব্যবহার করে স্পিচ-টু-টেক্সট API-এর মাধ্যমে অডিও ফাইলের বিভিন্ন ধরনের ট্রান্সক্রিপশন করতে হয়!

পরিষ্কার করা

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

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

আরও জানুন

লাইসেন্স

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