Android TTS(文本到语音)不';I don’我一个字母的发音都不正确

Android TTS(文本到语音)不';I don’我一个字母的发音都不正确,android,text-to-speech,Android,Text To Speech,我试图在我的活动中实现Android的文本到语音技术。这是一个简单的文字游戏,我希望TTS引擎在用户按下某个按钮时拼写一个字母。例如,当用户按下A按钮时,我想听到“A” 问题是.speak方法只接受字符串作为输入。所以,当我告诉TTS引擎我只需要一个字母串时,声音不是字母的发音。有没有什么方法可以让它正确地发音单字母字符串 到目前为止,解决方案是将听起来像字母的单词用作字符串输入,例如“bee”代表B,“see”代表C等等。但是F,H等等呢 还有其他想法吗?经过大量实验,我找到了一个更好的解决方

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

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

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


还有其他想法吗?

经过大量实验,我找到了一个更好的解决方案。为了让android tts引擎发出一封信,你必须用大写字母书写。例如“B”。这样它就能正确发音了!唯一的例外是“A”和“Z”,它们必须写为“ay”和“zet”


希望这有帮助

我已经更新了一个测试TTS的旧项目,所以你说“是”的方式是这样的,但将逗号分隔以强制每个字母发音,我正在尝试你说的另一个选项(两者都包括在这里):

主要类别包括:

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 "";

}
}
请在此处检查已完成的代码:


eff?艾奇?我认为你所做的可能是避免这种行为的唯一方法;在谷歌TTS引擎3.10.10版中,各个字母按预期以英语合成。在Motorolo Moto G上,运行KitKat 4.4.4,同时使用英国和美国语音,我发现我需要使用“Ae”(“ay”给出声音“I”)。