1

我有一部带有 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

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

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

4

1 回答 1

4

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

我们应该将这种文本映射推迟到成功初始化 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);
    //...
}
于 2013-06-15T15:08:30.277 回答