android – 如何让TTS将文件写入我的应用程序目录?
作者:互联网
我想将TextToSpeech引擎的输出写入我的应用程序的缓存目录.为了让TTS在那里写,我首先必须赋予它权限.但我不知道怎么做.我理解通常可以通过将FileDescriptor交给它来解决这些问题,从而赋予访问特定文件的权限.但我不能用TTS做到这一点,因为TextToSpeech.synthesizeToFile方法只接受文件路径为String,没有FileDescriptor.那么该怎么办?
为了说明TTS真的没有权限写入我的应用程序的目录,这里是代码……:
TextToSpeech mTts = new new TextToSpeech(context, this);
mTts.synthesizeToFile(text, null, getCacheDir() + "/" + "speech.wav");
和调试器日志:
08-20 14:46:11.257: ERROR/TtsService(336): Can't create
/data/data/com.myorg.myapp/cache/speech.wav due to exception java.io.IOException: Permission denied
解决方法:
TextToSpeech.synthesizeToFile()在实际设备中不起作用.它只适用于AVD.
我也一直在尝试使用原始的Pico TTS引擎和第三方TTS引擎,尝试写入sdcard或内部存储器(在root设备上):
context.getDir("soundfiles", Context.MODE_WORLD_WRITEABLE);
但是,正如您所指出的,该方法返回TextToSpeech.SUCCESS而不实际创建文件.
如果必须将TTS输出录制到WAV文件,请将耳机输出连接到PC中声卡的辅助输入,然后使用任何录制软件捕获该输出.
标签:android,permission-denied,file-permissions,text-to-speech 来源: https://codeday.me/bug/20191008/1874726.html