【问题标题】:Android save Speech to Text audioAndroid将语音保存到文本音频
【发布时间】:2016-05-14 08:57:31
【问题描述】:

我正在尝试创建一个应用程序,允许用户将由 Google 语音创建的音频文件上传到服务器。我已设法获取音频文件的 URI,但如何访问它或将其转换为可收听的格式?我试图播放它,但到目前为止没有。这就是我所拥有的。

我的语音转文本

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode){
        case REQ_CODE_SPEECH_INPUT: {
            Bundle bundle = data.getExtras();
            if(resultCode==RESULT_OK && null!= data){
                ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                vtt.setText(result.get(0));
                Uri audioUri = data.getData();
                uri.setText(String.valueOf(audioUri));
                audioPath = uri.getText().toString();

            }
            break;

        }
    }
}

当我尝试播放 audioPath 变量时。什么都没有出来。如何将其转换为可收听的格式?

我得到的 uri 示例

content://com.google.android.googlequicksearchbox.AudioProvider/NoteToSelfOriginalAudio1.amr

感谢您的帮助

我在某个地方找到了我应该使用内容解析器并对输入流做一些事情,但我不确定是什么。

【问题讨论】:

标签: java android speech-to-text google-speech-api


【解决方案1】:

我设法解决了这个问题。

最简单的方法是使用 apache commons IO 中的函数

audioPath = uri.getText().toString();
                finalPath = combinedPath.replaceAll(" ","");
                Log.d("Filepath",combinedPath.replaceAll(" ",""));
                ContentResolver contentResolver = getContentResolver();
                try{
                    InputStream filestream = contentResolver.openInputStream(audioUri);
                    File targetFIle = new File(finalPath);
                    FileUtils.copyInputStreamToFile(filestream,targetFIle);
                }catch (IOException e){
                    e.toString();
                }

【讨论】:

    【解决方案2】:
    Button_to_speak.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                Intent intent
                        = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                        RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
                        Locale.getDefault());
                intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak to text");
    
                try {
                    startActivityForResult(intent, REQUEST_CODE_SPEECH_INPUT);
                }
                catch (Exception e) {
                    Toast
                            .makeText(MainActivity.this, " " + e.getMessage(),
                                    Toast.LENGTH_SHORT)
                            .show();
                }
            }
        });
    

    【讨论】:

    • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
    猜你喜欢
    • 2019-11-23
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2015-06-16
    • 2019-08-12
    相关资源
    最近更新 更多