最近我使用了android TTS - 我将文件保存为MP3并使用MediaPlayer播放,以便用户可以暂停/恢复等。
一切正常,除非我有一个大文本,它只是不起作用。
我读到android TTS的限制为4000 CHs?我该怎么做才能处理大量文本?
以下是我用来保存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解决方案也可以接受
仅供参考 - 问题是关于最大文本大小,因为我可以生成较小文本的文件
干杯
答案 0 :(得分:1)
在Android ASOP中(至少从API-18开始),TextToSpeech.MaxSpeechInputLength
设置为4000
。
注意:OEM可以在其操作系统映像中更改此值,因此检查值并不做任何假设是明智的。
注意:您使用.mp3
扩展名命名输出,但默认情况下,创建的文件格式为.wav
,某些语音引擎支持其他格式/比特率/等。但是你为参数传递null。
除非您想要正确连接多个wave文件,否则我建议您将文本分成更小的部分并合成多个文件。
然后您可以按顺序播放这些(使用MediaPlayer Completion事件|侦听器)。