【问题标题】:Saving Bigger Files with TTS Android使用 TTS Android 保存更大的文件
【发布时间】:2018-04-20 08:22:51
【问题描述】:

最近我使用 android TTS - 我将文件保存为 MP3 并使用 MediaPlayer 播放,以便用户可以暂停/恢复等。

这一切都很好,除了当我有一个大文本时它只是不起作用。

我听说安卓 TTS 有 4000 个 CH 的限制?处理大量文本应该怎么做?

以下是我用来保存 MP3 的代码

Android.Speech.Tts.TextToSpeech textToSpeech;
...
textToSpeech = new Android.Speech.Tts.TextToSpeech(this, this, "com.google.android.tts");
...
textToSpeech.SynthesizeToFile(ReadableText, null, new Java.IO.File(System.IO.Path.Combine(documentsPath, ID + "_audio.mp3")), ID);

以下是我用来播放音频的代码

MediaPlayer MP = new MediaPlayer();
...
MP.SetDataSource(System.IO.Path.Combine(documentsPath, ID + "_audio.mp3"));
MP.Prepare();
MP.Start();

它适用于少量文本,但不适用于大文本。

文件被保存(很可能只是一个损坏的文件),因为当我播放它时出现以下错误

setDataSoruceFD failed: status=0x80000000

Java方案也可以

仅供参考 - 问题是关于最大文本大小,因为我可以生成较小文本的文件

干杯

【问题讨论】:

标签: c# android xamarin xamarin.android


【解决方案1】:

在 Android ASOP 中(至少从 API-18 开始),TextToSpeech.MaxSpeechInputLength 设置为 4000

注意:OEM 可以在其操作系统映像中更改此值,因此检查该值而不做任何假设是明智的。

注意:您使用.mp3 扩展名命名输出,但默认情况下,创建的文件将采用.wav 格式,一些语音引擎确实支持其他格式/比特率/等。但是您为参数传递了 null。

除非您想处理正确连接多个波形文件,否则我建议您将文本分成更小的部分并合成多个文件。

然后您可以按顺序播放这些内容(使用 MediaPlayer 完成事件|侦听器)。

【讨论】:

  • 非常感谢您的回复,您说得对,关于将类型传递为null并将wav保存为MP3,我将不得不将文本拆分为较小的文件,请您详细说明您的意思?也喜欢检查值的想法,因为您说 OEM 可以更改值,但考虑到 4000 是最小值,为了保持一致性,如果我在所有设备上坚持使用一种尺寸,您会怎么想。
  • @aliusman stick with one size over all the devices 你可能很好,或者不是 ;-) MaxSpeechInputLength 被添加到 API-18 中,以允许开发人员检查最大限度。可用长度,个人我会在 API18+ 上使用它,并假设 4000 用于较低的 API,但最终,选择是你的......
  • 谢谢,希望能对Note: You are naming the output with an .mp3 extension, but by default the files created will be .wav formatted, some speech engines do support other formats/bitrate/etc. but you are passing null for the parameters.有所了解
  • @aliusman 各种 TTS 引擎支持不同的参数,有些你可以传入参数用于生成的语音类型、音高、速度、格式等。将生成。这些依赖于 TTS 引擎,因此在某些 Google Android 文档中没有它们的主列表,您必须查看引擎本身以确定支持哪些附加功能(如果有的话)。大多数情况下,您使用 HashMap(或 API-21+ 版本的 SynthesizeToFile 中的 Bundle)为异步回调侦听器设置话语 ID,以了解文件何时创建完成。
猜你喜欢
  • 1970-01-01
  • 2022-11-10
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多