onBufferReceived в RecognitionListener не вызывается.Как собрать BufferReceived для захвата голоса с помощью RecognizerIntent - PullRequest
0 голосов
/ 22 сентября 2018

Я работаю над приложением для Android, используя проблему RecognizerIntent, которая заключается в том, что я не знаю, как создать буфер, который будет захватывать голос, который вводит пользователь.Как я буду включать буфер и обратный вызов службы распознавания.

initialize speechRecognizer;

 speechRecognizerCallback = SpeechRecognizerListener()
        mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(context)
        mSpeechRecognizerIntent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
        mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
        mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true)
        mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 10000)
        mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
                Locale.US.toString())
        mSpeechRecognizer.setRecognitionListener(speechRecognizerCallback)

callback

 inner class SpeechRecognizerListener : RecognitionListener {

            override fun onReadyForSpeech(p0: Bundle?) {
            }

            override fun onRmsChanged(p0: Float) {
            }

            override fun onBufferReceived(p0: ByteArray?) {

            }

            override fun onPartialResults(bundle: Bundle) {
                val matches = bundle
                        .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION)
                Timber.tag("speech").e(matches.get(0))


            }

            override fun onEvent(p0: Int, bundle: Bundle) {
                val matches = bundle
                        .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION)
                Timber.tag("speech").e(matches.get(0))
            }

            override fun onBeginningOfSpeech() {
                Timber.tag("speech").e("beginning of speech")

            }

            override fun onEndOfSpeech() {
                Timber.tag("speech").e("end of speech")

            }

            override fun onError(p0: Int) {
            }

            override fun onResults(bundle: Bundle) {
                val matches = bundle
                        .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION)
                Timber.tag("speech").e(matches.get(0))

            }
        }

startListening при первом запросе onRequestPermissionsResult

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if (requestCode == REQUEST_RECORD_AUDIO_PERMISSION) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
   mSpeechRecognizer.startListening(mSpeechRecognizerIntent)
)
            }

        }
    }
...