GenAI Speech Recognition API

در «میانای برنامه‌سازی کاربردی تشخیص گفتار هوش مصنوعی زایا» در ML Kit، می‌توانید محتوای صوتی را به نوشتار آوانویسی کنید. این «میانای برنامه‌سازی کاربردی» از حالت‌های زیر پشتیبانی می‌کند:

  • پایه: «میانای برنامه‌سازی کاربردی تشخیص گفتار» از مدل سنتی تشخیص گفتار درون‌دستگاهی استفاده می‌کند، شبیه به SpeechRecognizer API
    • به‌طور کلی در اکثر دستگاه‌های Android با سطح API ۳۱ و بالاتر دردسترس است
  • پیشرفته: «میانای برنامه‌سازی کاربردی تشخیص گفتار» از مدل «هوشواره زایا» استفاده می‌کند که پوشش زبانی گسترده‌تر و کیفیت کلی بهتری تولید می‌کند
    • دردسترس در دستگاه‌های Pixel 10 و Pixel 11، و دستگاه‌های بیشتری درحال توسعه است

قابلیت‌های کلیدی

  • ورودی جاری‌سازی را از میکروفون یا فایل صوتی ضبط می‌کند
  • نوشتار ترانویسی‌شده به‌صورت جاری ارائه می‌شود که ممکن است در ابتدا ناقص باشد (و مشمول تغییر شود) و سپس به محتوای نهایی تبدیل شود.

نتایج نمونه

صوتی حالت منطقه زبانی ترانویسی
audio_1 اولیه en-US «این پیامی کوتاه است»
audio_2 پیشرفته es-ES "Este es un mensaje corto."

مقایسه با پلاتفرم Speech Recognition API

هنگام استفاده از حالت «پایه»، «میانای برنامه‌سازی کاربردی تشخیص گفتار ML Kit» عملکرد اصلی مشابهی با «میانای برنامه‌سازی کاربردی تشخیص گفتار» پلاتفرم ارائه می‌دهد. یکی از مزایای اصلی ML Kit پشتیبانی آن از طیف وسیع‌تری از نسخه‌های پلاتفرم Android است که به سطح میانای برنامه‌سازی کاربردی ۳۱ یا بالاتر نیاز دارد و این طیف وسیع‌تر از برخی‌از میاناهای برنامه‌سازی کاربردی پلاتفرم است.

همچنین، ML Kit Speech Recognition API از مدل Gemini درون‌دستگاهی در حالت «پیشرفته» استفاده می‌کند که پوشش زبانی گسترده‌تری ارائه می‌دهد.

شروع کنید

‫ML Kit Speech Recognition API را به‌عنوان وابستگی در پیکربندی build.gradle اضافه کنید

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

برای ادغام کردن «میانای برنامه‌سازی کاربردی تشخیص گفتار» در برنامه‌تان، SpeechRecognizer کارخواهی ایجاد کنید. وضعیت ویژگی‌های مدل درون‌دستگاهی لازم را بررسی کنید و اگر مدل ازقبل در دستگاه وجود ندارد، آن را بارگیری کنید. پس‌از آماده‌سازی ورودی صوتی در SpeechRecognizerRequest، استنتاج را بااستفاده از کارخواه اجرا کنید تا خروجی جاری‌سازی را از جریان Kotlin دریافت کنید. درنهایت، به‌خاطر داشته باشید که کارخواه را ببندید تا منابع آزاد شود.

// 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 Speech Recognition API از ورودی میکروفون یا منبع سفارشی ازطریق توصیف‌گر فایل پشتیبانی می‌کند.

اگر از AudioSource.fromPfd(parcelFileDescriptor) استفاده می‌کنید، صدای ورودی باید شرایط سخت‌گیرانه زیر را داشته باشد:

  • قالب: Raw،‏ PCM بدون سرایند ۱۶ بیتی.
  • کانال‌ها: مونو (تک‌کاناله).
  • بسامد نمونه: ۱۶ کیلوهرتز.

برای اکثر موارد استفاده، AudioSource.fromMic() توصیه می‌شود زیرا این محدودیت‌ها را به‌طور خودکار مدیریت می‌کند.

زبان‌ها و دستگاه‌های پشتیبانی‌شده

حالت منطقه‌ها
اولیه انگلیسی (ایالات متحده)، فرانسوی (فرانسه) (نسخه بتا)، ایتالیایی (ایتالیا) (نسخه بتا)، آلمانی (آلمان) (نسخه بتا)، اسپانیایی (اسپانیا) (نسخه بتا)، هندی (هند) (نسخه بتا)، ژاپنی (ژاپن) (نسخه بتا)، پرتغالی (برزیل) (نسخه بتا)، ترکی (ترکیه) (نسخه بتا)، لهستانی (لهستان) (نسخه بتا)، چینی ماندارین (ساده‌شده، چین) (نسخه بتا)، کره‌ای (کره) (نسخه بتا)، چینی ماندارین (سنتی، تایوان) (نسخه بتا)، روسی (روسیه) (نسخه بتا)، ویتنامی (ویتنام) (نسخه بتا)
پیشرفته منطقه‌هایی که معمولاً دقت بالایی دارند: 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 (نسخه بتا)

دستگاه‌های پشتیبانی‌شده

حالت دستگاه‌های پشتیبانی‌شده
اولیه دستگاه‌های Android که از سطح میانای برنامه‌سازی کاربردی ۳۱ و بالاتر استفاده می‌کنند.
پیشرفته ‫Pixel 10،‏ Pixel 11

مشکلات رایج راه‌اندازی

میاناهای برنامه‌سازی کاربردی ML Kit GenAI برای دسترسی به Gemini Nano به برنامه Android AICore متکی هستند. وقتی دستگاه به‌تازگی راه‌اندازی شده است (ازجمله بازنشانی)، یا برنامه AICore به‌تازگی بازنشانی شده است (مثلاً پاک کردن داده‌ها، حذف نصب و سپس نصب مجدد)، ممکن است برنامه AICore زمان کافی برای تکمیل مقداردهی اولیه (ازجمله بارگیری جدیدترین پیکربندی‌ها از سرور) نداشته باشد. درنتیجه، ممکن است «میاناهای برنامه‌سازی کاربردی هوش مصنوعی زایا در ML Kit» عملکرد موردانتظار را نداشته باشند. در اینجا پیام‌های خطای رایج راه‌اندازی که ممکن است ببینید و نحوه رسیدگی به آن‌ها آورده شده است:

مثال پیام خطا نحوه رسیدگی
‫AICore با خطای نوع ۴-CONNECTION_ERROR و کد خطای ۶۰۱-BINDING_FAILURE ناموفق بود: سرویس AICore پیوند نشد. این اتفاق ممکن است زمانی رخ دهد که برنامه را بااستفاده از ML Kit GenAI APIs بلافاصله پس‌از راه‌اندازی دستگاه نصب کنید یا زمانی که AICore پس‌از نصب برنامه شما حذف نصب شود. به‌روزرسانی برنامه AICore و سپس بازنصب کردن برنامه باید مشکل را برطرف کند.
‫AICore با خطای نوع ۳-PREPARATION_ERROR و کد خطای ۶۰۶-FEATURE_NOT_FOUND ناموفق بود: ویژگی ... دردسترس نیست. این اتفاق زمانی می‌افتد که AICore بارگیری جدیدترین پیکربندی‌ها را به‌پایان نرسانده باشد. وقتی دستگاه به اینترنت متصل باشد، به‌روزرسانی معمولاً چند دقیقه تا چند ساعت طول می‌کشد. بازراه‌اندازی دستگاه می‌تواند به‌روزرسانی را تسریع کند.

توجه داشته باشید که اگر قفل bootloader دستگاه باز باشد، این خطا را نیز خواهید دید—این API از دستگاه‌های دارای bootloader باز پشتیبانی نمی‌کند.
‫AICore با نوع خطای 1-DOWNLOAD_ERROR و کد خطای 0-UNKNOWN ناموفق بود: ویژگی ... با وضعیت ناموفق 0 و خطای esz: UNAVAILABLE: Unable to resolve host ... ناموفق بود اتصال شبکه را حفظ کنید، چند دقیقه صبر کنید و دوباره امتحان کنید.

کد نمونه

  • کاوش نمونه کد «میانای برنامه‌سازی کاربردی تشخیص گفتار ML Kit» در GitHub