Android TTS说0为“哦”

时间:2015-10-27 17:11:06

标签: android

当使用Android TextToSpeech讲有数字的消息时,Android会将0(零)称为“哦”而不是“零”。所有其他数字都按预期说出。

我尝试了几种不同的发言方式,所有这些都导致了这个问题。首先,我以正常方式尝试:

    mTTS = new TextToSpeech(mContext, this);
    String text= "this is a test";
    String digits=  "0 0 0 1";
    String finalString= text+digits;

    // speak something using google TTS
    Bundle lParams = new Bundle();
    lParams.putInt(TextToSpeech.Engine.KEY_PARAM_STREAM, Constants.TTS_AUDIO_STREAM);
    mTTS.speak(finalString, TextToSpeech.QUEUE_FLUSH, lParams, "");

我还尝试digits为“0001”(无空格)。最后两人都说“这是一个考验哦哦哦哦”。接下来,我尝试使用TtsSpans:

    mTTS = new TextToSpeech(mContext, this);
    String text= "this is a test";
    String digits=  "0 0 0 1";
    String finalString= text+digits;
    Spannable lSpannedMsg = new SpannableString( finalString );
    TtsSpan lSpan = new TtsSpan.DigitsBuilder(digits).build();
    TtsSpan lSpanText = new TtsSpan.TextBuilder(text).build();

    lSpannedMsg.setSpan(lSpan, finalString.indexOf(digits), finalString.indexOf(digits) + digits.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    lSpannedMsg.setSpan(lSpanText, finalString.indexOf(text), finalString.indexOf(text) + text.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    // speak something using google TTS
    Bundle lParams = new Bundle();
    lParams.putInt(TextToSpeech.Engine.KEY_PARAM_STREAM, Constants.TTS_AUDIO_STREAM);
    mTTS.speak(lSpannedMsg, TextToSpeech.QUEUE_FLUSH, lParams, "");

即使使用跨越的弦,引擎仍然说“这是一个测试哦哦哦哦”。有没有办法迫使谷歌说0为“零”?我想避免调查发送的字符串并用“零”替换0,因为这会导致其他语言出现问题。

0 个答案:

没有答案