Oks*_*soy 5 java android text-to-speech android-mediaplayer
我正在尝试使用 tts 和 MediaPlayer 对某些文本实现暂停和播放功能。但是,我似乎无法使用 synthesizeToFile 函数创建 .wav 文件。
我已经向 xml 文件添加了所需的权限:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
这是我目前使用的文件创建方法:
private String envPath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/Download";
private Uri fileUri;
public void fileCreate() {
String inputText = output.getText().toString();
HashMap<String, String> myHashRender = new HashMap<String, String>();
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, inputText);
Log.d(TAG, "successfully created hashmap");
String destFileName = envPath + "/" + "tts_file.wav";
int sr = tts.synthesizeToFile(inputText, myHashRender, destFileName);
Log.d(TAG, "synthesize returns = " + sr);
File fileTTS = new File(destFileName);
if (fileTTS.exists()) {
Log.d(TAG, "successfully created fileTTS");
}
else {
Log.d(TAG, "failed while creating fileTTS");
}
fileUri = Uri.fromFile(fileTTS);
Log.d(TAG, "successfully created uri link: " + fileUri.getPath());
}
Run Code Online (Sandbox Code Playgroud)
这就是我创建媒体播放器的方式:
fileCreate();
mp = MediaPlayer.create(this, fileUri);
Log.d(TAG, "successfuly created mediaplayer");
btnRead.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (mp.isPlaying()) {
mp.pause();
Log.d(TAG, "successfully paused");
} else {
mp.start();
Log.d(TAG, "successfully started");
}
}
});
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
该方法synthesizeToFile是异步的,因此您应该进行检查
File fileTTS = new File(destFileName);
if (fileTTS.exists()) {
Log.d(TAG, "successfully created fileTTS");
}
else {
Log.d(TAG, "failed while creating fileTTS");
}
Run Code Online (Sandbox Code Playgroud)
在onUtteranceCompletedListener或UtteranceProgressListener
| 归档时间: |
|
| 查看次数: |
4715 次 |
| 最近记录: |