【发布时间】:2019-06-18 08:46:42
【问题描述】:
运行 API > 21 的 Android 应用使用框架 TextToSpeech 类。 tts 引擎设置为 com.google.android.tts。
引擎中所有可用的语言环境都可以通过,
Set<Locale> engineLocales = mTts.getAvailableLanguages();
和,
String displayLanguage = locale.getDisplayLanguage();
创建一个很好的面向用户的字符串“英语、中文、西班牙语等”。太好了。
引擎中所有可用的声音都可以通过,
Set<Voice> engineVoices = mTts.getVoices();
并且可以检查该组以确定设备上实际安装了哪些声音。完美,得到了引擎和设备支持的一组声音。
我的问题是:如何正确显示语音名称? Voice 对象上没有方便的 getDisplayName() 或类似功能。 Voice 对象的 name 属性是一个不能显示给用户的字符串 "ko-kr-x-kod-local, pt-pt-x-jmn-network, fr-fr-x-frd-local, etc 。”
我需要硬编码 name:displayName 地图吗?这是不好的做法,因为 Google 可以随时更改名称。可以处理为“Voice I、Voice II、Voice III 等”。但我很难相信在某处没有一致的显示名称。我错过了吗?有什么想法吗?
【问题讨论】:
标签: android text-to-speech google-text-to-speech