2012-03-15 200 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()來確定其當前狀態。

相關問題