我有一台带有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
我确信这两个文件都存在。 这是为什么?声音文件有什么限制吗?例如,他们的频率,或单声道或立体声?
我已经检查了docs并且没有看到任何相关内容。
答案 0 :(得分:2)
我们应该推迟这种文本映射到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);
//...
}