是否强制Android TTS将时间解析为文本?

问题描述 投票:0回答:1

我正在构建一个应用程序,该应用程序会显示包含当前时间的自定义消息。我注意到有些声音似乎可以正确地解析时间-也就是说,当我传递类似“现在是7:07的时间”的字符串时,实际上它说的是“七-七-”。

但是,其他声音坚持说“现在的时间是七个冒号零七个。”编写一个可以自己解析的函数就足够简单了,但是我正在尝试找到内置函数,因此我不必担心本地化。我可以在TTS(也许是与归因字符串相关的内容)中甚至在Java库中为我提供一段时间的本地化“文本”字符串吗?我已经浏览了TTS文档,却一无所获,而且我所看到的所有Java时间格式化模式都是纯数字的,没有单词。

我正在构建一个应用程序,该应用程序会显示包含当前时间的自定义消息。我注意到有些声音似乎可以正确解析时间,也就是说,当我传入类似“现在是现在的时间……”的字符串时,

想通了-TtsSpan是需要的。花了我一段时间使格式正确;关于如何执行此操作的示例基本上为零。如果其他人遇到同样的需要(在Kotlin中),这是对我有用的基础知识:
var h:Int = Calendar.getInstance().get(Calendar.HOUR) if (DateFormat.is24HourFormat(ApplicationContext)) h = Calendar.getInstance().get(Calendar.HOUR_OF_DAY) val m:Int = Calendar.getInstance().get(Calendar.MINUTE) val whenStr = getFormattedTime() // internal function I'm using to format it visually wholeString = message.replace("|TIME|",whenStr) // my time doesn't always appear at the same place in the custom message val spannedMsg:Spannable = SpannableString(wholeString) val span:TtsSpan = TtsSpan.TimeBuilder(h, m).build() spannedMsg.setSpan(span, wholeString.inexOf(whenStr),wholeString.indexOf(whenStr) + whenStr.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) tts.speak(spannedMsg, TextToSpeech.QUEUE_FLUSH, params, "UTT_ID")
根据TtsSpan文档页面,除了TimeBuilder之外,还有许多其他选项,因此请务必检查是否要查找其他自定义项-请注意,没有任何代码示例。
java android text-to-speech
1个回答
0
投票
根据TtsSpan文档页面,除了TimeBuilder之外,还有许多其他选项,因此请务必检查是否要查找其他自定义项-请注意,没有任何代码示例。
© www.soinside.com 2019 - 2024. All rights reserved.