目前,我已经实现了文字转语音(TTS)来阅读书籍。由于TTS最多只能容纳4000个字符(而且一本书的数量更多),所以我将本书拆分开,并将每个部分添加到TTS队列中。我希望能够单击一个按钮并暂停TTS,然后再从用户停止的地方继续执行TTS。
我尝试使用synthesizeToFile并暂停媒体文件对象,但是同样,您一次只能合成一个文件,少于4000个字符。我不想仅在TTS上将数百个媒体文件存储在用户设备上。
我可以让TTS读这本书,只是停下来不停然后从书的开头开始TTS。
在下面的代码中,我将整本书存储在string中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;
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我“停止” TTS的方式: …
我有以下 url,它在放入浏览器时显示文件的元数据,但我想要实际的文件内容。
https://mySite/_api/web/folders/getbyurl('Shared%20Documents')/folders/getbyurl('09.%20SharePoint%20Tutorials')/files/GetByUrl('SharePoint%20365%20Co-authoring%20excel%20files.docx')
Run Code Online (Sandbox Code Playgroud)
我尝试执行以下操作,但在尝试执行第 4 行上的查询时收到 400 错误:
ClientContext clientContext = new ClientContext("mySite");
File f = clientContext.Web.Folders.GetByUrl("Shared Documents").Folders.GetByUrl("09. SharePoint Tutorials").Files.GetByUrl("SharePoint 365 Co-authoring excel files.docx");
clientContext.Load(f);
clientContext.ExecuteQuery();
FileInformation fileInformation = File.OpenBinaryDirect(clientContext, (string)f.ServerRelativeUrl);
using (System.IO.StreamReader sr = new System.IO.StreamReader(fileInformation.Stream))
{
String line = sr.ReadToEnd();
Console.WriteLine(line);
}
Run Code Online (Sandbox Code Playgroud)