textToSpeech.synthetizeToFile创建的文件损坏了?

3
@SuppressWarnings("deprecation")
private void saveAudio(String text)
{
    HashMap<String, String> myHashRender = new HashMap();
    String textToConvert = text;
    String destinationFileName = "/sdcard/audio.wav";
    myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, textToConvert);
    tts.synthesizeToFile(textToConvert, myHashRender, destinationFileName);
}

这是我的函数,它应该将音频保存到文件中。方法synthesizeToFile返回0,表示成功,并创建了文件,但它是损坏的,在任何媒体播放器中都无法播放。我使用了方法的弃用版本,因为我的版本是16。我也有。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

这段代码有什么问题?
提前感谢您的帮助。

你是否使用进度监听器或语音完成监听器来确认文件已经完成写入,然后再尝试播放/听取它? - brandall
1个回答

1

是的,它创建了一个空的音频文件。但是当我注释掉下面代码片段中的最后一行时,它开始正确地写入文件:

        String sLcl = screen7thTextFileUri.getPath();
        iLcl=sLcl.lastIndexOf(File.separator);
        sLcl=sLcl.substring(0,iLcl);
        String textLcl = getTypedText();
        mTts.synthesizeToFile(textLcl, null, new File(sLcl+"/test.wav"),"0");
        mTts.speak(textLcl , TextToSpeech.QUEUE_FLUSH, null);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接