当前位置: 首页 > 面试题库 >

在Android上语音转文字

慎望
2023-03-14
问题内容

我正在寻找一个具有语音转文字功能的应用程序。

我知道使用RecognizerIntent的这种能力:http : //android-
developers.blogspot.com/search/label/Speech%20Input

但是-我不希望弹出新的Intent,我想对当前应用程序中的某些点进行分析,并且我不希望它弹出某些内容以表明它当前正在尝试记录您的声音。

有谁对如何最好地做到这一点有任何想法。我可能正在考虑尝试Sphinx 4-但我不知道它是否能够在Android上运行-有没有人得到任何建议或经验?

我想知道是否可以更改此处的代码,以免打扰显示UI或按钮,而只进行处理: http
//developer.android.com/resources/samples/ApiDemos/src/com/example/android/
apis / app /VoiceRecognition.html

干杯,


问题答案:

如果您不想使用RecognizerIntent进行语音识别,则仍然可以使用SpeechRecognizer该类来进行语音识别。但是,使用该类比使用意图要难一些。最后一点,我强烈建议让用户知道他何时被记录,否则,当他最终发现时,他可能会非常适应。

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
        RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
        "com.domain.app");

SpeechRecognizer recognizer = SpeechRecognizer
        .createSpeechRecognizer(this.getApplicationContext());
RecognitionListener listener = new RecognitionListener() {
    @Override
    public void onResults(Bundle results) {
        ArrayList<String> voiceResults = results
                .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
        if (voiceResults == null) {
            System.out.println("No voice results");
        } else {
            System.out.println("Printing matches: ");
            for (String match : voiceResults) {
                System.out.println(match);
            }
        }
    }

    @Override
    public void onReadyForSpeech(Bundle params) {
        System.out.println("Ready for speech");
    }

    /**
     *  ERROR_NETWORK_TIMEOUT = 1;
     *  ERROR_NETWORK = 2;
     *  ERROR_AUDIO = 3;
     *  ERROR_SERVER = 4;
     *  ERROR_CLIENT = 5;
     *  ERROR_SPEECH_TIMEOUT = 6;
     *  ERROR_NO_MATCH = 7;
     *  ERROR_RECOGNIZER_BUSY = 8;
     *  ERROR_INSUFFICIENT_PERMISSIONS = 9;
     *
     * @param error code is defined in SpeechRecognizer
     */
    @Override
    public void onError(int error) {
        System.err.println("Error listening for speech: " + error);
    }

    @Override
    public void onBeginningOfSpeech() {
        System.out.println("Speech starting");
    }

    @Override
    public void onBufferReceived(byte[] buffer) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onEndOfSpeech() {
        // TODO Auto-generated method stub

    }

    @Override
    public void onEvent(int eventType, Bundle params) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPartialResults(Bundle partialResults) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onRmsChanged(float rmsdB) {
        // TODO Auto-generated method stub

    }
};
recognizer.setRecognitionListener(listener);
recognizer.startListening(intent);

重要说明:从UI线程运行此代码,并确保您具有必需的权限。

<uses-permission android:name="android.permission.RECORD_AUDIO" />


 类似资料:
  • Convert text to speech using the Wifi Block

  • 使用tts接口可以将文字转换为语音,tts接口可以使用不同语速、音调阅读文字。文字转语音对视力不佳的用户来说非常重要。 要在应用中使用tts接口,需要在Manifest的permissions中声明tts权限: "permissions": [ "tts" ]

  • 导语今天就给大家带来个语言识别跟语言转文字的小工具,1.直接使用在1.2官网注册后拿到APISecret和APIKey,直接复制文章2.4demo代码,保存为online_tts.py,在命令行执行python online_tts.py -client_secret=你的client_secret -client_id=你的client_id -file_save_path=test.wav --text=今天天气不错1. 获取权限Pyth

  • 因此,我正在我的手机上构建一个应用程序,它可以根据我说的内容执行命令,但问题是,您总是需要启动应用程序或按下应用程序中的按钮。 那么有没有办法让它继续听,或者如果我说一个命令词,它就会自动启动,而不需要我做什么?

  • 我想开发一个模块,它将使用Android中的语音到文本支持。我发现了许多与RecogenerIntent等相关的文档和演示。但我发现所有这些演示都只是在10秒左右的时间里播放声音。但我想让我的演示运行5-10分钟以上。如果不是离线运行,我不会有任何问题,因为我的应用程序总是在线运行。 我也看过Android上的Pocketsphinx,但效果不太好。此外,它只支持Android Studio,而不

  • [][1]我正在尝试用Vala语言做一个类似siri的应用程序。然而,我找不到任何语音识别或文本到语音库的vala,这是必不可少的。瓦拉有语音识别和语音文字转换吗?如果是的话,你能说出他们的名字吗? 顺便说一句,我是新的vala编程,所以也请做一些例子... 非常感谢。