GenAI স্পিচ রিকগনিশন API

এমএল কিট-এর জেনএআই স্পিচ রিকগনিশন এপিআই-এর মাধ্যমে আপনি অডিও কন্টেন্টকে টেক্সটে রূপান্তর করতে পারেন। এই এপিআই নিম্নলিখিত মোডগুলো সমর্থন করে:

  • বেসিক : স্পিচ রিকগনিশন এপিআই, স্পিচরিকগনাইজার এপিআই-এর মতোই, ডিভাইসের প্রচলিত স্পিচ রিকগনিশন মডেল ব্যবহার করে।
    • সাধারণত এপিআই লেভেল ৩১ এবং তার চেয়ে উচ্চতর সংস্করণের বেশিরভাগ অ্যান্ড্রয়েড ডিভাইসে উপলব্ধ।
  • উন্নত : স্পিচ রিকগনিশন এপিআইটি GenAI মডেল ব্যবহার করে, যা আরও বিস্তৃত ভাষা কভারেজ এবং সামগ্রিকভাবে উন্নত গুণমান প্রদান করে।
    • পিক্সেল ১০ ডিভাইসগুলোতে উপলব্ধ, এবং আরও ডিভাইস তৈরির কাজ চলছে।

মূল সক্ষমতা

  • মাইক্রোফোন বা অডিও ফাইল থেকে স্ট্রিমিং ইনপুট গ্রহণ করে।
  • অনুলিখিত পাঠ্য একটি অবিচ্ছিন্ন প্রবাহ হিসাবে সরবরাহ করা হয়, যা চূড়ান্ত বিষয়বস্তু হওয়ার আগে প্রাথমিকভাবে আংশিক (এবং পরিবর্তন সাপেক্ষ) হতে পারে।

উদাহরণ ফলাফল

অডিও মোড অবস্থান প্রতিলিপি
অডিও_১ মৌলিক en-US এটি একটি সংক্ষিপ্ত বার্তা।
অডিও_২ উন্নত es-ES "Este es un mensaje corto."

প্ল্যাটফর্ম স্পিচ রিকগনিশন এপিআই-এর সাথে তুলনা

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

এছাড়াও, এমএল কিট স্পিচ রিকগনিশন এপিআই অ্যাডভান্সড মোডে ডিভাইসের জেমিনি মডেল ব্যবহার করে, যা আরও বিস্তৃত ভাষা কভারেজ প্রদান করে।

শুরু করুন

আপনার build.gradle কনফিগারেশনে ML Kit স্পিচ রিকগনিশন API-কে একটি ডিপেন্ডেন্সি হিসেবে যোগ করুন।

implementation("com.google.mlkit:genai-speech-recognition:1.0.0-alpha1")

আপনার অ্যাপে স্পিচ রিকগনিশন এপিআই (Speech Recognition API) ইন্টিগ্রেট করতে, একটি SpeechRecognizer ক্লায়েন্ট (SpeechRecognizer client) তৈরি করুন। ডিভাইসে থাকা প্রয়োজনীয় মডেল ফিচারগুলোর স্ট্যাটাস চেক করুন এবং যদি মডেলটি ডিভাইসে আগে থেকে না থাকে, তবে তা ডাউনলোড করুন। একটি SpeechRecognizerRequest এ আপনার অডিও ইনপুট প্রস্তুত করার পর, কোটলিন ফ্লো (Kotlin flow) থেকে স্ট্রিমিং আউটপুট পাওয়ার জন্য ক্লায়েন্টটি ব্যবহার করে ইনফারেন্স (inference) চালান। সবশেষে, রিসোর্স মুক্ত করার জন্য ক্লায়েন্টটি বন্ধ করতে মনে রাখবেন।

// 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 স্পিচ রিকগনিশন এপিআই মাইক্রোফোন অথবা ফাইল ডেসক্রিপ্টরের মাধ্যমে কোনো কাস্টম উৎস থেকে ইনপুট সমর্থন করে।

আপনি যদি AudioSource.fromPfd(parcelFileDescriptor) ব্যবহার করেন, তাহলে ইনপুট অডিওকে অবশ্যই নিম্নলিখিত কঠোর শর্তাবলী পূরণ করতে হবে:

  • ফরম্যাট : র, হেডারবিহীন ১৬-বিট পিসিএম।
  • চ্যানেল : মোনো (একক চ্যানেল)।
  • স্যাম্পল রেট : ১৬ কিলোহার্টজ।

বেশিরভাগ ক্ষেত্রে AudioSource.fromMic() ব্যবহার করার পরামর্শ দেওয়া হয়, কারণ এটি এই সীমাবদ্ধতাগুলো স্বয়ংক্রিয়ভাবে সামলে নেয়।

সমর্থিত ভাষা এবং ডিভাইস

মোড স্থান
মৌলিক en-US, fr-FR (beta), it-IT (beta), de-DE (beta), es-ES (beta), hi-IN (beta), ja-JP (beta), pt-BR (beta), tr-TR (beta), pl-PL (beta), cmn-Hans-CN (beta), ko-KR (beta), cmn-Hant-TW (beta), ru-RU (beta), vi-VN (beta)
উন্নত যেসব লোকেল সাধারণত উচ্চ নির্ভুলতা দেখায়: 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 (beta), da-DK (beta), sv-SE (beta), pl-PL (beta), hi-IN (beta), vi-VN (beta), id-ID (beta), ar-SA (beta), tr-TR (beta)

সমর্থিত ডিভাইস

মোড সমর্থিত ডিভাইস
মৌলিক এপিআই লেভেল ৩১ এবং তার চেয়ে উচ্চতর লেভেল ব্যবহারকারী অ্যান্ড্রয়েড ডিভাইসসমূহ।
উন্নত পিক্সেল ১০

সাধারণ সেটআপ সমস্যা

এমএল কিট জেনএআই এপিআই (ML Kit GenAI APIs) জেমিনি ন্যানো (Gemini Nano) অ্যাক্সেস করার জন্য অ্যান্ড্রয়েড এআইকোর (Android AICore) অ্যাপের উপর নির্ভর করে। যখন কোনো ডিভাইস সবেমাত্র সেটআপ করা হয় (রিসেট সহ), অথবা এআইকোর অ্যাপটি সবেমাত্র রিসেট করা হয় (যেমন ডেটা মুছে ফেলা, আনইনস্টল করে আবার ইনস্টল করা), তখন এআইকোর অ্যাপটি ইনিশিয়ালাইজেশন (সার্ভার থেকে সর্বশেষ কনফিগারেশন ডাউনলোড করা সহ) শেষ করার জন্য যথেষ্ট সময় নাও পেতে পারে। এর ফলে, এমএল কিট জেনএআই এপিআইগুলো প্রত্যাশিতভাবে কাজ নাও করতে পারে। নিচে সাধারণ কিছু সেটআপ ত্রুটির বার্তা এবং সেগুলো কীভাবে সমাধান করবেন তা দেওয়া হলো:

ত্রুটির বার্তার উদাহরণ কীভাবে সামলাতে হবে
AICore ৪-CONNECTION_ERROR এরর টাইপ এবং ৬০১-BINDING_FAILURE এরর কোড সহ ব্যর্থ হয়েছে: AICore সার্ভিস বাইন্ড করতে ব্যর্থ হয়েছে। ডিভাইস সেটআপের ঠিক পরেই ML Kit GenAI API ব্যবহার করে অ্যাপটি ইনস্টল করলে, অথবা আপনার অ্যাপটি ইনস্টল করার পর AICore আনইনস্টল করা হলে এমনটা হতে পারে। AICore অ্যাপটি আপডেট করে তারপর আপনার অ্যাপটি পুনরায় ইনস্টল করলে সমস্যাটির সমাধান হয়ে যাবে।
AICore ৩-PREPARATION_ERROR এরর টাইপ এবং ৬০৬-FEATURE_NOT_FOUND এরর কোড সহ ব্যর্থ হয়েছে: ফিচার ... উপলব্ধ নয়। AICore সর্বশেষ কনফিগারেশনগুলো ডাউনলোড করা শেষ না করলে এমনটা হতে পারে। ডিভাইসটি ইন্টারনেটের সাথে সংযুক্ত থাকলে, আপডেট হতে সাধারণত কয়েক মিনিট থেকে কয়েক ঘণ্টা সময় লাগে। ডিভাইসটি রিস্টার্ট করলে আপডেটটি দ্রুত হতে পারে।

মনে রাখবেন যে, যদি ডিভাইসটির বুটলোডার আনলক করা থাকে, তাহলে আপনি এই ত্রুটিটিও দেখতে পাবেন—এই API আনলক করা বুটলোডারযুক্ত ডিভাইস সমর্থন করে না।
AICore ১-ডাউনলোড_এরর (1-DOWNLOAD_ERROR) এরর টাইপ এবং ০-আননোন (0-UNKNOWN) এরর কোড সহ ব্যর্থ হয়েছে: ফিচার ... ফেইলর স্ট্যাটাস ০ (0) এবং esz: আনঅ্যাভেইলেবল (UNAVAILABLE) এরর সহ ব্যর্থ হয়েছে: হোস্ট ... রিজলভ করতে অক্ষম। নেটওয়ার্ক সংযোগ চালু রাখুন, কয়েক মিনিট অপেক্ষা করুন এবং আবার চেষ্টা করুন।

নমুনা কোড

  • গিটহাবে এমএল কিট স্পিচ রিকগনিশন এপিআই কোড স্যাম্পলটি অন্বেষণ করুন।