【发布时间】: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