ML Kit-এর GenAI স্পিচ রিকগনিশন API-এর মধ্যে, আপনি অডিও কন্টেন্টকে টেক্সটে ট্রান্সক্রাইব করতে পারবেন। এই API নিম্নলিখিত মোডগুলি সমর্থন করে:
- বেসিক: স্পিচ রিকগনিশন API, SpeechRecognizer API-এর মতো,
ঐতিহ্যগত অন-ডিভাইস স্পিচ রিকগনিশন মডেল ব্যবহার করে
- সাধারণত API লেভেল ৩১ ও তার পরবর্তী যেকোনও ভার্সনের বেশিরভাগ Android ডিভাইসে উপলভ্য
- উন্নত: স্পিচ শনাক্তকরণ API, GenAI মডেল ব্যবহার করে, যা
আরও বেশি ভাষা কভার করে এবং সামগ্রিকভাবে আরও ভালো কোয়ালিটি প্রদান করে
- Pixel 10 ও Pixel 11 ডিভাইসে উপলভ্য, আরও ডিভাইসে ডেভেলপমেন্ট চলছে
গুরুত্বপূর্ণ ক্ষমতা
- মাইক্রোফোন বা অডিও ফাইল থেকে স্ট্রিমিং ইনপুট ক্যাপচার করে
- ট্রান্সক্রাইব করা টেক্সট একটি অবিচ্ছিন্ন স্ট্রিম হিসেবে প্রদান করা হয়, যা প্রথমে আংশিক (এবং পরিবর্তন সাপেক্ষ) হতে পারে এবং পরে চূড়ান্ত কন্টেন্ট হিসেবে দেখানো হয়।
ফলাফলের উদাহরণ
| অডিও | মোড | লোকেল | ট্রান্সক্রিপশন |
|---|---|---|---|
| audio_1 | সাধারণ | en-US | "এটি একটি ছোট মেসেজ" |
| audio_2 | উন্নত | es-ES | "Este es un mensaje corto." |
প্ল্যাটফর্মের স্পিচ শনাক্তকরণ API-এর সাথে তুলনা
বেসিক মোড ব্যবহার করার সময়, ML Kit স্পিচ রিকগনিশন API, প্ল্যাটফর্ম স্পিচ রিকগনিশন API-এর মতো একই ধরনের মূল কার্যকারিতা প্রদান করে। ML Kit-এর একটি প্রধান সুবিধা হল এটি Android প্ল্যাটফর্মের অনেক বেশি ভার্সনে কাজ করে। এর জন্য API লেভেল ৩১ বা তার পরের যেকোনও লেভেল প্রয়োজন হয়, যা কিছু প্ল্যাটফর্ম API-এর থেকে অনেক বেশি ভার্সনে কাজ করে।
এছাড়াও, ML Kit স্পিচ রিকগনিশন API, উন্নত মোডে অন-ডিভাইস Gemini মডেল ব্যবহার করে, যা আরও বেশি ভাষায় কাজ করে।
শুরু করুন
আপনার build.gradle কনফিগারেশনে ডিপেন্ডেন্সি হিসেবে ML Kit স্পিচ রিকগনিশন API যোগ করুন
implementation("com.google.mlkit:genai-speech-recognition:1.0.0-alpha1")
আপনার অ্যাপে স্পিচ রিকগনিশন API ইন্টিগ্রেট করতে, একটি
SpeechRecognizer ক্লায়েন্ট তৈরি করুন। প্রয়োজনীয় অন-ডিভাইস মডেলের স্ট্যাটাস চেক করুন
এবং ডিভাইসে আগে থেকে না থাকলে মডেলটি ডাউনলোড করুন। SpeechRecognizerRequest-এ আপনার অডিও ইনপুট প্রস্তুত করার পরে, Kotlin flow থেকে স্ট্রিমিং আউটপুট পেতে
ক্লায়েন্ট ব্যবহার করে ইনফারেন্স রান করান।
অবশেষে,
রিসোর্স রিলিজ করতে ক্লায়েন্ট বন্ধ করতে ভুলবেন না।
// 1. Create a SpeechRecognizer with desired options.
val options: SpeechRecognizerOptions =
speechRecognizerOptions {
locale = Locale.US
preferredMode = SpeechRecognizerOptions.Mode.MODE_ADVANCED
}
val speechRecognizer: SpeechRecognizer = SpeechRecognition.getClient(options)
// 2. Check if the recognition model is available or needs downloading.
launch {
val status: Int = speechRecognizer.checkStatus()
if (status == FeatureStatus.DOWNLOADABLE) {
// 3. If needed, download the model and monitor progress.
speechRecognizer.download.collect { downloadStatus ->
when (downloadStatus) {
is DownloadStatus.DownloadCompleted -> {
// Model is ready, start recognition.
startMyRecognition(speechRecognizer)
}
is DownloadStatus.DownloadFailed -> {
// Handle download failure (e.g., inform the user).
}
is DownloadStatus.DownloadProgress -> {
// Handle download progress (e.g., update a progress bar).
}
}
}
} else if (status == FeatureStatus.AVAILABLE) {
// Model is already ready, start recognition immediately.
startMyRecognition(speechRecognizer)
} else {
// Handle other statuses (e.g., DOWNLOADING, UNAVAILABLE).
}
}
// 4. Define your recognition logic using a suspend function.
suspend fun startMyRecognition(recognizer: SpeechRecognizer) {
// Create a request (e.g., specifying audio source).
val request: SpeechRecognizerRequest
= speechRecognizerRequest { audioSource = AudioSource.fromMic() }
// Start recognition and process the continuous stream of responses.
recognizer.startRecognition(request).collect {
// Process the SpeechRecognitionResponse data here.
}
}
// 5. Stop recognition and clean up resources when the session is complete.
launch {
recognizer.stopRecognition()
recognizer.close()
}
অডিও ইনপুট সংক্রান্ত প্রয়োজনীয়তা
GenAI স্পিচ রিকগনিশন API, ফাইল ডেসক্রিপটরের মাধ্যমে মাইক্রোফোন বা কাস্টম সোর্স থেকে ইনপুট সাপোর্ট করে।
আপনি AudioSource.fromPfd(parcelFileDescriptor) ব্যবহার করলে, ইনপুট অডিওকে অবশ্যই
নিচে উল্লেখ করা কঠোর প্রয়োজনীয়তা পূরণ করতে হবে:
- ফর্ম্যাট: Raw, হেডারলেস ১৬-বিট PCM.
- চ্যানেল: মোনো (সিঙ্গেল চ্যানেল)।
- স্যাম্পেল রেট: ১৬ kHz.
বেশিরভাগ ব্যবহারের ক্ষেত্রে, AudioSource.fromMic() সাজেস্ট করা হয় কারণ এটি এইসব
সীমাবদ্ধতা অটোমেটিক ম্যানেজ করে।
মানানসই ভাষা ও ডিভাইস
| মোড | লোকেল |
| সাধারণ | en-US, fr-FR (বিটা), it-IT (বিটা), de-DE (বিটা), es-ES (বিটা), hi-IN (বিটা), ja-JP (বিটা), pt-BR (বিটা), tr-TR (বিটা), pl-PL (বিটা), cmn-Hans-CN (বিটা), ko-KR (বিটা), cmn-Hant-TW (বিটা), ru-RU (বিটা), vi-VN (বিটা) |
| উন্নত | সাধারণত যেসব লোকেলে উচ্চ পর্যায়ের যথার্থতা থাকে: en-US, ko-KR, es-ES, fr-FR, de-DE, it-IT, pt-PT, cmn-Hans-CN, cmn-Hant-TW, ja-JP, th-TH, ru-RU, nl-NL (বিটা), da-DK (বিটা), sv-SE (বিটা), pl-PL (বিটা), hi-IN (বিটা), vi-VN (বিটা), id-ID (বিটা), ar-SA (বিটা), tr-TR (বিটা) |
যেসব ডিভাইসে এটি দেখা যাবে
| মোড | মানানসই ডিভাইস |
| সাধারণ | API লেভেল ৩১ ও তার পরবর্তী যেকোনও ভার্সন ব্যবহার করা Android ডিভাইস। |
| উন্নত | Pixel 10, Pixel 11 |
সেট-আপ সংক্রান্ত সাধারণ সমস্যা
Gemini Nano অ্যাক্সেস করার জন্য ML Kit GenAI API, Android AICore অ্যাপের উপর নির্ভর করে। কোনও ডিভাইস সেট-আপ (রিসেট সহ) করা হলে অথবা AICore অ্যাপ রিসেট (যেমন, ডেটা মুছে দেওয়া, আনইনস্টল করে আবার ইনস্টল করা) করা হলে, AICore অ্যাপের কাছে ইনিশিয়ালাইজেশন (সার্ভার থেকে লেটেস্ট কনফিগারেশন ডাউনলোড করা সহ) সম্পূর্ণ করার জন্য পর্যাপ্ত সময় নাও থাকতে পারে। এর ফলে, ML Kit GenAI API প্রত্যাশা অনুযায়ী কাজ নাও করতে পারে। সেট-আপ করার সময় আপনি যেসব সাধারণ সমস্যার মেসেজ দেখতে পেতে পারেন এবং সেগুলি কীভাবে সমাধান করবেন তা এখানে দেওয়া হল:
| সমস্যার মেসেজের উদাহরণ | কীভাবে সামলাবেন |
| AICore-এ সমস্যা হয়েছে, সমস্যার ধরন 4-CONNECTION_ERROR এবং সমস্যার কোড 601-BINDING_FAILURE: AICore পরিষেবা বাইন্ড করতে পারেনি। | ডিভাইস সেট-আপ করার সাথে সাথেই ML Kit GenAI API ব্যবহার করে অ্যাপ ইনস্টল করলে অথবা আপনার অ্যাপ ইনস্টল করার পরে AICore আনইনস্টল করলে এটি হতে পারে। AICore অ্যাপ আপডেট করে আপনার অ্যাপ আবার ইনস্টল করলে এই সমস্যার সমাধান হয়ে যাবে। |
| AICore-এ ৩-PREPARATION_ERROR ধরনের সমস্যা হয়েছে এবং সমস্যার কোড হল 606-FEATURE_NOT_FOUND: ফিচার ... উপলভ্য নেই। |
AICore লেটেস্ট কনফিগারেশন ডাউনলোড করা সম্পূর্ণ না করলে এটি হতে পারে। ডিভাইস ইন্টারনেটের সাথে কানেক্ট করা থাকলে, আপডেট হতে সাধারণত কয়েক মিনিট থেকে কয়েক ঘণ্টা সময় লাগে। ডিভাইস রিস্টার্ট করলে আপডেট দ্রুত হতে পারে।
মনে রাখবেন, ডিভাইসের বুটলোডার আনলক করা থাকলে, আপনি এই সমস্যাটি দেখতে পাবেন—এই API আনলক করা বুটলোডার সহ ডিভাইসগুলিতে কাজ করে না। |
| AICore-এ সমস্যা হয়েছে, সমস্যার ধরন 1-DOWNLOAD_ERROR এবং সমস্যার কোড 0-UNKNOWN: ফিচার ... ব্যর্থ হয়েছে, ব্যর্থতার স্ট্যাটাস 0 এবং সমস্যার esz: UNAVAILABLE: হোস্ট ... সমাধান করা যায়নি | নেটওয়ার্ক কানেকশন চালু রাখুন, কয়েক মিনিট অপেক্ষা করে আবার চেষ্টা করুন। |
নমুনা কোড
- GitHub-এ ML Kit স্পিচ রিকগনিশন API কোড স্যাম্পেল এক্সপ্লোর করুন