【发布时间】:2020-06-08 22:08:31
【问题描述】:
我正在开发一个使用 TTS 库的 Flutter 应用程序。
从flutterTts.getVoices() 返回的可用语音对象是特定于设备/操作系统的。
在应用程序中,对于给定的 TTS 语言,我想为用户提供从一组可用语音中选择该语言的选项。
功能目标:为 Android 解决
在 Android 上运行 Flutter TTS 时,返回的语音列表是指示语音对应的 language-code 的字符串。例如:
- 对于语言代码
en-US - 有:
en-US-language,en-us-x-sfg#male_1-local
此内置元数据允许使用以下类型的键/值对创建 Map<String, List<String>>:
-
键:
en-us -
价值:
['en-US-language', 'en-us-x-sfg#male_1-local']
然后有了这张地图,当用户从可用语言列表中选择 English 时,可以有一个下拉列表,如下所示:
Map<String, String> labelToVoiceMap = {
'Voice1' : 'en-US-language',
'Voice2' : 'en-us-x-sfg#male_1-local'
}
问题
在 iOS 上运行 Flutter TTS 时,返回的声音列表只是人名。
- 例如:
Aaron、Fred
Flutter 中有没有办法确定从 flutterTts 对象返回的特定语音的关联语言是什么?
这是一篇与 Flutter 无关的帖子,描述了 iOS 设备上的语音对象,其中显示了语言/区域设置代码的字段/属性: How to get a list of ALL voices on iOS 9?
例如:[AVSpeechSynthesisVoice 0x28266fb40] Language: en-US, Name: Fred, Quality: Default [com.apple.speech.synthesis.voice.Fred]
选项 1: .. 有什么方法可以在 Flutter 中实现这一点?
~~ ~~~~~ ~~~~~ ~~~~~ ~~~~~ ~~~
选项 2: 或者 - 对于 iOS 上的给定名称(例如,'Fred'),如果该语音在当前设备上可用,是否有一些官方列表可以保证该语音的相关语言代码是什么名字?
【问题讨论】:
-
这似乎是其中一个问题,如果您包含 why 您需要此功能,那么有人可能会建议采用问题较少的路径。
-
很公平 - 在 Android 端,我使用此元数据按语言代码在
Map中组织/分组语音。这样我就有了一个可以使用的层次结构。 -
我意识到我最初对您的评论的回复有点含糊。你说得很好,我已经更新了这个问题。感谢您的建议,它改善了帖子
标签: flutter dart text-to-speech