2012-03-15 215 views
8

我几乎无处不在试图找到一种方法来保存我的android tts输出到音频文件中。我看着这些帖子:如何将我的android tts输出保存在wav文件中?

,但无法找到/明白的答案。我正在使用synthesizeToFile()这样的:

HashMap<String, String> myHashRender = new HashMap<String, String>(); 
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, result); 
String fileName = "/Android/data/com.android.voicelanglearning.vll/ttsfile1.wav"; 
tts.synthesizeToFile(result, myHashRender, fileName); 

所以我转发同样的问题。任何帮助深表感谢。

谢谢 芒卡

回答

4

的重要方法是synthesizeToFile。它会将音频写入您指定的设备上的文件。然后,您可以播放该文件与MediaPlayer或者你可以用adb命令行工具使用命令

adb pull <path-to-file> 
+1

感谢您的回复。但是我在运行synthesizeToFile()后找不到文件。我得到的输出为SUCCESS,但我看不到它应该保存的目录中的文件。 – mnc 2012-03-15 03:45:48

+0

@MounikaNamburu - 我认为问题是你正在使用的文件名。您需要写入应用程序具有写入权限的文件夹。尝试使用由您的活动的getExternalFilesDir()或其他Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)返回的文件夹。您还需要在清单中声明WRITE_EXTERNAL_STORAGE权限。 – 2012-03-15 03:58:07

-2

TextToSpeech.synthesizeToFile()在实际设备不能正常工作的设备把它关闭到您的开发系统。它只适用于AVDs。

我一直在尝试这也同时使用原来的Pico TTS引擎和第三方TTS引擎,试图写入无论是SD卡或内部存储器(有根的设备上):

context.getDir("soundfiles", Context.MODE_WORLD_WRITEABLE); 

但是,如您所述,该方法返回TextToSpeech.SUCCESS而不实际创建文件。

如果您必须将您的TTS输出录制到WAV文件,请将耳机输出连接到PC上声卡的辅助输入,并使用任何录制软件来捕获。

+1

TextToSpeech.synthesizeToFile()正在我的设备上运行(运行OS 4.2.2的Nexus 4)。它将指定的文本合成到我的应用程序的/ sdcard/Android/data/目录的.wav文件中。 – gregS 2013-04-11 19:41:31

0

它可能不是它在真实设备上不起作用。问题可能在于您正在使用USB电缆以调试模式插入计算机来测试真实设备。这可能会禁用将文件保存到手机。

Environment.getExternalStorageDirectory()

返回主外部存储目录。如果用户在他们的计算机上安装了该目录,该设备目前可能无法访问,该设备已从设备中删除,或发生其他问题。您可以使用getExternalStorageState()来确定其当前状态。

相关问题