GenAI Speech Recognition API

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

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

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

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

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

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

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

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

بالإضافة إلى ذلك، تستخدم واجهة برمجة التطبيقات "التعرّف على الكلام" في حزمة تعلّم الآلة نموذج 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()
}

متطلبات إدخال الصوت

تتيح واجهة برمجة التطبيقات GenAI Speech Recognition API إدخال البيانات من الميكروفون أو من مصدر مخصّص عبر واصف ملف.

في حال استخدام AudioSource.fromPfd(parcelFileDescriptor)، يجب أن يستوفي الصوت المدخل المتطلبات الصارمة التالية:

  • التنسيق: PCM خام بدون رأس بمعدّل 16 بت
  • القنوات: أحادية (قناة واحدة)
  • معدّل البيانات في الملف الصوتي: 16 كيلوهرتز

في معظم حالات الاستخدام، يُنصح باستخدام 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 (إصدار تجريبي)

الأجهزة المعتمدة

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

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

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

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

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

نموذج الرموز البرمجية

  • استكشاف عينة التعليمات البرمجية لواجهة برمجة التطبيقات "التعرّف على الكلام" في حزمة تعلّم الآلة على GitHub