Android TextToSpeech addSpeech() 不起作用

Mou*_*usa 2 android text-to-speech

我有一部 Android 2.3 的 HD Desire 手机。

TTS 运行良好,它可以朗读我给出的每一条文字。但是,当我使用下面的任何一行来为某些文本设置我自己的声音时,它只是忽略它并合成文本,就像该行没有写一样!

tts.addSpeech("salam", "/sdcard/salam.wav");
tts.addSpeech("shalam", "com.company.appname", R.raw.shalam);
...
tts.speak("salam", TextToSpeech.QUEUE_FLUSH, null);  //<--This isn't playing my voice file.
tts.speak("shalam", TextToSpeech.QUEUE_FLUSH, null);  //<--Neither is this
Run Code Online (Sandbox Code Playgroud)

我确信这两个文件都存在。这是为什么?声音文件有限制吗?例如他们的频率,或者是单声道还是立体声?

我已经检查过文档并没有看到任何相关内容。

Mou*_*usa 5

好吧,我发现了我的问题,非常愚蠢的情况浪费了我几个小时!如果有人犯了我的错误,我希望这会有所帮助。

我们应该推迟文本映射到 TTS 成功初始化的时间点,例如在onInit函数中:

@Override
public void onInit(int status) {
    if(status == TextToSpeech.SUCCESS)
    {
        tts.setLanguage(Locale.US);
        mapVoices();
    }
    else
        ...
}

private void mapVoices()
{
    tts.addSpeech("salam", "/sdcard/salam.wav");
    tts.addSpeech("shalam", "com.company.appname", R.raw.shalam);
    //...
}
Run Code Online (Sandbox Code Playgroud)