我的要求是,從我的SDCard中選擇txt文件,然後閱讀這些文件並通過TextToSpeech播放該文件。Android如何通過TextToSpeech從外部播放多個選定的文件?
在這裏我有多個文件選擇,我想通過TextToSpeech一個接一個地播放所有文件。
我在Google上爲此衝浪,但無法找到說話的多個文件,請分享任何想法相同,也我想了解synthesizeToFile()
方法與我搜索但仍不清楚的例子。
請確實需要。
我的要求是,從我的SDCard中選擇txt文件,然後閱讀這些文件並通過TextToSpeech播放該文件。Android如何通過TextToSpeech從外部播放多個選定的文件?
在這裏我有多個文件選擇,我想通過TextToSpeech一個接一個地播放所有文件。
我在Google上爲此衝浪,但無法找到說話的多個文件,請分享任何想法相同,也我想了解synthesizeToFile()
方法與我搜索但仍不清楚的例子。
請確實需要。
您需要將您的文本文件轉換爲字符串。使用Apache公共io中的readFileToString是最簡單的。然後,您必須合成字符串並閱讀MediaPlayer,因爲在存在合成的文件時,TTS speak不會啓動。初始化TTS時,您需要設置setOnUtteranceCompletedListener或setOnUtteranceProgressListener。 由於合成需要時間,因此讀取第一個文本會很慢。下面的代碼應該從不同的線程運行,然後使用媒體播放器播放文件的代碼。
for (File file : listOfFilesToBeRead) {
String text = FileUtils.readFileToString(file);
HashMap<String, String> myHashRender = new HashMap<String, String>();
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, an_id_for_example_filename_of_file_above);
mTts.synthesizeToFile(text, myHashRender, filenameWithpath_to_save_the_synthesized_file);
}
然後OnUtteranceCompletedListener
或UtteranceProgressListener
使用的MediaPlayer播放用路徑utteranceId文件。
此外,您必須檢查請求文本是否在4000個字符以下。如果結束,TextToSpeech將不會合成。 – Kae10
@ Kae10你是對的我通常會將文件拆分成500個字符,所以我忘記了限制。 –
@HoanNguyen謝謝你的分享,在這裏我的setOnUtteranceProgressListener沒有被調用。我如何確定我的當前文件已完成。 – anddev