Android 将语音保存为文本音频
Android save Speech to Text audio
我正在尝试创建一个应用程序,允许用户将由 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
感谢您的帮助
我在某个地方发现我应该使用内容解析器并对输入流做一些事情,但我不确定是什么。
我成功解决了问题。
最简单的方法是使用 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();
}
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();
}
}
});
我正在尝试创建一个应用程序,允许用户将由 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
感谢您的帮助
我在某个地方发现我应该使用内容解析器并对输入流做一些事情,但我不确定是什么。
我成功解决了问题。
最简单的方法是使用 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();
}
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();
}
}
});