Amazon Transcribe, Amazon Translate, এবং Amazon Polly PlatoBlockchain Data Intelligence-এর সাহায্যে ভাষার বাধাগুলো ভেঙ্গে ফেলুন। উল্লম্ব অনুসন্ধান. আ.

অ্যামাজন ট্রান্সক্রাইব, অ্যামাজন ট্রান্সলেট এবং অ্যামাজন পলির সাথে ভাষার বাধাগুলি ভেঙে দিন

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

বিভিন্ন ভাষায় কথা বলে এমন আন্তর্জাতিক দল এবং গ্রাহকদের সাথে ভার্চুয়াল মিটিং করা আজ সাধারণ ব্যাপার। সেগুলি অভ্যন্তরীণ বা বাহ্যিক মিটিংই হোক না কেন, অর্থ প্রায়শই জটিল আলোচনায় হারিয়ে যায় এবং আপনি ভাষার বাধার সম্মুখীন হতে পারেন যা আপনাকে আপনার মতো কার্যকর হতে বাধা দেয়।

এই পোস্টে, আপনি শিখবেন কিভাবে তিনটি সম্পূর্ণরূপে পরিচালিত AWS পরিষেবা ব্যবহার করতে হয় (আমাজন ট্রান্সক্রাইব, আমাজন অনুবাদ, এবং আমাজন পলি) একটি কাছাকাছি-রিয়েল-টাইম স্পিচ-টু-স্পিচ অনুবাদক সমাধান তৈরি করতে যা দ্রুত একটি উৎস স্পিকারের লাইভ ভয়েস ইনপুটকে একটি কথ্য, নির্ভুল, অনুবাদিত টার্গেট ভাষায় অনুবাদ করতে পারে, সবই জিরো মেশিন লার্নিং (ML) অভিজ্ঞতা সহ৷

সমাধান ওভারভিউ

আমাদের অনুবাদক তিনটি সম্পূর্ণরূপে পরিচালিত AWS ML পরিষেবা নিয়ে গঠিত যা ব্যবহার করে একক পাইথন স্ক্রিপ্টে একসাথে কাজ করে Python (Boto3) এর জন্য AWS SDK আমাদের টেক্সট অনুবাদ এবং টেক্সট-টু-স্পীচ অংশের জন্য এবং অডিও ইনপুট ট্রান্সক্রিপশনের জন্য একটি অ্যাসিঙ্ক্রোনাস স্ট্রিমিং SDK।

আমাজন ট্রান্সক্রাইব: টেক্সটে স্পিচ স্ট্রিমিং

আমাদের স্ট্যাকে আপনি যে প্রথম পরিষেবাটি ব্যবহার করেন তা হল Amazon Transcribe, একটি সম্পূর্ণরূপে পরিচালিত স্পিচ-টু-টেক্সট পরিষেবা যা ইনপুট স্পিচ নেয় এবং এটিকে পাঠ্যে প্রতিলিপি করে। Amazon Transcribe-এর নমনীয় ইনজেশন পদ্ধতি, ব্যাচ বা স্ট্রিমিং রয়েছে, কারণ এটি সংরক্ষিত অডিও ফাইল বা স্ট্রিমিং অডিও ডেটা গ্রহণ করে। এই পোস্টে, আপনি ব্যবহার করুন পাইথনের জন্য অ্যাসিঙ্ক্রোনাস অ্যামাজন ট্রান্সক্রাইব স্ট্রিমিং SDK, যা লাইভ অডিও স্ট্রিম করতে এবং লাইভ ট্রান্সক্রিপশন গ্রহণ করতে HTTP/2 স্ট্রিমিং প্রোটোকল ব্যবহার করে।

আমরা যখন প্রথম এই প্রোটোটাইপটি তৈরি করেছিলাম, তখন Amazon ট্রান্সক্রাইব স্ট্রিমিং ইনজেশন স্বয়ংক্রিয় ভাষা সনাক্তকরণ সমর্থন করে না, কিন্তু নভেম্বর 2021 থেকে এটি আর হয় না। ব্যাচ এবং স্ট্রিমিং ইনজেশন উভয়ই এখন সকলের জন্য স্বয়ংক্রিয় ভাষা সনাক্তকরণ সমর্থন করে সমর্থিত ভাষা. এই পোস্টে, আমরা দেখাই যে কীভাবে স্ট্রিমিং স্বয়ংক্রিয় ভাষা সনাক্তকরণের মাধ্যমে একটি বিজোড় বহু-ভাষা প্যারামিটারহীন ডিজাইনের মাধ্যমে একটি প্যারামিটার-ভিত্তিক সমাধান সম্ভব। আমাদের প্রতিলিপিকৃত স্পিচ সেগমেন্টটি পাঠ্য হিসাবে ফেরত দেওয়ার পরে, আপনি আমাদের Amazon Transcribe-এ ফলাফলগুলি অনুবাদ করতে এবং ফেরত দেওয়ার জন্য Amazon Translate-এ একটি অনুরোধ পাঠান EventHandler পদ্ধতি।

আমাজন অনুবাদ: অত্যাধুনিক, সম্পূর্ণরূপে পরিচালিত অনুবাদ API

আমাদের স্ট্যাকের পরে রয়েছে Amazon Translate, একটি নিউরাল মেশিন অনুবাদ পরিষেবা যা দ্রুত, উচ্চ-মানের, সাশ্রয়ী, এবং কাস্টমাইজযোগ্য ভাষা অনুবাদ সরবরাহ করে৷ 2022 সালের জুন পর্যন্ত, Amazon Translate 75টি ভাষায় অনুবাদ সমর্থন করে, নতুন ভাষার জোড়া এবং উন্নতি ক্রমাগত করা হচ্ছে। অ্যামাজন ট্রান্সলেট আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে রিয়েল টাইমে বা ব্যাচে দ্রুত সঠিক অনুবাদগুলি সরবরাহ করতে একটি অত্যন্ত স্কেলযোগ্য এবং স্থিতিস্থাপক AWS ক্লাউড আর্কিটেকচারে হোস্ট করা গভীর শিক্ষার মডেলগুলি ব্যবহার করে। Amazon Translate ব্যবহার করা সহজ এবং অন্তর্নিহিত আর্কিটেকচার বা ML দক্ষতার কোন ব্যবস্থাপনার প্রয়োজন নেই। Amazon Translate এর বেশ কিছু বৈশিষ্ট্য রয়েছে, যেমন একটি তৈরি করা এবং ব্যবহার করা কাস্টম পরিভাষা শিল্প-নির্দিষ্ট পদের মধ্যে ম্যাপিং পরিচালনা করতে। Amazon Translate পরিষেবার সীমা সম্পর্কে আরও তথ্যের জন্য, পড়ুন নির্দেশিকা এবং সীমা. অ্যাপ্লিকেশনটি আমাদের টার্গেট ভাষায় অনূদিত টেক্সট পাওয়ার পরে, এটি অবিলম্বে অনূদিত অডিও প্লেব্যাকের জন্য অ্যামাজন পলিতে অনুবাদিত পাঠ পাঠায়।

আমাজন পলি: সম্পূর্ণরূপে পরিচালিত টেক্সট-টু-স্পীচ API

অবশেষে, আপনি অনুবাদিত পাঠ্যটি Amazon Polly-এ পাঠান, একটি সম্পূর্ণরূপে পরিচালিত পাঠ্য-থেকে-স্পীচ পরিষেবা যা হয় তাৎক্ষণিক স্ট্রিমিং প্লেব্যাকের জন্য প্রাণবন্ত অডিও ক্লিপ প্রতিক্রিয়াগুলি ফেরত পাঠাতে পারে বা ব্যাচ করে সংরক্ষিত করতে পারে। আমাজন সিম্পল স্টোরেজ সার্ভিস (Amazon S3) পরবর্তীতে ব্যবহারের জন্য। আপনি প্রমিত ব্যবহার করে উচ্চারণ, ভলিউম, পিচ, বক্তৃতার হার এবং আরও অনেক কিছুর মতো বক্তৃতার বিভিন্ন দিক নিয়ন্ত্রণ করতে পারেন বক্তৃতা সংশ্লেষণ মার্কআপ ভাষা (SSML)।

আপনি নির্দিষ্ট অ্যামাজন পলির জন্য বক্তৃতা সংশ্লেষ করতে পারেন স্নায়ু কণ্ঠস্বর একটি টিভি বা রেডিও নিউজকাস্টারের মতো শব্দ করতে Newscaster শৈলী ব্যবহার করে। অডিও স্ট্রীমে অন্তর্ভুক্ত মেটাডেটার উপর ভিত্তি করে পাঠ্যের নির্দিষ্ট শব্দ বা বাক্য কখন বলা হচ্ছে তাও আপনি সনাক্ত করতে পারেন। এটি বিকাশকারীকে গ্রাফিকাল হাইলাইটিং এবং অ্যানিমেশনগুলিকে সিঙ্ক্রোনাইজ করতে দেয়, যেমন একটি অবতারের ঠোঁটের নড়াচড়া, সংশ্লেষিত বক্তৃতার সাথে।

আপনি নির্দিষ্ট শব্দের উচ্চারণ পরিবর্তন করতে পারেন, যেমন কোম্পানির নাম, সংক্ষিপ্ত শব্দ, বিদেশী শব্দ বা নিওলজিজম, উদাহরণস্বরূপ “P!nk,” “ROTFL,” বা “C'est la vie” (যখন একটি নন-ফরাসি ভাষায় কথা বলা হয় ভয়েস), কাস্টম লেক্সিকন ব্যবহার করে।

আর্কিটেকচার ওভারভিউ

নিম্নলিখিত চিত্রটি আমাদের সমাধান আর্কিটেকচারের চিত্র তুলে ধরেছে।

এই চিত্রটি ক্লায়েন্ট ডিভাইস থেকে অ্যামাজন ট্রান্সক্রাইব, অ্যামাজন ট্রান্সলেট এবং অ্যামাজন পলিতে ডেটা প্রবাহ দেখায়

কর্মপ্রবাহ নিম্নরূপ:

  1. পাইথন SDK দ্বারা অডিও গ্রহণ করা হয়।
  2. অ্যামাজন পলি 39টি সম্ভাব্য ভাষায় বক্তৃতাটিকে পাঠ্যে রূপান্তর করে।
  3. আমাজন অনুবাদ ভাষাগুলিকে রূপান্তর করে।
  4. অ্যামাজন লাইভ ট্রান্সক্রাইব টেক্সটকে স্পিচ-এ রূপান্তর করে।
  5. অডিও স্পীকারে আউটপুট করা হয়।

পূর্বশর্ত

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

অ্যাসিঙ্ক্রোনাস অ্যামাজন ট্রান্সক্রাইব স্ট্রিমিং SDK ব্যবহার করতে এবং Python মডিউল নামক একটি পাইথন 3.7+ ইনস্টল থাকতে হবে pyaudio, যা আপনি মেশিনের মাইক্রোফোন এবং স্পিকার নিয়ন্ত্রণ করতে ব্যবহার করেন। এই মডিউলটি নির্ভর করে সি লাইব্রেরির উপর portaudio.h. আপনি সমস্যা সম্মুখীন হলে pyaudio ত্রুটি, আপনার কাছে আছে কিনা তা দেখতে আমরা আপনার ওএস পরীক্ষা করার পরামর্শ দিই portaudio.h লাইব্রেরি ইনস্টল করা হয়েছে।

পরিষেবা কলের অনুমোদন এবং প্রমাণীকরণের জন্য, আপনি একটি তৈরি করুন এডাব্লুএস আইডেন্টিটি এবং অ্যাক্সেস ম্যানেজমেন্ট প্রয়োজনীয় AWS পরিষেবা কল করার অনুমতি সহ (IAM) পরিষেবার ভূমিকা৷ কনফিগার করে এডাব্লুএস কমান্ড লাইন ইন্টারফেস (AWS CLI) এই IAM পরিষেবা ভূমিকার সাথে, আপনি কী বা পাসওয়ার্ড পাস না করেই আপনার মেশিনে আমাদের স্ক্রিপ্ট চালাতে পারেন, কারণ AWS লাইব্রেরিগুলি কনফিগার করা AWS CLI ব্যবহারকারীর শংসাপত্র ব্যবহার করার জন্য লেখা হয়। এটি দ্রুত প্রোটোটাইপিংয়ের জন্য একটি সুবিধাজনক পদ্ধতি এবং নিশ্চিত করে যে আমাদের পরিষেবাগুলি একটি অনুমোদিত পরিচয় দ্বারা কল করা হচ্ছে৷ বরাবরের মতো, IAM ব্যবহারকারী বা ভূমিকা তৈরি করার সময় IAM নীতি নির্ধারণ করার সময় ন্যূনতম বিশেষাধিকারের নীতি অনুসরণ করুন।

সংক্ষিপ্ত করার জন্য, আপনার নিম্নলিখিত পূর্বশর্তগুলির প্রয়োজন:

  • মাইক্রোফোন, স্পিকার এবং ইন্টারনেট সংযোগ সহ একটি পিসি, ম্যাক বা লিনাক্স মেশিন
  • সার্জারির portaudio.h আপনার OS এর জন্য C লাইব্রেরি (brew, apt get, wget), যা paudio কাজ করার জন্য প্রয়োজন
  • AWS CLI 2.0 সঠিকভাবে অনুমোদিত IAM ব্যবহারকারীর সাথে AWS CLI-এ aws কনফিগার চালিয়ে কনফিগার করা হয়েছে
  • পাইথন 3.7+
  • অ্যাসিঙ্ক্রোনাস অ্যামাজন ট্রান্সক্রাইব পাইথন SDK৷
  • নিম্নলিখিত পাইথন লাইব্রেরি:
    • boto3
    • amazon-transcribe
    • pyaudio
    • asyncio
    • concurrent

সমাধান বাস্তবায়ন করুন

আপনি একটি সূচনা পয়েন্ট হিসাবে পাইথনের জন্য অ্যাসিঙ্ক্রোনাস অ্যামাজন ট্রান্সক্রাইব স্ট্রিমিং SDK-এর উপর খুব বেশি নির্ভর করবেন এবং সেই নির্দিষ্ট SDK-এর উপরে তৈরি করতে চলেছেন। আপনি পাইথনের জন্য স্ট্রিমিং SDK নিয়ে পরীক্ষা করার পরে, আপনি যোগ করুন স্ট্রিমিং মাইক্রোফোন ব্যবহার করে ইনপুট pyaudio, একটি সাধারণভাবে ব্যবহৃত পাইথন ওপেন-সোর্স লাইব্রেরি যা অডিও ডেটা ম্যানিপুলেট করার জন্য ব্যবহৃত হয়। তারপর আপনি আমাদের অনুবাদ এবং টেক্সট-টু-স্পিচ কার্যকারিতার জন্য Amazon Translate এবং Amazon Polly-এ Boto3 কল যোগ করুন। অবশেষে, আপনি আবার কম্পিউটারের স্পিকারের মাধ্যমে অনূদিত বক্তৃতা প্রবাহিত করেন pyaudio. পাইথন মডিউল concurrent আপনার ফিরে আসা অ্যামাজন পলি স্পিচটিকে একটি বিরামহীন, অ-ব্লকিং উপায়ে প্লে ব্যাক করার জন্য আপনাকে তার নিজস্ব অ্যাসিঙ্ক্রোনাস থ্রেডে ব্লকিং কোড চালানোর ক্ষমতা দেয়।

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

import boto3
 import asyncio
 import pyaudio
 import concurrent
 from amazon_transcribe.client import TranscribeStreamingClient
 from amazon_transcribe.handlers import TranscriptResultStreamHandler
 from amazon_transcribe.model import TranscriptEvent


 polly = boto3.client('polly', region_name = 'us-west-2')
 translate = boto3.client(service_name='translate', region_name='us-west-2', use_ssl=True)
 pa = pyaudio.PyAudio()

 #for mic stream, 1024 should work fine
 default_frames = 1024

 #current params are set up for English to Mandarin, modify to your liking
 params['source_language'] = "en"
 params['target_language'] = "zh"
 params['lang_code_for_polly'] = "cmn-CN"
 params['voice_id'] = "Zhiyu"
 params['lang_code_for_transcribe'] = "en-US"

প্রথমত, আপনি ব্যবহার করুন pyaudio ইনপুট ডিভাইসের স্যাম্পলিং রেট, ডিভাইস সূচক এবং চ্যানেলের সংখ্যা পেতে:

#try grabbing the default input device and see if we get lucky
 default_indput_device = pa.get_default_input_device_info()

 # verify this is your microphone device 
 print(default_input_device)

 #if correct then set it as your input device and define some globals
 input_device = default_input_device

 input_channel_count = input_device["maxInputChannels"]
 input_sample_rate = input_device["defaultSampleRate"]
 input_dev_index = input_device["index"]

যদি এটি কাজ না করে, তাহলে আপনি নিম্নলিখিত কোডে দেখানো হিসাবে আপনার ডিভাইসগুলি লুপ এবং মুদ্রণ করতে পারেন এবং তারপর ডিভাইসের তথ্য পুনরুদ্ধার করতে ডিভাইস সূচক ব্যবহার করতে পারেন pyaudio:

print ("Available devices:n")
 for i in range(0, pa.get_device_count()):
     info = pa.get_device_info_by_index(i)
     print (str(info["index"])  + ": t %s n t %s n" % (info["name"], p.get_host_api_info_by_index(info["hostApi"])["name"]))

 # select the correct index from the above returned list of devices, for example zero
 dev_index = 0 
 input_device = pa.get_device_info_by_index(dev_index)

 #set globals for microphone stream
 input_channel_count = input_device["maxInputChannels"]
 input_sample_rate = input_device["defaultSampleRate"]
 input_dev_index = input_device["index"]

তুমি ব্যাবহার কর channel_count, sample_rate, এবং dev_index একটি মাইক স্ট্রিমে পরামিতি হিসাবে। সেই স্ট্রীমের কলব্যাক ফাংশনে, আপনি একটি ব্যবহার করেন asyncio মাইক স্ট্রীমের ইনপুট বাইটগুলিকে একটিতে রাখার জন্য ননব্লকিং থ্রেড-সেফ কলব্যাক৷ asyncio ইনপুট সারি। লুপ এবং ইনপুট_কিউ অবজেক্টের সাথে তৈরি করা নোট নিন asyncio এবং কিভাবে তারা নিম্নলিখিত কোড ব্যবহার করা হয়:

async def mic_stream():
     # This function wraps the raw input stream from the microphone forwarding
     # the blocks to an asyncio.Queue.
     
     loop = asyncio.get_event_loop()
     input_queue = asyncio.Queue()
     
     def callback(indata, frame_count, time_info, status):
         loop.call_soon_threadsafe(input_queue.put_nowait, indata)
         return (indata, pyaudio.paContinue)
         
     # Be sure to use the correct parameters for the audio stream that matches
     # the audio formats described for the source language you'll be using:
     # https://docs.aws.amazon.com/transcribe/latest/dg/streaming.html
     
     print(input_device)
     
     #Open stream
     stream = pa.open(format = pyaudio.paInt16,
                 channels = input_channel_count,
                 rate = int(input_sample_rate),
                 input = True,
                 frames_per_buffer = default_frames,
                 input_device_index = input_dev_index,
                 stream_callback=callback)
     # Initiate the audio stream and asynchronously yield the audio chunks
     # as they become available.
     stream.start_stream()
     print("started stream")
     while True:
         indata = await input_queue.get()
         yield indata

এখন যখন জেনারেটর ফাংশন mic_stream() বলা হয়, যতক্ষণ ইনপুট সারিতে মাইক্রোফোন ইনপুট ডেটা থাকে ততক্ষণ এটি ক্রমাগত ইনপুট বাইট দেয়।

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

#text will come from MyEventsHandler
 def aws_polly_tts(text):

     response = polly.synthesize_speech(
         Engine = 'standard',
         LanguageCode = params['lang_code_for_polly'],
         Text=text,
         VoiceId = params['voice_id'],
         OutputFormat = "pcm",
     )
     output_bytes = response['AudioStream']
     
     #play to the speakers
     write_to_speaker_stream(output_bytes)
     
 #how to write audio bytes to speakers

 def write_to_speaker_stream(output_bytes):
     """Consumes bytes in chunks to produce the response's output'"""
     print("Streaming started...")
     chunk_len = 1024
     channels = 1
     sample_rate = 16000
     
     if output_bytes:
         polly_stream = pa.open(
                     format = pyaudio.paInt16,
                     channels = channels,
                     rate = sample_rate,
                     output = True,
                     )
         #this is a blocking call - will sort this out with concurrent later
         while True:
             data = output_bytes.read(chunk_len)
             polly_stream.write(data)
             
         #If there's no more data to read, stop streaming
             if not data:
                 output_bytes.close()
                 polly_stream.stop_stream()
                 polly_stream.close()
                 break
         print("Streaming completed.")
     else:
         print("Nothing to stream.")

এখন আপনি পোস্টে কি তৈরি করেছেন তা প্রসারিত করা যাক পাইথনের জন্য অ্যাসিঙ্ক্রোনাস অ্যামাজন ট্রান্সক্রাইব স্ট্রিমিং SDK. নিম্নলিখিত কোডে, আপনি ব্যবহার করে একটি নির্বাহক বস্তু তৈরি করুন ThreadPoolExecutor সমবর্তী সহ তিনজন কর্মী সহ সাবক্লাস। তারপরে আপনি ইভেন্টহ্যান্ডলারে চূড়ান্ত প্রত্যাবর্তিত প্রতিলিপিতে একটি অ্যামাজন অনুবাদ কল যোগ করুন এবং সেই অনুবাদিত পাঠ্য, নির্বাহক বস্তু এবং আমাদের aws_polly_tts() একটি মধ্যে ফাংশন asyncio সঙ্গে লুপ loop.run_in_executor(), যা আমাদের অ্যামাজন পলি ফাংশন (অনুবাদিত ইনপুট পাঠ্য সহ) অ্যাসিঙ্ক্রোনাসভাবে পরবর্তী পুনরাবৃত্তির শুরুতে চালায় asyncio লুপ.

#use concurrent package to create an executor object with 3 workers ie threads
 executor = concurrent.futures.ThreadPoolExecutor(max_workers=3)

 class MyEventHandler(TranscriptResultStreamHandler):
     async def handle_transcript_event(self, transcript_event: TranscriptEvent):

         #If the transcription is finalized, send it to translate
 
         results = transcript_event.transcript.results
         if len(results) > 0:
             if len(results[0].alternatives) > 0:
                 transcript = results[0].alternatives[0].transcript
                 print("transcript:", transcript)

                 print(results[0].channel_id)
                 if hasattr(results[0], "is_partial") and results[0].is_partial == False:
                     
                     #translate only 1 channel. the other channel is a duplicate
                     if results[0].channel_id == "ch_0":
                         trans_result = translate.translate_text(
                             Text = transcript,
                             SourceLanguageCode = params['source_language'],
                             TargetLanguageCode = params['target_language']
                         )
                         print("translated text:" + trans_result.get("TranslatedText"))
                         text = trans_result.get("TranslatedText")

                         #we run aws_polly_tts with a non-blocking executor at every loop iteration
                         await loop.run_in_executor(executor, aws_polly_tts, text)  

অবশেষে, আমরা আছে loop_me() ফাংশন এটিতে, আপনি সংজ্ঞায়িত করুন write_chunks(), যা একটি অ্যামাজন ট্রান্সক্রাইব স্ট্রীমকে একটি আর্গুমেন্ট হিসাবে নেয় এবং অ্যাসিঙ্ক্রোনাসভাবে স্ট্রিমিং মাইক ইনপুটের অংশগুলি লিখে দেয়৷ আপনি তারপর ব্যবহার করুন MyEventHandler() আউটপুট ট্রান্সক্রিপশন স্ট্রীম এর আর্গুমেন্ট হিসাবে এবং একটি হ্যান্ডলার অবজেক্ট তৈরি করুন। তারপর আপনি সঙ্গে অপেক্ষা ব্যবহার করুন asyncio.gather() এবং এই coroutines এর চূড়ান্ত ভবিষ্যত পরিচালনা করতে handle_events() পদ্ধতির সাথে write_chunks() এবং হ্যান্ডলারে পাস করুন। অবশেষে, আপনি সমস্ত ইভেন্ট লুপ সংগ্রহ করুন এবং লুপ করুন loop_me() সঙ্গে ফাংশন run_until_complete()। নিম্নলিখিত কোডটি দেখুন:

async def loop_me():
 # Setup up our client with our chosen AWS region

     client = TranscribeStreamingClient(region="us-west-2")
     stream = await client.start_stream_transcription(
         language_code=params['lang_code_for_transcribe'],
         media_sample_rate_hz=int(device_info["defaultSampleRate"]),
         number_of_channels = 2,
         enable_channel_identification=True,
         media_encoding="pcm",
     )
     recorded_frames = []
     async def write_chunks(stream):
         
         # This connects the raw audio chunks generator coming from the microphone
         # and passes them along to the transcription stream.
         print("getting mic stream")
         async for chunk in mic_stream():
             t.tic()
             recorded_frames.append(chunk)
             await stream.input_stream.send_audio_event(audio_chunk=chunk)
             t.toc("chunks passed to transcribe: ")
         await stream.input_stream.end_stream()

     handler = MyEventHandler(stream.output_stream)
     await asyncio.gather(write_chunks(stream), handler.handle_events())

 #write a proper while loop here
 loop = asyncio.get_event_loop()
 loop.run_until_complete(loop_me())
 loop.close()

যখন পূর্ববর্তী কোডটি ত্রুটি ছাড়াই একসাথে চালানো হয়, তখন আপনি মাইক্রোফোনে কথা বলতে পারেন এবং ম্যান্ডারিন চীনা ভাষায় অনুবাদ করা আপনার ভয়েস দ্রুত শুনতে পারেন। অ্যামাজন ট্রান্সক্রাইব এবং অ্যামাজন ট্রান্সলেটের জন্য স্বয়ংক্রিয় ভাষা সনাক্তকরণ বৈশিষ্ট্য যেকোনো সমর্থিত ইনপুট ভাষাকে লক্ষ্য ভাষায় অনুবাদ করে। আপনি বেশ কিছু সময়ের জন্য কথা বলতে পারেন এবং ফাংশন কলগুলির অ-ব্লকিং প্রকৃতির কারণে, আপনার সমস্ত বক্তৃতা ইনপুট অনুবাদ করা হয় এবং উচ্চারিত হয়, এটি লাইভ বক্তৃতা অনুবাদ করার জন্য একটি চমৎকার হাতিয়ার করে তোলে।

উপসংহার

যদিও এই পোস্টটি দেখিয়েছে যে এই তিনটি সম্পূর্ণরূপে পরিচালিত AWS APIগুলি কীভাবে একত্রে নির্বিঘ্নে কাজ করতে পারে, আমরা আপনাকে এই পরিষেবাগুলিকে বর্তমান খরচের একটি অংশের জন্য বহুভাষিক ক্লোজড ক্যাপশনিংয়ের মতো পরিষেবাগুলি বা মিডিয়াগুলির জন্য বহুভাষিক সহায়তা প্রদানের জন্য অন্যান্য উপায়ে এই পরিষেবাগুলি কীভাবে ব্যবহার করতে পারেন সে সম্পর্কে চিন্তা করতে উত্সাহিত করি৷ . ওষুধ, ব্যবসা এবং এমনকি কূটনৈতিক সম্পর্ক সবই একটি চির-উন্নত, কম খরচে, কম রক্ষণাবেক্ষণের অনুবাদ পরিষেবা থেকে উপকৃত হতে পারে।

এই ব্যবহারের ক্ষেত্রে ধারণা কোড বেসের প্রমাণ সম্পর্কে আরও তথ্যের জন্য আমাদের দেখুন গিটহাব.


লেখক সম্পর্কে

Amazon Transcribe, Amazon Translate, এবং Amazon Polly PlatoBlockchain Data Intelligence-এর সাহায্যে ভাষার বাধাগুলো ভেঙ্গে ফেলুন। উল্লম্ব অনুসন্ধান. আ.মাইকেল ট্রান অ্যামাজন ওয়েব সার্ভিসে এনভিশন ইঞ্জিনিয়ারিং টিমের একজন সলিউশন আর্কিটেক্ট। তিনি প্রযুক্তিগত দিকনির্দেশনা প্রদান করেন এবং গ্রাহকদের AWS-এ সম্ভাব্য শিল্প দেখানোর মাধ্যমে তাদের উদ্ভাবনের ক্ষমতা ত্বরান্বিত করতে সহায়তা করেন। তিনি আমাদের গ্রাহকদের জন্য AI/ML, এবং IoT-এর চারপাশে একাধিক প্রোটোটাইপ তৈরি করেছেন। আপনি আমার সাথে @Mike_Trann টুইটারে যোগাযোগ করতে পারেন।

Amazon Transcribe, Amazon Translate, এবং Amazon Polly PlatoBlockchain Data Intelligence-এর সাহায্যে ভাষার বাধাগুলো ভেঙ্গে ফেলুন। উল্লম্ব অনুসন্ধান. আ.ক্যামেরন উইলকস AWS ইন্ডাস্ট্রি অ্যাক্সিলারেটর দলের একজন প্রোটোটাইপিং আর্কিটেক্ট। দলে থাকাকালীন তিনি AWS-এ ML-এর “আর্ট অফ দ্যা পসিবল” প্রদর্শনের জন্য গ্রাহকদের কাছে বেশ কিছু ML ভিত্তিক প্রোটোটাইপ সরবরাহ করেছিলেন। তিনি সঙ্গীত উত্পাদন, অফ-রোডিং এবং ডিজাইন উপভোগ করেন।

সময় স্ট্যাম্প:

থেকে আরো এডাব্লুএস মেশিন লার্নিং

ক্রমাগত সিস্টেমগুলি Amazon CodeWhisperer এর সাথে সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের ভবিষ্যতকে আকার দেয় আমাজন ওয়েব সার্ভিসেস

উত্স নোড: 1879500
সময় স্ট্যাম্প: আগস্ট 23, 2023

নেক্সট জেনারেশন অ্যামাজন সেজমেকার এক্সপেরিমেন্টস - স্কেলে আপনার মেশিন লার্নিং ট্রেনিং সংগঠিত করুন, ট্র্যাক করুন এবং তুলনা করুন

উত্স নোড: 1773442
সময় স্ট্যাম্প: ডিসেম্বর 16, 2022

কিভাবে Searchmetrics স্বয়ংক্রিয়ভাবে প্রাসঙ্গিক কীওয়ার্ড খুঁজে পেতে এবং তাদের মানব বিশ্লেষকদের 20% দ্রুত করতে Amazon SageMaker ব্যবহার করে

উত্স নোড: 1288380
সময় স্ট্যাম্প: এপ্রিল 28, 2022