【发布时间】:2018-09-12 04:18:13
【问题描述】:
目前,我已经实现了文本到语音 (TTS) 来阅读书籍。由于 TTS 最多只允许 4000 个字符(一本书远不止这些),我将书拆分并将每个部分添加到 TTS 队列中。我希望能够单击一个按钮并暂停 TTS,然后再从用户停止的地方恢复 TTS。
我曾尝试使用 synthesizeToFile 并暂停媒体文件对象,但您一次只能合成一个小于 4000 个字符的文件。我不想为了 TTS 而在用户设备上存储数百个媒体文件。
我可以让 TTS 阅读这本书,我只是无法暂停而不停止它,然后不得不从书的开头启动 TTS。
在下面的代码中,我将整本书存储在一个字符串bookText 中。
TTS 引擎是tts 变量。
这是我加载 TTS 队列的方式:
int position = 0;
int pos = 0;
int sizeOfChar = bookText.length();
String testString = bookText.substring(position,sizeOfChar);
int next = 500;
while(true) {
String temp = "";
try {
temp = testString.substring(pos, next);
HashMap<String, String> params = new HashMap<String, String>();
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, temp);
tts.speak(temp, TextToSpeech.QUEUE_ADD, params);
pos = pos + 500;
next = next + 500;
}
catch (Exception e) {
temp = testString.substring(pos, testString.length());
tts.speak(temp, TextToSpeech.QUEUE_ADD, null);
break;
}
}
这就是我“停止” TTS 的方式:
tts.speak("Pausing!", TextToSpeech.QUEUE_FLUSH, null);
【问题讨论】:
-
在这里查看我的问题,以帮助在自然语言“暂停”stackoverflow.com/q/23353671/1256219987654321@ 处拆分字符串
标签: java android text-to-speech