java - 未创建 Android TextToSpeech.synthesizeToFile() 文件

标签 java android android-mediaplayer text-to-speech

我正在尝试使用 tts 和 MediaPlayer 对某些文本实现暂停和播放功能。但是,我似乎无法使用 synthesizeToFile 函数创建 .wav 文件。

我已经在 xml 文件中添加了所需的权限:

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

这是我目前使用的文件创建方法:

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());
}

这就是我创建媒体播放器的方式:

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");
            }
        }

    });

有什么想法吗?

最佳答案

synthesizeToFile 方法是异步的,因此您应该进行检查

File fileTTS = new File(destFileName);

if (fileTTS.exists()) {
    Log.d(TAG, "successfully created fileTTS");
}
else {
    Log.d(TAG, "failed while creating fileTTS");
}

onUtteranceCompletedListenerUtteranceProgressListener

关于java - 未创建 Android TextToSpeech.synthesizeToFile() 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28714989/

相关文章:

java - W/audio_hw_generic : Not supplying enough data to HAL flooding logcat?

android - 键盘隐藏 AutoCompleteTextView 下拉菜单

android - MediaStore.Images.Media.insertImage 在某些设备上抛出权限拒绝

android - MediaPlayer无法创建

java - 扫描代码库以使用已弃用的方法

android - 推送通知是否需要实时互联网连接?

android - 布局 :weight on Button change Android

java - 如何发现 Web 服务器的所有可用 IP 地址?

java - STS 全部构建按钮呈灰色

java - 在解析查询中初始化或修改变量