GenAI Speech Recognition API

Trong API Nhận dạng lời nói bằng AI tạo sinh của Bộ công cụ học máy, bạn có thể chép lời nội dung âm thanh thành văn bản. API này hỗ trợ các chế độ sau:

  • Cơ bản: Speech Recognition API sử dụng mô hình nhận dạng lời nói truyền thống trên thiết bị, tương tự như SpeechRecognizer API
    • Thường có trên hầu hết các thiết bị Android có API cấp 31 trở lên
  • Nâng cao: Speech Recognition API sử dụng mô hình AI tạo sinh, giúp mở rộng phạm vi ngôn ngữ và cải thiện chất lượng tổng thể
    • Có trên các thiết bị Pixel 10 và nhiều thiết bị khác đang được phát triển

Các chức năng chính

  • Thu thập dữ liệu đầu vào truyền trực tuyến từ micrô hoặc tệp âm thanh
  • Văn bản được chép lời được cung cấp dưới dạng một luồng liên tục, ban đầu có thể chỉ là một phần (và có thể thay đổi) trước khi trở thành nội dung cuối cùng.

Kết quả mẫu

Âm thanh Chế độ Ngôn ngữ Bản chép lời
audio_1 Cơ bản en-US "Đây là một tin nhắn ngắn"
audio_2 Nâng cao es-ES "Este es un mensaje corto."

So sánh với API Nhận dạng lời nói của nền tảng

Khi sử dụng chế độ Cơ bản, API Nhận dạng lời nói của Bộ công cụ máy học sẽ cung cấp chức năng cốt lõi tương tự như API Nhận dạng lời nói của nền tảng. Một lợi thế chính của ML Kit là hỗ trợ nhiều phiên bản nền tảng Android hơn, yêu cầu API cấp 31 trở lên, rộng hơn so với một số API nền tảng.

Ngoài ra, API Nhận dạng giọng nói của Bộ công cụ học máy sử dụng mô hình Gemini trên thiết bị ở Chế độ nâng cao, giúp hỗ trợ nhiều ngôn ngữ hơn.

Bắt đầu

Thêm ML Kit Speech Recognition API làm phần phụ thuộc trong cấu hình build.gradle

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

Để tích hợp Speech Recognition API vào ứng dụng, hãy tạo một ứng dụng SpeechRecognizer. Kiểm tra trạng thái của các tính năng cần thiết trên mô hình trên thiết bị và tải mô hình xuống nếu mô hình đó chưa có trên thiết bị. Sau khi chuẩn bị đầu vào âm thanh trong SpeechRecognizerRequest, hãy chạy quá trình suy luận bằng ứng dụng để nhận đầu ra truyền trực tuyến từ luồng Kotlin. Cuối cùng, hãy nhớ đóng ứng dụng để giải phóng tài nguyên.

// 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()
}

Ngôn ngữ và thiết bị được hỗ trợ

Chế độ Ngôn ngữ
Cơ bản en-US, fr-FR (bản thử nghiệm), it-IT (bản thử nghiệm), de-DE (bản thử nghiệm), es-ES (bản thử nghiệm), hi-IN (bản thử nghiệm), ja-JP (bản thử nghiệm), pt-BR (bản thử nghiệm), tr-TR (bản thử nghiệm), pl-PL (bản thử nghiệm), cmn-Hans-CN (bản thử nghiệm), ko-KR (bản thử nghiệm), cmn-Hant-TW (bản thử nghiệm), ru-RU (bản thử nghiệm), vi-VN (bản thử nghiệm)
Nâng cao Những ngôn ngữ thường có độ chính xác cao: tiếng Anh (Mỹ), tiếng Hàn (Hàn Quốc), tiếng Tây Ban Nha (Tây Ban Nha), tiếng Pháp (Pháp), tiếng Đức (Đức), tiếng Ý (Ý), tiếng Bồ Đào Nha (Bồ Đào Nha), tiếng Trung (Giản thể) (Trung Quốc), tiếng Trung (Phồn thể) (Đài Loan), tiếng Nhật (Nhật Bản), tiếng Thái (Thái Lan), tiếng Nga (Nga), tiếng Hà Lan (Hà Lan) (bản thử nghiệm), tiếng Đan Mạch (Đan Mạch) (bản thử nghiệm), tiếng Thuỵ Điển (Thuỵ Điển) (bản thử nghiệm), tiếng Ba Lan (Ba Lan) (bản thử nghiệm), tiếng Hindi (Ấn Độ) (bản thử nghiệm), tiếng Việt (Việt Nam) (bản thử nghiệm), tiếng Indonesia (Indonesia) (bản thử nghiệm), tiếng Ả Rập (Ả Rập Xê Út) (bản thử nghiệm), tiếng Thổ Nhĩ Kỳ (Thổ Nhĩ Kỳ) (bản thử nghiệm)

Thiết bị được hỗ trợ

Chế độ Thiết bị được hỗ trợ
Cơ bản Thiết bị Android sử dụng API cấp 31 trở lên.
Nâng cao Pixel 10

Các vấn đề thường gặp về chế độ thiết lập

Các API GenAI của Bộ công cụ học máy dựa vào ứng dụng Android AICore để truy cập vào Gemini Nano. Khi thiết bị vừa được thiết lập (bao gồm cả thiết lập lại) hoặc ứng dụng AICore vừa được thiết lập lại (ví dụ: xoá dữ liệu, gỡ cài đặt rồi cài đặt lại), ứng dụng AICore có thể không có đủ thời gian để hoàn tất quá trình khởi động (bao gồm cả việc tải các cấu hình mới nhất xuống từ máy chủ). Do đó, các API AI tạo sinh của Bộ công cụ học máy có thể không hoạt động như mong đợi. Sau đây là các thông báo lỗi thiết lập thường gặp mà bạn có thể gặp phải và cách xử lý các lỗi đó:

Ví dụ về thông báo lỗi Cách xử lý
AICore không hoạt động được do lỗi loại 4-CONNECTION_ERROR và mã lỗi 601-BINDING_FAILURE: Không liên kết được dịch vụ AICore. Điều này có thể xảy ra khi bạn cài đặt ứng dụng bằng các API GenAI của Bộ công cụ học máy ngay sau khi thiết lập thiết bị hoặc khi AICore bị gỡ cài đặt sau khi ứng dụng của bạn được cài đặt. Việc cập nhật ứng dụng AICore rồi cài đặt lại ứng dụng của bạn sẽ khắc phục được vấn đề này.
AICore không hoạt động được do lỗi loại 3 – PREPARATION_ERROR và mã lỗi 606 – FEATURE_NOT_FOUND: Không có tính năng .... Điều này có thể xảy ra khi AICore chưa tải xong các cấu hình mới nhất. Khi thiết bị kết nối với Internet, quá trình cập nhật thường mất từ vài phút đến vài giờ. Việc khởi động lại thiết bị có thể giúp quá trình cập nhật diễn ra nhanh hơn.

Xin lưu ý rằng nếu trình tải khởi động của thiết bị bị mở khoá, bạn cũng sẽ thấy lỗi này. API này không hỗ trợ các thiết bị có trình tải khởi động đã mở khoá.
AICore gặp lỗi loại 1 – DOWNLOAD_ERROR và mã lỗi 0 – UNKNOWN: Tính năng ... gặp lỗi với trạng thái lỗi 0 và lỗi esz: UNAVAILABLE: Không thể phân giải máy chủ ... Giữ kết nối mạng, đợi vài phút rồi thử lại.

Mã mẫu

  • Khám phá mẫu mã của Speech Recognition API trong ML Kit trên GitHub