【问题标题】:Flutter TTS (Text to Speech) - Is it possible & how to get language code for iOS voices?Flutter TTS(文本到语音) - 是否有可能以及如何获取 iOS 语音的语言代码?
【发布时间】:2020-06-08 22:08:31
【问题描述】:

我正在开发一个使用 TTS 库的 Flutter 应用程序。

flutterTts.getVoices() 返回的可用语音对象是特定于设备/操作系统的。

在应用程序中,对于给定的 TTS 语言,我想为用户提供从一组可用语音中选择该语言的选项。

功能目标:为 Android 解决

在 Android 上运行 Flutter TTS 时,返回的语音列表是指示语音对应的 language-code 的字符串。例如:

  • 对于语言代码 en-US
  • 有:en-US-languageen-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 时,返回的声音列表只是人名。

  • 例如:AaronFred

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


【解决方案1】:

要准确地做你想做的事,真正需要发生的是 Flutter TTS 需要添加一个新方法:getVoicesForLocale(String locale)。

或者你或其他人需要编写一个单独的 Flutter 包来完成这项任务。

但这会非常复杂,至少要做好。例如,到目前为止,您大概只处理了一个 Android TTS 引擎。

您可能不会喜欢这个答案,但对于可预测的跨平台 TTS,您最好的选择是使用单一的云服务,可能是 Google 云 tts。

要回答您的最后一个问题,我非常确定每个 IOS 语音都有一个唯一的名称,并且始终具有相同的关联语言……因此,假设您确实处理了 Android 端,您可以对关系进行硬编码在您的应用程序中,但是您必须以不同的方式处理 IOS 端,因为您不能像在 Android 上那样仅将所有已安装的声音反映给用户,因为如果 Apple 添加新声音怎么办?您必须将它们过滤为已知的声音。

【讨论】:

  • 我在想同样的事情,对于给定的 iOS TTS 语音 - 我特别认为 Apple 是标准化的公司/产品范围。我在我的问题中分享的那篇文章列出了一些语音映射 - 但如果有来自 Apple 的官方列表,我会很高兴找到。或者也许这是他们选择不分享的东西..?
  • 不过现在,我想这是我可以假设的正确的事情之一,即给定的 Apple 语音名称将始终具有相同的关联语言 (一旦我能找到它!) 在 100% 的 iOS 设备上......直到我发现自己或得到最终用户的反馈,事实并非如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 2011-04-01
  • 2011-06-19
  • 1970-01-01
  • 2018-10-23
相关资源
最近更新 更多