我有一个使用TextToSpeech宣布参考号的应用程序。由于公告将只包含10个数字和26个字母,我以为我会利用我在另一个应用程序中使用synthesizetofile方法制作的预先录制的wav文件。
文档说明如果缺少指定的文件,那么TTS引擎将使用网络在线合成。我已经像这样设置了TTS:
String filePrefix = Environment.getExternalStorageDirectory()
.getAbsolutePath()
+ "/Android/data/"
+ this.getString(R.string.package_name) + "/files/";
int rv = 0;
for (char c = 'A'; c<= 'Z'; c++){
mWavFileName = filePrefix + Character.toString(c) + ".wav";
rv = mTts.addSpeech(Character.toString(c), mWavFileName);
}
我定义的地方
TextToSpeech mTts;
String mWavFileName;
如果文件存在,那么我的代码会说出这个字母
mTts.speak("A", TextToSpeech.QUEUE_ADD, null);
工作正常。如果文件丢失,则An introduction to Text-To-Speech in Android 中描述的行为未实现。
这样,对wakeUpText的相同字符串内容的speak()调用将导致destFileName的播放。如果文件丢失,那么speak将表现得就像音频文件不存在一样,并将合成并播放给定的字符串。
我根本看不到这一点。如果文件丢失,则不会说出任何内容。如果文件丢失,返回值'rv'永远不会显示错误。有没有办法纠正这种行为,除了在执行'addSpeech'行之前检查文件是否存在?