gpt4 book ai didi

Android TTS 检查支持的语言环境是否丢失/未下载语音数据

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:43:33 26 4
gpt4 key购买 nike

我正在使用 Android 的 TextToSpeech 类。一切正常。但是,有些语言/区域设置未默认安装但受 TTS 引擎支持,我无法捕获丢失语音数据的状态。

在互联网打开的情况下,当我尝试将 setLanguage 设置为尚未下载其语音数据的新语言环境时,它会简单地下载语音数据并正常/成功地执行说话方法。

但是,在关闭互联网的情况下,当我尝试将 setLanguage 设置为尚未下载其语音数据的新语言环境时,它会尝试下载语音数据。但是没有互联网,它只是在所选语言环境的“语言和输入”下的“TTS语音数据”设置屏幕上显示“正在下载”,没有任何进展。正如预期的那样,由于未下载语音数据,因此 speak 方法不起作用。发生这种情况时,我会认为 TTS 方法 setLanguage/isLanguageAvailable 会返回 LANG_MISSING_DATA 以供我捕获此状态,但是,它只是返回 LANG_COUNTRY_AVAILABLE。情况如下图所示:enter image description here

我希望能够检测到所选语言环境的语音数据何时未下载/丢失,并提供消息提示或指示用户下载。我看过一些帖子建议像这样使用 isLanguageAvailable one .我还查看了 android documentation似乎 isLanguageAvailable 的返回值应该使用 LANG_MISSING_DATA 捕获丢失语音数据的状态。

我还尝试发送带有 ACTION_CHECK_TTS_DATA 的 Intent 作为另一种检查丢失数据的方法,如我链接的 Android 文档中所建议的那样。但是,resultCode 再次没有捕获/指示语音数据丢失 (CHECK_VOICE_DATA_FAIL),而是返回了 CHECK_VOICE_DATA_PASS。

在这种情况下,我应该如何捕获可用/受支持的语言/语言环境的状态,同时缺少语音数据?我也很好奇为什么 CHECK_VOICE_DATA_PASS 和 LANG_MISSING_DATA 不是返回值。当语音数据丢失时,它不应该返回这些值吗?谢谢!下面是我尝试在尚未下载语音数据的语言环境中使用 setLanguage 和 isLanguageAvailable 时的返回值(0 和 1 是日志中显示的方法的返回值,-1 对应于丢失的语音数据):enter image description here

最佳答案

您可以使用以下函数找到设备的所有可用区域设置。希望这段代码对您有所帮助。

 Locale loc = new Locale("en");
Locale[] availableLocales= loc.getAvailableLocales();
Boolean available=Boolean.FALSE;
for (int i=0;i<availableLocales.length;i++)
{
if(availableLocales[i].getDisplayLanguage().equals("your_locale_language"))
{
available=Boolean.TRUE;
// TODO:
}
}

关于Android TTS 检查支持的语言环境是否丢失/未下载语音数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44619128/

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