পাইথনের সাথে স্পিচ-টু-টেক্সট API ব্যবহার করা

1. ওভারভিউ

9e7124a578332fed.png

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

এই টিউটোরিয়ালে, আপনি Python এর সাথে Speech-to-Text API ব্যবহার করার উপর ফোকাস করবেন।

আপনি কি শিখবেন

  • আপনার পরিবেশ কিভাবে সেট আপ করবেন
  • কিভাবে ইংরেজিতে অডিও ফাইল ট্রান্সক্রাইব করবেন
  • শব্দ টাইমস্ট্যাম্প সহ অডিও ফাইলগুলি কীভাবে প্রতিলিপি করা যায়
  • কিভাবে বিভিন্ন ভাষায় অডিও ফাইল ট্রান্সক্রাইব করবেন

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

  • একটি Google ক্লাউড প্রকল্প
  • একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
  • পাইথন ব্যবহার করে পরিচিতি

সমীক্ষা

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

শুধুমাত্র মাধ্যমে এটি পড়ুন এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

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

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

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

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

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

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

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

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

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

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন 853e55310c205094.png .

3c1dabeca90e44e5.png

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

9c92662c6a846a5c.png

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

9f0e51b578fecce5.png

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

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

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

3. পরিবেশ সেটআপ

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

gcloud services enable speech.googleapis.com

আপনি এই মত কিছু দেখতে হবে:

Operation "operations/..." finished successfully.

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

আপনার হোম ডিরেক্টরিতে নেভিগেট করুন:

cd ~

নির্ভরতা বিচ্ছিন্ন করতে একটি পাইথন ভার্চুয়াল পরিবেশ তৈরি করুন:

virtualenv venv-speech

ভার্চুয়াল পরিবেশ সক্রিয় করুন:

source venv-speech/bin/activate

IPython এবং Speech-to-Text API ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন:

pip install ipython google-cloud-speech

আপনি এই মত কিছু দেখতে হবে:

...
Installing collected packages: ..., ipython, google-cloud-speech
Successfully installed ... google-cloud-speech-2.25.1 ...

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

পরবর্তী ধাপে, আপনি IPython নামে একটি ইন্টারেক্টিভ পাইথন ইন্টারপ্রেটার ব্যবহার করবেন, যা আপনি আগের ধাপে ইনস্টল করেছেন। ক্লাউড শেলে ipython চালিয়ে একটি সেশন শুরু করুন:

ipython

আপনি এই মত কিছু দেখতে হবে:

Python 3.9.2 (default, Feb 28 2021, 17:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.18.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

আপনি আপনার প্রথম অনুরোধ করতে প্রস্তুত...

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

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

আপনার IPython অধিবেশনে নিম্নলিখিত কোড অনুলিপি করুন:

from google.cloud import speech


def speech_to_text(
    config: speech.RecognitionConfig,
    audio: speech.RecognitionAudio,
) -> speech.RecognizeResponse:
    client = speech.SpeechClient()

    # Synchronous speech recognition request
    response = client.recognize(config=config, audio=audio)

    return response


def print_response(response: speech.RecognizeResponse):
    for result in response.results:
        print_result(result)


def print_result(result: speech.SpeechRecognitionResult):
    best_alternative = result.alternatives[0]
    print("-" * 80)
    print(f"language_code: {result.language_code}")
    print(f"transcript:    {best_alternative.transcript}")
    print(f"confidence:    {best_alternative.confidence:.0%}")
    

কোডটি অধ্যয়ন করার জন্য একটি মুহূর্ত নিন এবং দেখুন কিভাবে এটি একটি audio ফাইল config করতে recognize লাইব্রেরি পদ্ধতি ব্যবহার করে*।

একটি অনুরোধ পাঠান:

config = speech.RecognitionConfig(
    language_code="en",
)
audio = speech.RecognitionAudio(
    uri="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)

response = speech_to_text(config, audio)
print_response(response)

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

--------------------------------------------------------------------------------
language_code: en-us
transcript:    how old is the Brooklyn Bridge
confidence:    98%

স্বয়ংক্রিয় বিরাম চিহ্ন সক্ষম করতে কনফিগারেশন আপডেট করুন এবং একটি নতুন অনুরোধ পাঠান:

config.enable_automatic_punctuation = True

response = speech_to_text(config, audio)
print_response(response)

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

--------------------------------------------------------------------------------
language_code: en-us
transcript:    How old is the Brooklyn Bridge?
confidence:    98%

সারাংশ

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

5. শব্দ টাইমস্ট্যাম্প পান

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

শব্দ টাইমস্ট্যাম্প সহ একটি অডিও ফাইল প্রতিলিপি করতে, আপনার IPython অধিবেশনে নিম্নলিখিত অনুলিপি করে আপনার কোড আপডেট করুন:

def print_result(result: speech.SpeechRecognitionResult):
    best_alternative = result.alternatives[0]
    print("-" * 80)
    print(f"language_code: {result.language_code}")
    print(f"transcript:    {best_alternative.transcript}")
    print(f"confidence:    {best_alternative.confidence:.0%}")
    print("-" * 80)
    for word in best_alternative.words:
        start_s = word.start_time.total_seconds()
        end_s = word.end_time.total_seconds()
        print(f"{start_s:>7.3f} | {end_s:>7.3f} | {word.word}")
        

কোড অধ্যয়ন করার জন্য একটি মুহূর্ত সময় নিন এবং দেখুন কিভাবে এটি শব্দ টাইমস্ট্যাম্প* সহ একটি অডিও ফাইল প্রতিলিপি করে।* enable_word_time_offsets প্যারামিটার API কে প্রতিটি শব্দের জন্য সময় অফসেট ফেরত দিতে বলে (আরো বিশদ বিবরণের জন্য ডক দেখুন)।

একটি অনুরোধ পাঠান:

config = speech.RecognitionConfig(
    language_code="en",
    enable_automatic_punctuation=True,
    enable_word_time_offsets=True,
)
audio = speech.RecognitionAudio(
    uri="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)

response = speech_to_text(config, audio)
print_response(response)

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

--------------------------------------------------------------------------------
language_code: en-us
transcript:    How old is the Brooklyn Bridge?
confidence:    98%
--------------------------------------------------------------------------------
  0.000 |   0.300 | How
  0.300 |   0.600 | old
  0.600 |   0.800 | is
  0.800 |   0.900 | the
  0.900 |   1.100 | Brooklyn
  1.100 |   1.400 | Bridge?

সারাংশ

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

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

স্পিচ-টু-টেক্সট API 125টিরও বেশি ভাষা এবং রূপগুলিকে স্বীকৃতি দেয়! আপনি এখানে সমর্থিত ভাষার একটি তালিকা পেতে পারেন।

এই বিভাগে, আপনি একটি ফরাসি অডিও ফাইল প্রতিলিপি করবেন।

ফরাসি অডিও ফাইল প্রতিলিপি করতে, আপনার IPython অধিবেশনে নিম্নলিখিত অনুলিপি করে আপনার কোড আপডেট করুন:

config = speech.RecognitionConfig(
    language_code="fr-FR",
    enable_automatic_punctuation=True,
    enable_word_time_offsets=True,
)
audio = speech.RecognitionAudio(
    uri="gs://cloud-samples-data/speech/corbeau_renard.flac",
)

response = speech_to_text(config, audio)
print_response(response)

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

--------------------------------------------------------------------------------
language_code: fr-fr
transcript:    Maître corbeau sur un arbre perché Tenait dans son bec un fromage maître Renard par l'odeur alléché lui tint à peu près ce langage et bonjour monsieur du corbeau.
confidence:    94%
--------------------------------------------------------------------------------
  0.000 |   0.700 | Maître
  0.700 |   1.100 | corbeau
  1.100 |   1.300 | sur
  1.300 |   1.600 | un
  1.600 |   1.700 | arbre
  1.700 |   2.000 | perché
  2.000 |   3.000 | Tenait
  3.000 |   3.000 | dans
  3.000 |   3.200 | son
  3.200 |   3.500 | bec
  3.500 |   3.700 | un
  3.700 |   3.800 | fromage
...
 10.800 |  11.800 | monsieur
 11.800 |  11.900 | du
 11.900 |  12.100 | corbeau.

সারাংশ

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

7. অভিনন্দন!

9e7124a578332fed.png

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

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

ক্লাউড শেল থেকে আপনার উন্নয়ন পরিবেশ পরিষ্কার করতে:

  • আপনি যদি এখনও আপনার IPython সেশনে থাকেন, তাহলে শেল এ ফিরে যান: exit
  • পাইথন ভার্চুয়াল পরিবেশ ব্যবহার বন্ধ করুন: deactivate
  • আপনার ভার্চুয়াল পরিবেশ ফোল্ডার মুছুন: cd ~ ; rm -rf ./venv-speech

ক্লাউড শেল থেকে আপনার Google ক্লাউড প্রকল্প মুছে ফেলতে:

  • আপনার বর্তমান প্রকল্প আইডি পুনরুদ্ধার করুন: PROJECT_ID=$(gcloud config get-value core/project)
  • নিশ্চিত করুন যে এই প্রকল্পটি আপনি মুছতে চান: echo $PROJECT_ID
  • প্রকল্পটি মুছুন: gcloud projects delete $PROJECT_ID

আরও জানুন

লাইসেন্স

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