Obsługa danych wejściowych audio z okularów AI za pomocą automatycznego rozpoznawania mowy

Odpowiednie urządzenia XR
Te wskazówki pomogą Ci tworzyć treści na te urządzenia XR.
Okulary AI

Możesz użyć automatycznego rozpoznawania mowy (ASR), aby rozpoznać konkretne wypowiedzi użytkownika za pomocą SpeechRecognizer i przekształcić je w tekst. SpeechRecognizer jest wbudowany w Androida (nie wymaga dodatkowych bibliotek) i działa nawet w trybie offline.

Aby SpeechRecognizer mogła przekształcić mowę użytkownika w tekst, musi on przyznać Twojej aplikacji uprawnienie RECORD_AUDIO. Aby dowiedzieć się, jak poprosić o to uprawnienie w przypadku swojej aplikacji, przeczytaj artykuł Prośba o uprawnienia do sprzętu.

Utwórz instancję SpeechRecognizer

Utwórz instancję SpeechRecognizer w metodzie onCreate() aktywności okularów AI, aby była dostępna przez cały czas trwania aktywności:

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)
    ...
}

Skonfiguruj element RecognitionListener

Metoda setRecognitionListener() umożliwia określenie obiektu, w którym wykonywane są ważne wywołania zwrotne, np. w RecognitionListener.onResults(), które system wywołuje po rozpoznaniu języka mówionego.

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
            }
        }

    }
    ...
}

Najważniejsze informacje o kodzie

  • Pakiet jest sprawdzany pod kątem 2 tablic. Pierwsza tablica zawiera wszystkie dopasowania, a druga – pewność rozpoznawania mowy co do tego, co zostało usłyszane. Indeksy tych tablic odpowiadają sobie. Używane jest dopasowanie o najwyższej wartości ufności (mostConfidentIndex).

  • Aby określić, jakie działanie chce wykonać użytkownik, przeprowadzane jest dopasowanie ciągu znaków bez rozróżniania wielkości liter.

Alternatywne podejścia do dopasowywania

W poprzednim przykładzie użyte zostanie dopasowanie o najwyższej wartości ufności. Oznacza to, że system musi mieć pewność, co zrozumiał od użytkownika, aby oznaczyć dopasowanie. W przypadku tego podejścia możesz otrzymać fałszywe negatywy.

Innym podejściem może być przejrzenie wszystkich wyników niezależnie od poziomu ufności i znalezienie dowolnego wyniku pasującego do szukanych danych wejściowych. Z kolei takie podejście może prowadzić do większej liczby wyników fałszywie pozytywnych. Podejście, które należy zastosować, zależy w dużej mierze od przypadku użycia.

Zacznij słuchać

Aby rozpocząć słuchanie użytkownika, podczas wywoływania funkcji startListening() określ intencję ACTION_RECOGNIZE_SPEECH.

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)

}

Najważniejsze informacje o kodzie