GenAI Speech Recognition API

ضمن واجهة برمجة التطبيقات GenAI Speech Recognition API في ML Kit، يمكنك تحويل المحتوى الصوتي إلى نص. تتيح واجهة برمجة التطبيقات هذه الأوضاع التالية:

  • أساسي: تستخدم واجهة برمجة التطبيقات Speech Recognition API نموذج التعرّف التقليدي على الكلام على الجهاز، وهو مشابه لواجهة برمجة التطبيقات SpeechRecognizer API
    • تتوفّر الميزة بشكل عام على معظم أجهزة Android التي تعمل بالمستوى 31 لواجهة برمجة التطبيقات والإصدارات الأحدث
  • متقدّمة: تستخدم واجهة برمجة التطبيقات "التعرّف على الكلام" نموذج الذكاء الاصطناعي التوليدي الذي يوفّر تغطية أوسع للغات وجودة أفضل بشكل عام
    • تتوفّر هذه الميزة على أجهزة Pixel 10، ويجري العمل على توفيرها على المزيد من الأجهزة

الإمكانات الرئيسية

  • تسجيل بث مباشر من الميكروفون أو ملف صوتي
  • يتم تقديم النص المحوّل إلى كلام كتدفق مستمر، وقد يكون في البداية جزئيًا (وقابلاً للتغيير) قبل أن يصبح المحتوى النهائي.

أمثلة النتائج

الصوت الوضع اللغة تحويل الصوت إلى نص
audio_1 التذكرة الأساسية en-US "هذه رسالة قصيرة"
audio_2 إعدادات متقدمة es-ES "Este es un mensaje corto."

المقارنة مع واجهة برمجة التطبيقات للتعرّف على الكلام في النظام الأساسي

عند استخدام "الوضع الأساسي"، تقدّم واجهة برمجة التطبيقات "التعرّف على الكلام" في ML Kit وظائف أساسية مشابهة لتلك التي تقدّمها واجهة برمجة التطبيقات "التعرّف على الكلام" في النظام الأساسي. من المزايا الرئيسية في ML Kit أنّه يتوافق مع مجموعة أكبر من إصدارات نظام Android الأساسي، إذ يتطلّب المستوى 31 من واجهة برمجة التطبيقات أو مستوى أعلى، وهو نطاق أوسع من بعض واجهات برمجة التطبيقات الخاصة بالنظام الأساسي.

بالإضافة إلى ذلك، تستخدم واجهة برمجة التطبيقات ML Kit Speech Recognition API نموذج Gemini على الجهاز فقط في "الوضع المتقدّم"، ما يوفّر تغطية أوسع للغات.

البدء

إضافة واجهة برمجة التطبيقات "التعرّف على الكلام" في ML Kit كعنصر تابع في إعدادات build.gradle

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

لدمج واجهة برمجة التطبيقات Speech Recognition API في تطبيقك، عليك إنشاء 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()
}

اللغات والأجهزة المتوافقة

الوضع اللغات
التذكرة الأساسية 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 (إصدار تجريبي)

الأجهزة المتوافقة

الوضع الأجهزة المتوافقة
التذكرة الأساسية أجهزة Android التي تستخدم المستوى 31 لواجهة برمجة التطبيقات والإصدارات الأحدث
إعدادات متقدمة Pixel 10

مشاكل الإعداد الشائعة

تعتمد واجهات برمجة التطبيقات المستنِدة إلى الذكاء الاصطناعي التوليدي في ML Kit على تطبيق Android AICore للوصول إلى Gemini Nano. عند إعداد جهاز للتو (بما في ذلك إعادة الضبط)، أو إعادة ضبط تطبيق AICore للتو (مثل محو البيانات، أو إلغاء التثبيت ثم إعادة التثبيت)، قد لا يتوفّر لتطبيق AICore وقت كافٍ لإنهاء عملية التهيئة (بما في ذلك تنزيل أحدث الإعدادات من الخادم). نتيجةً لذلك، قد لا تعمل واجهات برمجة التطبيقات للذكاء الاصطناعي التوليدي في ML Kit على النحو المتوقّع. في ما يلي رسائل الخطأ الشائعة في الإعداد التي قد تظهر لك وكيفية التعامل معها:

مثال على رسالة خطأ كيفية التعامل معها
تعذّر تنفيذ AICore بسبب نوع الخطأ 4-CONNECTION_ERROR ورمز الخطأ 601-BINDING_FAILURE: تعذّر ربط خدمة AICore. قد يحدث ذلك عند تثبيت التطبيق باستخدام واجهات برمجة تطبيقات GenAI في ML Kit بعد إعداد الجهاز مباشرةً أو عند إلغاء تثبيت AICore بعد تثبيت تطبيقك. يجب أن يؤدي تحديث تطبيق AICore ثم إعادة تثبيت تطبيقك إلى حلّ المشكلة.
تعذّر تنفيذ AICore بسبب الخطأ من النوع 3-PREPARATION_ERROR ورمز الخطأ 606-FEATURE_NOT_FOUND: الميزة ... غير متاحة. قد يحدث ذلك عندما لا ينتهي تطبيق AICore من تنزيل أحدث الإعدادات. عندما يكون الجهاز متصلاً بالإنترنت، يستغرق التحديث عادةً بضع دقائق إلى بضع ساعات. يمكن أن تؤدي إعادة تشغيل الجهاز إلى تسريع عملية التحديث.

يُرجى العِلم أنّه في حال كان برنامج إقلاع الجهاز غير مقفل، سيظهر لك هذا الخطأ أيضًا، لأنّ واجهة برمجة التطبيقات هذه لا تتوافق مع الأجهزة التي يكون برنامج إقلاعها غير مقفل.
تعذّر تنفيذ AICore بسبب نوع الخطأ 1-DOWNLOAD_ERROR ورمز الخطأ 0-UNKNOWN: تعذّر تنفيذ الميزة ... مع حالة الخطأ 0 والخطأ esz: UNAVAILABLE: يتعذّر تحليل المضيف ... يُرجى الحفاظ على الاتصال بالشبكة والانتظار لبضع دقائق ثم إعادة المحاولة.

نموذج التعليمات البرمجية

  • استكشاف نموذج الرمز البرمجي لواجهة برمجة التطبيقات ML Kit Speech Recognition API على GitHub