gpt4 book ai didi

c# - 使用 TTS Android 保存更大的文件

转载 作者:行者123 更新时间:2023-11-30 00:00:58 28 4
gpt4 key购买 nike

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

一切正常,只是当我有一个大文本时它不起作用。

我听说 android 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 Solution is also acceptable

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

干杯

最佳答案

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

注意:OEM 可以在其操作系统镜像中更改此值,因此最好检查该值而不做任何假设。

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

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

然后您可以按顺序播放它们(使用 MediaPlayer Completion 事件|监听器)。

关于c# - 使用 TTS Android 保存更大的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49921778/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com