Преобразование речи в текст на Android

#android

#Android

Вопрос:

в softkeyboard у меня есть опция преобразования речи в текст, когда я говорю, она показывает список предложений, когда я выбираю текст, мне нужно заполнить мой EditText этим текстом, как я могу это сделать, я вижу класс SpeechRecognizer, я не знаю, как я могу это использовать, пожалуйста, помогите мне

 SpeechRecognizer rec=SpeechRecognizer.createSpeechRecognizer(context);

        RecognitionListener listener = new RecognitionListener() {

            @Override
            public void onRmsChanged(float rmsdB) {


            }

            @Override
            public void onResults(Bundle results) {
                ArrayList<String> voiceResults = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);


            }

            @Override
            public void onReadyForSpeech(Bundle params) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onPartialResults(Bundle partialResults) {


            }

            @Override
            public void onEvent(int eventType, Bundle params) {


            }

            @Override
            public void onError(int error) {


            }

            @Override
            public void onEndOfSpeech() {


            }

            @Override
            public void onBufferReceived(byte[] buffer) {


            }

            @Override
            public void onBeginningOfSpeech() {


            }
        };
        rec.setRecognitionListener(listener);
  

Ответ №1:

Предполагая, что ваша правка текста называется «te»:

 public void onResults(Bundle results) {   
  ArrayList<String> voiceResults = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
  StringBuilder sb = new StringBuilder();
  for(String p: voiceResults)   {
    sb.append(p);
    sb.append("n");   }   te.setText(sb.toString()); 
  }
  

Обычно вас интересует только первый результат (т. е. voiceResults (0)), поскольку это наиболее вероятное совпадение, но приведенный выше код показывает их все, чтобы вы могли видеть, что возвращается.