1

我有一个要求(在 Android 代码中),TTS 播放器应该说出数字,例如“1234”作为“一二三四”。然而目前它的说法是“一千二百三十四”。

4

2 回答 2

2

TTS 不允许您指定如何读取文本,因此您的代码必须修改文本输入,以便读取各个数字。

我建议@opalenzuela 提到每个数字之间有一个空格。这应该会导致 TextToSpeech 读取各个数字。

如果您需要一些代码来帮助您检测数字,请使用:

  private boolean isNumber(String word)
 {
boolean isNumber = false;
  try
  {
      Integer.parseInt(word);
      isNumber = true;
   } catch (NumberFormatException e)
  {
       isNumber = false;
  }
  return isNumber;
}
于 2013-10-01T10:08:49.437 回答
2

当面向 API 级别 21+(Lollipop)时,尝试以下新的可能性TtsSpan

SpannableString spannableString = new SpannableString("The number is 123456789.");
spannableString.setSpan(new TtsSpan.DigitsBuilder().build(), 14, 22, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
new TextToSpeech(context, null).speak(spannableString, 0, null, null);

(未测试)

于 2015-05-18T09:09:25.367 回答