- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 TextToSpeech.synthesizeToFile 方法将一些语音写入 mp3。文本超过 4000 个字符,因此我不得不将其分成 block 。问题是只有最后一段文本最终成为音频文件,该方法似乎是覆盖文件而不是添加文件。
int maxLength = 1000; // TextToSpeech.getMaxSpeechInputLength() - 1; smaller chunks = start streaming sooner?
String fileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "/test_p.mp3";
File file = new File(fileName);
final String utteranceId = "fooo";
for (int i = 0; i < elementListJson.length(); i++) {
JSONArray elArray = elementListJson.getJSONArray(i);
nodeType = elArray.get(0).toString();
nodeText = elArray.get(1).toString();
ArrayList<String> chunkedNodeText = StringHelper.splitToLineLengthWithoutBreakingWords(nodeText, maxLength);
for(String chunk : chunkedNodeText) {
Log.d("TTSW", "p"+partsProcessed+" = "+chunk);
int speechStatus = textToSpeech.synthesizeToFile(
chunk
, null, file, utteranceId);
if (speechStatus == TextToSpeech.ERROR) {
showNotificationHint("Error converting text to speech! #1");
}
}
}
此代码适用于 speak() 方法和 QUEUE 参数,但我需要将其写入单个文件以允许用户暂停/倒回/快进控制。我找不到告诉 synthesizeToFile 排队的参数,但根据文档注释,它无论如何都应该排队工作。
最佳答案
我尝试了一下,但它有点像潘多拉魔盒!
似乎没有办法使用 synthesizeToFile() 将新话语“附加”到现有文件——它总是会重写文件。
因此看来完成您想要做的事情的唯一方法是:
A) 写入所有单独的文件(file1、file2、file3 等),然后在它们全部创建完成后按顺序合并它们。
B) 使用循环为每个连续的话语写入“临时”文件,每次迭代将临时文件合并到“主”文件。但是,由于 sythesizeToFile() 是异步的,您需要使用 UtteranceProgressListener 暂停/控制此循环的流程,以防止临时文件被过早覆盖。
其他注意事项:
1) synthesizeToFile() 只会生成 WAV,即使您将其命名为 mp3。
2) * - synthesizeToFile() 是异步的,因此您将不可避免地需要使用 UtteranceProgressListener 来防止过早覆盖。
3) WAV 文件很大,因此您需要清理它们。
关于android - SpeechToText synthesizeToFile 不排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57840268/
我需要调用synthesizeToFile来创建一些音频文件,并且我需要知道它何时完成创建所有这些文件,以便通知用户。 我已经阅读了其他问题,但没有找到适合我的问题,或者该问题与 speak 功能相关
我正在尝试使用 TextToSpeech.synthesizeToFile 方法将一些语音写入 mp3。文本超过 4000 个字符,因此我不得不将其分成 block 。问题是只有最后一段文本最终成为音
使用 Android TextToSpeech 的 synthesizeToFile 方法,我们如何知道生成的文件是什么文件格式(WAV、MP3、OGG)和/或属性(采样率、位深度等)? 我在文档中找
我正在尝试使用synthesizeToFile 创建一个文件: TextToSpeech tts = new TextToSpeech(getApplicationContext(), this, "
我正在尝试使用 tts 和 MediaPlayer 对某些文本实现暂停和播放功能。但是,我似乎无法使用 synthesizeToFile 函数创建 .wav 文件。 我已经在 xml 文件中添加了所需
我使用下面的代码使用 Android 内置将 .txt 文件合成为 .mp3 文件TTS 引擎。 代码: textToSpeech.synthesizeToFile(readFileText, ut
我是一名优秀的程序员,十分优秀!