Android TTS(文字转语音)没有正确发音单个字母

时间:2012-03-15 09:19:39

标签: android text-to-speech

我正在尝试在我的Activity中实现Android的文本到语音技术。这是一个简单的文字游戏,当用户按下某个按钮时,我希望TTS引擎拼写单个字母。例如,当用户按下 A 按钮时,我想听到“A”。

问题是.speak方法只接受String作为输入。所以,当我告诉TTS引擎我只想要一个单字母字符串时,声音不是字母的发音。有什么方法可以让它正确地发出单字母字符串吗?

到目前为止,解决方案是用作字符串输入,听起来像字母的单词,例如 B 的“bee”, C 的“see”等等。但是 F H 等等呢?

还有其他想法吗?

2 个答案:

答案 0 :(得分:6)

经过多次试验,我找到了更好的解决方案。为了让android tts引擎响起一个字母,你必须用大写字母来编写它。例如“B”。这样它会正确发音!唯一的例外是“A”和“Z”,必须写成“ay”和“zet”!

希望这有帮助

答案 1 :(得分:0)

我已经更新了一个测试TTS的老项目,所以是你说的方式,但是将逗号分开以逐字逐句强制发音,我正在尝试你也说的另一个选项(两者都包含在这里):< / p>

enter image description here

主要课程是:

public class SpellUtil {

public static String convertToSpellOnce(String words) {
    StringBuilder sb = new StringBuilder();
    for (char letter : words.toCharArray()) {
        sb.append(letter);
        //sb.append(convertSoundBased(letter)); this is another option
        sb.append(",");
    }
    return sb.toString();
}

private static String convertSoundBased(char letter) {
    switch (letter) {
        case 'a':
            return "a";
        case 'b':
            return "bee";
        case 'c':
            return "cee";
        case 'd':
            return "dee";
        case 'e':
            return "e";
        case 'f':
            return "ef";
        case 'g':
            return "gee";
        case 'h':
            return "aitch";
        case 'i':
            return "i";
        case 'j':
            return "jay";
        case 'k':
            return "kay";
        case 'l':
            return "el";
        case 'm':
            return "em";
        case 'n':
            return "en";
        case 'o':
            return "o";
        case 'p':
            return "pee";
        case 'q':
            return "cue";
        case 'r':
            return "ar";
        case 's':
            return "ess";
        case 't':
            return "tee";
        case 'u':
            return "u";
        case 'v':
            return "vee";
        case 'w':
            return "double-u";
        case 'x':
            return "ex";
        case 'y':
            return "wy";
        case 'z':
            return "zed";
    }
    return "";

}
}

点击此处查看完成的代码:

https://github.com/tiveor/android-intermediate/tree/master/SpeechTest