如何将TTS生成的WAV文件保存至Android内部存储?
修改代码实现TTS音频保存到Android内部存储
直接替换原代码中文件路径的生成逻辑,改用Android内部存储的私有目录,具体修改后的speakNow方法如下:
public void speakNow(View v) { Log.i(tag, "speakNow [" + et.getText().toString() + "]"); HashMap<String, String> myHashRender = new HashMap(); tts.speak(et.getText().toString(), TextToSpeech.QUEUE_FLUSH, null); // 改用内部存储私有目录 File internalAudioDir = new File(getFilesDir(), "Audio007"); // 确保目录存在,不存在则创建 if (!internalAudioDir.exists()) { internalAudioDir.mkdirs(); } String destFileName = new File(internalAudioDir, "wakeUp.wav").getAbsolutePath(); Toast.makeText(this, "" + destFileName, Toast.LENGTH_SHORT).show(); myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, et.getText().toString()); tts.synthesizeToFile(et.getText().toString(), myHashRender, destFileName); }
关键修改说明:
- 用
getFilesDir()获取应用的内部存储私有目录,路径为/data/data/你的应用包名/files/,这个目录属于应用私有,其他应用无法访问,卸载应用时会被自动删除。 - 手动创建
Audio007子目录,避免因目录不存在导致文件保存失败。 - 不需要申请外部存储权限,因为内部存储私有目录的读写是应用默认拥有的权限。
内容的提问来源于stack exchange,提问作者arun
相关产品推荐
相关产品推荐

