当预先录制的wav文件丢失时,TextToSpeech会回退到后端服务

时间:2012-02-04 18:46:44

标签: android text-to-speech

我有一个使用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'行之前检查文件是否存在?

0 个答案:

没有答案