GenAI Speech Recognition API

ภายใน GenAI Speech Recognition API ของ ML Kit คุณสามารถถอดเสียงเนื้อหาเสียง เป็นข้อความได้ API นี้รองรับโหมดต่อไปนี้

  • พื้นฐาน: Speech Recognition API ใช้โมเดลการจดจำเสียงในอุปกรณ์แบบเดิม ซึ่งคล้ายกับ SpeechRecognizer API
    • พร้อมให้บริการโดยทั่วไปในอุปกรณ์ Android ส่วนใหญ่ที่มี API ระดับ 31 ขึ้นไป
  • ขั้นสูง: Speech Recognition API ใช้โมเดล GenAI ซึ่งให้การครอบคลุมภาษาที่กว้างขึ้นและคุณภาพโดยรวมที่ดีขึ้น
    • พร้อมใช้งานในอุปกรณ์ Pixel 10 และกำลังพัฒนาสำหรับอุปกรณ์อื่นๆ

ความสามารถหลัก

  • บันทึกอินพุตการสตรีมจากไมโครโฟนหรือไฟล์เสียง
  • ข้อความที่ถอดเสียงจะแสดงเป็นสตรีมต่อเนื่อง ซึ่งอาจเป็น ข้อความบางส่วนในตอนแรก (และอาจมีการเปลี่ยนแปลง) ก่อนที่จะกลายเป็นเนื้อหาขั้นสุดท้าย

ตัวอย่างผลการแข่ง

เสียง โหมด ภาษา การถอดเสียงเป็นคำ
audio_1 พื้นฐาน en-US "นี่คือข้อความสั้นๆ"
audio_2 ขั้นสูง es-ES "Este es un mensaje corto."

การเปรียบเทียบกับ Speech Recognition API ของแพลตฟอร์ม

เมื่อใช้โหมดพื้นฐาน API การจดจำเสียงพูดของ ML Kit จะมีฟังก์ชันหลักที่คล้ายกับ API การจดจำเสียงพูดของแพลตฟอร์ม ข้อได้เปรียบที่สำคัญของ ML Kit คือการรองรับแพลตฟอร์ม Android เวอร์ชันที่หลากหลายมากขึ้น โดยต้องใช้ API ระดับ 31 ขึ้นไป ซึ่งกว้างกว่า API ของแพลตฟอร์มบางรายการ

นอกจากนี้ Speech Recognition API ของ ML Kit ยังใช้โมเดล Gemini ในอุปกรณ์ใน โหมดขั้นสูง ซึ่งให้การครอบคลุมภาษาที่กว้างขึ้น

เริ่มต้นใช้งาน

เพิ่ม ML Kit Speech Recognition API เป็นการขึ้นต่อกันในการกำหนดค่า build.gradle

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

หากต้องการผสานรวม Speech Recognition 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()
}

ภาษาและอุปกรณ์ที่รองรับ

โหมด ภาษา
พื้นฐาน 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 ที่ใช้ API ระดับ 31 ขึ้นไป
ขั้นสูง Pixel 10

ปัญหาการตั้งค่าที่พบบ่อย

API ของ GenAI ใน ML Kit จะใช้แอป Android AICore เพื่อเข้าถึง Gemini Nano เมื่อตั้งค่าอุปกรณ์ใหม่ (รวมถึงการรีเซ็ต) หรือรีเซ็ตแอป AICore ใหม่ (เช่น ล้างข้อมูล ถอนการติดตั้งแล้วติดตั้งใหม่) แอป AICore อาจมีเวลาไม่พอที่จะทำการเริ่มต้นให้เสร็จสมบูรณ์ (รวมถึงการดาวน์โหลดการกำหนดค่าล่าสุดจากเซิร์ฟเวอร์) ด้วยเหตุนี้ ML Kit GenAI API จึงอาจทำงานไม่เป็นไปตามที่คาดไว้ ข้อความแสดงข้อผิดพลาดในการตั้งค่าที่พบบ่อยซึ่งคุณอาจเห็นและวิธีจัดการมีดังนี้

ตัวอย่างข้อความแสดงข้อผิดพลาด วิธีจัดการ
AICore ไม่สำเร็จโดยมีข้อผิดพลาดประเภท 4-CONNECTION_ERROR และรหัสข้อผิดพลาด 601-BINDING_FAILURE: บริการ AICore เชื่อมโยงไม่สำเร็จ ปัญหานี้อาจเกิดขึ้นเมื่อคุณติดตั้งแอปโดยใช้ ML Kit GenAI API ทันทีหลังจากตั้งค่าอุปกรณ์ หรือเมื่อถอนการติดตั้ง AICore หลังจากติดตั้งแอปแล้ว การอัปเดตแอป AICore แล้วติดตั้งแอปของคุณอีกครั้งน่าจะช่วยแก้ปัญหานี้ได้
AICore ล้มเหลวโดยมีข้อผิดพลาดประเภท 3-PREPARATION_ERROR และรหัสข้อผิดพลาด 606-FEATURE_NOT_FOUND: ฟีเจอร์ ... ไม่พร้อมใช้งาน ปัญหานี้อาจเกิดขึ้นเมื่อ AICore ดาวน์โหลดการกำหนดค่าล่าสุดไม่เสร็จ เมื่ออุปกรณ์เชื่อมต่อกับอินเทอร์เน็ต โดยปกติแล้วระบบจะใช้เวลา 2-3 นาทีถึง 2-3 ชั่วโมงในการอัปเดต การรีสตาร์ทอุปกรณ์จะช่วยให้อัปเดตได้เร็วขึ้น

โปรดทราบว่าหาก Bootloader ของอุปกรณ์ปลดล็อกอยู่ คุณจะเห็นข้อผิดพลาดนี้ด้วย เนื่องจาก API นี้ไม่รองรับอุปกรณ์ที่มี Bootloader ที่ปลดล็อก
AICore ล้มเหลวโดยมีข้อผิดพลาดประเภท 1-DOWNLOAD_ERROR และรหัสข้อผิดพลาด 0-UNKNOWN: ฟีเจอร์ ... ล้มเหลวโดยมีสถานะความล้มเหลว 0 และข้อผิดพลาด esz: UNAVAILABLE: แก้ไขโฮสต์ ... ไม่ได้ โปรดเชื่อมต่อเครือข่ายไว้ รอสักครู่ แล้วลองอีกครั้ง

โค้ดตัวอย่าง

  • สำรวจตัวอย่างโค้ด Speech Recognition API ของ ML Kit บน GitHub