TTS Android删除addSpeech项目?

时间:2010-12-17 07:46:05

标签: android

我用过

mTts.addSpeech(text, filename.getAbsolutePath() );

将音频文件映射到特定的文本字符串。

问题是如果使用删除文件,这在我的情况下可能/可能,我需要从mTts中删除addSpeech映射(使用不存在的removeSpeech()),以便它恢复为计算机语音。

这可能吗?

这是我使用addSpeech添加文件后得到的堆栈跟踪,然后删除该文件并尝试再次说话。

12-17 15:41:45.016: ERROR/MediaPlayer(361): error (1, -2147483648)
12-17 15:41:45.056: DEBUG/MediaPlayer(361): create failed:
12-17 15:41:45.056: DEBUG/MediaPlayer(361): java.io.IOException: Prepare failed.: status=0x1
12-17 15:41:45.056: DEBUG/MediaPlayer(361):     at android.media.MediaPlayer.prepare(Native Method)
12-17 15:41:45.056: DEBUG/MediaPlayer(361):     at android.media.MediaPlayer.create(MediaPlayer.java:611)
12-17 15:41:45.056: DEBUG/MediaPlayer(361):     at android.media.MediaPlayer.create(MediaPlayer.java:588)
12-17 15:41:45.056: DEBUG/MediaPlayer(361):     at android.tts.TtsService.processSpeechQueue(TtsService.java:1098)
12-17 15:41:45.056: DEBUG/MediaPlayer(361):     at android.tts.TtsService.speak(TtsService.java:507)
12-17 15:41:45.056: DEBUG/MediaPlayer(361):     at android.tts.TtsService.access$1900(TtsService.java:58)
12-17 15:41:45.056: DEBUG/MediaPlayer(361):     at android.tts.TtsService$1.speak(TtsService.java:1256)
12-17 15:41:45.056: DEBUG/MediaPlayer(361):     at android.speech.tts.ITts$Stub.onTransact(ITts.java:86)
12-17 15:41:45.056: DEBUG/MediaPlayer(361):     at android.os.Binder.execTransact(Binder.java:288)
12-17 15:41:45.056: DEBUG/MediaPlayer(361):     at dalvik.system.NativeStart.run(Native Method)

1 个答案:

答案 0 :(得分:0)

来自API:

public int addSpeech(String text,String filename)

在文本字符串和声音文件之间添加映射。使用此功能,可以为一串文本添加自定义代词。调用此方法后,后续调用

说话(String,int,HashMap)

将播放指定的声音资源(如果可用),或合成缺少的文本。

所以,这是可能的

我写简单的方法。它有效。

private void speak(String text) {
    if(text != null) {
        HashMap<String, String> myHashAlarm = new HashMap<String, String>();
        myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM));
        myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "end of message - "+text);
        mTts.speak(text, TextToSpeech.QUEUE_FLUSH, myHashAlarm);
    }
}