# স্পিচ টু টেক্সট - ভার্চুয়াল IoT ডিভাইস এই পাঠের এই অংশে, আপনি কোড লিখবেন যা আপনার মাইক্রোফোন থেকে ধরা স্পিচকে টেক্সটে রূপান্তর করবে স্পিচ সার্ভিস ব্যবহার করে। ## স্পিচকে টেক্সটে রূপান্তর করুন উইন্ডোজ, লিনাক্স এবং ম্যাকওএস-এ, স্পিচ সার্ভিসের পাইথন SDK ব্যবহার করে আপনার মাইক্রোফোন থেকে শোনা স্পিচকে টেক্সটে রূপান্তর করা যায়। এটি ক্রমাগত শুনবে, অডিও লেভেল সনাক্ত করবে এবং যখন অডিও লেভেল কমে যাবে, যেমন একটি স্পিচ ব্লকের শেষে, তখন স্পিচকে টেক্সটে রূপান্তর করার জন্য পাঠাবে। ### কাজ - স্পিচকে টেক্সটে রূপান্তর করুন 1. আপনার কম্পিউটারে `smart-timer` নামে একটি ফোল্ডারে একটি নতুন পাইথন অ্যাপ তৈরি করুন, যেখানে একটি ফাইল থাকবে `app.py` নামে এবং একটি পাইথন ভার্চুয়াল এনভায়রনমেন্ট থাকবে। 1. স্পিচ সার্ভিসের জন্য Pip প্যাকেজ ইনস্টল করুন। নিশ্চিত করুন যে আপনি এটি একটি টার্মিনাল থেকে ইনস্টল করছেন যেখানে ভার্চুয়াল এনভায়রনমেন্ট সক্রিয় করা হয়েছে। ```sh pip install azure-cognitiveservices-speech ``` > ⚠️ যদি আপনি নিম্নলিখিত ত্রুটি পান: > > ```output > ERROR: Could not find a version that satisfies the requirement azure-cognitiveservices-speech (from versions: none) > ERROR: No matching distribution found for azure-cognitiveservices-speech > ``` > > আপনাকে Pip আপডেট করতে হবে। এটি নিম্নলিখিত কমান্ড দিয়ে করুন, তারপর আবার প্যাকেজ ইনস্টল করার চেষ্টা করুন: > > ```sh > pip install --upgrade pip > ``` 1. `app.py` ফাইলে নিম্নলিখিত ইমপোর্ট যোগ করুন: ```python import requests import time from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer ``` এটি কিছু ক্লাস ইমপোর্ট করে যা স্পিচ সনাক্ত করতে ব্যবহৃত হয়। 1. কিছু কনফিগারেশন ঘোষণা করতে নিম্নলিখিত কোড যোগ করুন: ```python speech_api_key = '' location = '' language = '' recognizer_config = SpeechConfig(subscription=speech_api_key, region=location, speech_recognition_language=language) ``` `` এর জায়গায় আপনার স্পিচ সার্ভিসের API কী বসান। `` এর জায়গায় সেই অবস্থান বসান যা আপনি স্পিচ সার্ভিস রিসোর্স তৈরি করার সময় ব্যবহার করেছিলেন। `` এর জায়গায় আপনি যে ভাষায় কথা বলবেন তার লোকেল নাম বসান, যেমন `en-GB` ইংরেজির জন্য, অথবা `zn-HK` ক্যান্টোনিজের জন্য। আপনি সমর্থিত ভাষা এবং তাদের লোকেল নামের তালিকা [Microsoft ডক্সে ভাষা এবং ভয়েস সাপোর্ট ডকুমেন্টেশনে](https://docs.microsoft.com/azure/cognitive-services/speech-service/language-support?WT.mc_id=academic-17441-jabenn#speech-to-text) খুঁজে পেতে পারেন। এই কনফিগারেশনটি একটি `SpeechConfig` অবজেক্ট তৈরি করতে ব্যবহৃত হয় যা স্পিচ সার্ভিস কনফিগার করতে ব্যবহৃত হবে। 1. একটি স্পিচ রিকগনাইজার তৈরি করতে নিম্নলিখিত কোড যোগ করুন: ```python recognizer = SpeechRecognizer(speech_config=recognizer_config) ``` 1. স্পিচ রিকগনাইজার একটি ব্যাকগ্রাউন্ড থ্রেডে চলে, অডিও শোনে এবং এতে থাকা স্পিচকে টেক্সটে রূপান্তর করে। আপনি একটি কলব্যাক ফাংশন ব্যবহার করে টেক্সট পেতে পারেন - একটি ফাংশন যা আপনি সংজ্ঞায়িত করেন এবং রিকগনাইজারে পাঠান। যখনই স্পিচ সনাক্ত হয়, কলব্যাকটি ডাকা হয়। নিম্নলিখিত কোড যোগ করুন একটি কলব্যাক সংজ্ঞায়িত করতে, এবং এই কলব্যাকটি রিকগনাইজারে পাঠাতে, পাশাপাশি একটি ফাংশন সংজ্ঞায়িত করতে যা টেক্সট প্রক্রিয়া করবে এবং কনসোলে লিখবে: ```python def process_text(text): print(text) def recognized(args): process_text(args.result.text) recognizer.recognized.connect(recognized) ``` 1. রিকগনাইজার শুধুমাত্র তখনই শুনতে শুরু করে যখন আপনি এটি স্পষ্টভাবে শুরু করেন। রিকগনিশন শুরু করতে নিম্নলিখিত কোড যোগ করুন। এটি ব্যাকগ্রাউন্ডে চলে, তাই আপনার অ্যাপ্লিকেশনেও একটি ইনফিনিট লুপ প্রয়োজন যা অ্যাপ্লিকেশন চালু রাখতে ঘুমাবে। ```python recognizer.start_continuous_recognition() while True: time.sleep(1) ``` 1. এই অ্যাপ চালান। আপনার মাইক্রোফোনে কথা বলুন এবং অডিও টেক্সটে রূপান্তরিত হয়ে কনসোলে আউটপুট হবে। ```output (.venv) ➜ smart-timer python3 app.py Hello world. Welcome to IoT for beginners. ``` বিভিন্ন ধরনের বাক্য চেষ্টা করুন, পাশাপাশি এমন বাক্য যেখানে শব্দগুলো একই রকম শোনায় কিন্তু তাদের অর্থ ভিন্ন। উদাহরণস্বরূপ, যদি আপনি ইংরেজিতে কথা বলছেন, বলুন 'I want to buy two bananas and an apple too', এবং লক্ষ্য করুন এটি কিভাবে সঠিক to, two এবং too ব্যবহার করে শব্দের প্রসঙ্গের উপর ভিত্তি করে, শুধুমাত্র শব্দের আওয়াজ নয়। > 💁 আপনি এই কোডটি [code-speech-to-text/virtual-iot-device](../../../../../6-consumer/lessons/1-speech-recognition/code-speech-to-text/virtual-iot-device) ফোল্ডারে খুঁজে পেতে পারেন। 😀 আপনার স্পিচ টু টেক্সট প্রোগ্রাম সফল হয়েছে! --- **অস্বীকৃতি**: এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় রচিত সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই।