Как получить данные в реальном времени из android Recognizer Intent? - PullRequest
0 голосов
/ 28 мая 2020
  1. Я хотел бы вызвать RecognizerIntent и оставить его l oop навсегда, пока пользователь не решит закрыть его, как бы я go мог это сделать? текущее намерение распознавателя android закрывается всякий раз, когда звук прекращается после распознанного ввода. Например: если "привет" было распознано, если после этого пользователь ничего не говорит в течение одной или двух секунд, действие закрывается. В любом случае я могу остановить закрытие активности? и будет длиться вечно, пока я не закрою его (возможно, щелкнув кнопку во второй раз?) '

  2. Я также хотел бы получить данные в реальном времени о том, что как говорится, вместо того, чтобы передавать его в качестве дополнительных данных из активности после ее закрытия.

    package com.example.myapplication
    
    import android.app.Activity
    import android.content.Intent
    import androidx.appcompat.app.AppCompatActivity
    import android.os.Bundle
    import android.speech.RecognizerIntent
    import android.widget.Toast
    import kotlinx.android.synthetic.main.activity_recordinit.*
    import java.lang.Exception
    import java.util.*
    
    class Recordinit : AppCompatActivity() {
    
     val   REQUESTCODE3 = 4
    
    
    
    fun audioaction(){
        val speechtotextintent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
        speechtotextintent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.EXTRA_LANGUAGE_MODEL)
        speechtotextintent.putExtra(RecognizerIntent.EXTRA_LANGUAGE , Locale.getDefault())
        speechtotextintent.putExtra(RecognizerIntent.EXTRA_PROMPT , "Click To Begin Listening on the threat!!")
        try {
            //check to see if the activity can work on this device... and it meets the requirements
            startActivityForResult(speechtotextintent , REQUESTCODE3 )
    
    
        }
        //if there is any errors we will let the user know in a popup message.
        catch (e : Exception){
            Toast.makeText(this , e.message , Toast.LENGTH_SHORT  ).show()
    
        }
    
    
    
    }
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_recordinit)
        microphonebutton.setOnClickListener{
            audioaction()
    
        }
    
    
    }
    
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    
         if (REQUESTCODE3 == requestCode ){
            when (resultCode == Activity.RESULT_OK ){
    
    
    
            }
    
        }
        super.onActivityResult(requestCode, resultCode, data)
    }
    

    }

EDIT: Я обнаружил, что EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS позволил бы мне диктовать, как деятельность реагирует на тишину. Но я все же хотел бы найти способ отслеживать то, что говорят в реальном времени.

1 Ответ

1 голос
/ 28 мая 2020

Может быть, это поможет вам произносить слова при вызове активности.

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_CODE10) {
        if (resultCode == RESULT_OK && data != null) {
            var result : ArrayList<String> = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)
        }
    }
}
...