Processar entrada de áudio dos óculos de IA usando o reconhecimento de fala automático

Dispositivos XR aplicáveis
Estas orientações ajudam você a criar experiências para esses tipos de dispositivos de XR.
Óculos de IA

Você pode usar o reconhecimento automático de fala (ASR) para reconhecer declarações específicas do usuário usando SpeechRecognizer e transformá-las em texto. O SpeechRecognizer é integrado ao Android (não exigindo bibliotecas adicionais) e funciona mesmo off-line.

Para que o SpeechRecognizer converta a fala do usuário em texto, ele precisa conceder ao app a permissão RECORD_AUDIO. Para saber como solicitar essa permissão para seu app, consulte Solicitar permissões de hardware.

Instanciar SpeechRecognizer

Instancie o SpeechRecognizer no método onCreate() da atividade dos óculos de IA para que ele fique disponível durante todo o ciclo de vida da atividade:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    //The RECORD_AUDIO permission must be granted to your app before instantiation

    speechRecognizer = SpeechRecognizer.createOnDeviceSpeechRecognizer(this)
    speechRecognizer?.setRecognitionListener(recognitionListener)
    ...
}

Configurar seu RecognitionListener

O método setRecognitionListener() permite especificar o objeto em que callbacks importantes são feitos, como em RecognitionListener.onResults(), que o sistema chama depois de reconhecer a linguagem falada.

val recognitionListener = object : RecognitionListener {

    override fun onResults(results: Bundle?) {

        val matches = results?.getStringArrayList(RESULTS_RECOGNITION)
        val confidences = results?.getFloatArray(CONFIDENCE_SCORES)

        val mostConfidentIndex = confidences!!.indices.maxByOrNull { confidences[it] }

        if (mostConfidentIndex != null){
            val spokenText = matches[mostConfidentIndex]

            if (spokenText.equals("Start my Run", ignoreCase = true)){
                // User indicated they want to start a run
            }
        }

    }
    ...
}

Pontos principais sobre o código

  • O pacote é consultado para duas matrizes. A primeira matriz inclui todas as correspondências, e a segunda é a confiança do reconhecedor de voz no que foi ouvido. Os índices dessas matrizes correspondem entre si. A correspondência com o maior nível de confiança (mostConfidentIndex) é usada.

  • Uma correspondência de string que não diferencia maiúsculas de minúsculas é realizada para determinar qual ação o usuário quer realizar.

Abordagens alternativas ao fazer a correspondência

No exemplo anterior, a correspondência com o maior nível de confiança é usada. Isso significa que o sistema precisa ter bastante certeza do que entendeu do usuário, caso contrário, não vai sinalizar uma correspondência. Ao usar essa abordagem, você pode receber falsos negativos.

Outra abordagem seria analisar todas as correspondências, independente do nível de confiança, e encontrar qualquer uma que se ajuste à entrada que você está procurando. Em contraste, esse tipo de abordagem pode levar a mais falsos positivos. A abordagem que você deve adotar depende muito do seu caso de uso.

Começar a ouvir

Para começar a ouvir o usuário, especifique a intent ACTION_RECOGNIZE_SPEECH ao chamar startListening().

override fun onStart() {
    super.onStart()

    val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
        putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
    }

    speechRecognizer?.startListening(intent)

}

Pontos principais sobre o código