我有一些代码:
tts.speak(Integer.toString(score), TextToSpeech.QUEUE_ADD, null);
其中score
是介于0到100之间的int
。有时但不是很常见,我会听到分别准备好的数字,即“八六”而不是“八十六”。其他人有没有经历过?除了巨大的转换声明外,您还有什么想法吗?
String to_read = "zero";
switch (score) {
case 1: to_read = "one"; break;
case 2: to_read = "two"; break;
case 3: to_read = "three"; break;
case 4: to_read = "four"; break;
case 5: to_read = "five"; break;
...
}
tts.speak(to_read, TextToSpeech.QUEUE_ADD, null);
再三考虑一下,除非我们将要在Strings.xml中添加一百个新字符串并将其全部翻译...,否则巨大的switch语句将无法很好地工作。
答案 0 :(得分:0)
由于您使用的是QUEUE_ADD,并且假设您正在向队列中快速添加随机分数,因此您可能实际上听到的是:
除了这些可能性之外,基本事实是,您不对任何给定的TTS引擎在处理字符串方面的内部行为负责。
用户可能安装了许多引擎(以及这些引擎的子版本)和/或语言中的一种...行为可能都不同,因此,如果您尝试补偿要测试的引擎,它只会打开一罐蠕虫,并在其余引擎上导致无法预测/有害的结果。