Распознавание речи и перевод - PullRequest
0 голосов
/ 30 июня 2019

У меня есть работающее приложение для преобразования речи в текст, и я хотел бы реализовать «речь в переведенный текст», поэтому, когда пользователь говорит на определенном языке, он переводится на английский язык и отображается как текст вместоисходный речевой ввод текста, который отображается в данный момент.Поэтому нам нужно изменить этот код, чтобы сделать это, если это вообще возможно ...

final EditText resultText = findViewById(R.id.resultText);

//Creating and setting up the SpeechRecognizer
final SpeechRecognizer mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
final Intent mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());

mSpeechRecognizer.setRecognitionListener(new RecognitionListener() {

    @Override
    public void onReadyForSpeech(Bundle bundle) {}

    @Override
    public void onBeginningOfSpeech() {}

    @Override
    public void onRmsChanged(float v) {}

    @Override
    public void onBufferReceived(byte[] bytes) {}

    @Override
    public void onEndOfSpeech() {}

    @Override
    public void onError(int i) {}

    @Override
    public void onResults(Bundle bundle) {
        //Getting matches
        ArrayList<String> matches = bundle.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);

        if (matches != null) {
            //Displaying the first match
            resultText.setText(resultText.getText() + " " + matches.get(0));
            resultText.setMovementMethod(new ScrollingMovementMethod());
            resultText.setSelection(resultText.getText().length());
            while (resultText.canScrollVertically(1)) {
                resultText.scrollBy(0, 10);
            }
        }
    }

    @Override
    public void onPartialResults(Bundle bundle) {}

    @Override
    public void onEvent(int i, Bundle bundle) {}

});

speechBtn:

//Setting up speechBtn states
findViewById(R.id.speechBtn).setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        switch (motionEvent.getAction()) {

            //User stops touching the button.
            case MotionEvent.ACTION_UP:
                mSpeechRecognizer.stopListening();
                break;

            //User touches the button.
            case MotionEvent.ACTION_DOWN:
                try {
                    mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
                } catch (Exception e){
                    //In case speech is not supported
                    Toast.makeText(getApplicationContext(), "Your device does not support Speech Input", Toast.LENGTH_LONG).show();
                }
                break;

        }
        return false;
    }
});

Я пытался найти нечто подобное, что было сделано раньше, но я не былМне повезло, и я понятия не имею, как поступить.

...