From 02bdba783206477fdea7dbb4855ec7698eac53b5 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Fri, 4 Mar 2022 16:05:10 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=E7=A6=BB=E7=BA=BFTTS=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=AF=AD=E9=9F=B3=E6=92=AD=E6=8A=A5=E5=AE=8C=E6=88=90=E7=9A=84?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E5=92=8C=E5=81=9C=E6=AD=A2=E8=AF=AD=E9=9F=B3?= =?UTF-8?q?=E6=92=AD=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/commons/voice/AIAssist.java | 12 +++++ .../main/java/com/mogo/tts/base/IMogoTTS.java | 4 ++ .../com/mogo/tts/base/IMogoTTSCallback.java | 3 ++ .../main/java/com/mogo/tts/pad/PadTTS.java | 48 ++++++++++++------- 4 files changed, 51 insertions(+), 16 deletions(-) diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java index 6d3c0a814a..fbd8980400 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java @@ -118,6 +118,18 @@ public class AIAssist { } } + public void stopSpeakTts(String tts) { + if ( mTTS != null ) { + mTTS.stopSpeakTts(tts); + } + } + + public void stopTts() { + if ( mTTS != null ) { + mTTS.stopTts(); + } + } + /** * 问答类型语音注册:默认确认和取消 * diff --git a/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTS.java b/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTS.java index d9f9ea3e0d..51b49b3377 100644 --- a/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTS.java +++ b/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTS.java @@ -58,6 +58,10 @@ interface IMogoTTS extends IProvider { */ void speakTTSVoice( String tts, PreemptType type, IMogoTTSCallback callback ); + void stopSpeakTts(String text); + + void stopTts(); + /** * 注册问答指令,默认恢复:确认、取消 * diff --git a/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTSCallback.java b/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTSCallback.java index b39211e24f..e9cecafb98 100644 --- a/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTSCallback.java +++ b/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTSCallback.java @@ -71,6 +71,9 @@ interface IMogoTTSCallback { default void onSpeakEnd( String speakText ) { } + default void onSpeakError( String speakText, String errorMsg) { + } + /** * 语音播报完临时命令选择超时 * diff --git a/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java b/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java index c875a538ad..897ce9a2be 100644 --- a/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java +++ b/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java @@ -328,16 +328,26 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsList * @param text */ public void speakTTSVoice(String text, IMogoTTSCallback callBack) { - speakTTSVoice(text); -// try { -// initFlushStatus(); -// if ( mHasFlush ) { -// mSpeakVoiceMap.put( text, callBack ); -// mVoiceClient.speakDefault( text ); -// } -// } catch ( Exception e ) { -// e.printStackTrace(); -// } + if (mEngine != null && mHasAuth) { + mSpeakVoiceMap.put(text, callBack); + // 合成并播放 + mEngine.speak(text, text, mAILocalTTSIntent); + } + } + + public void stopSpeakTts(String text) { + if (mEngine != null && mHasAuth) { + if (mSpeakVoiceMap.containsKey(text)) { + mSpeakVoiceMap.remove(text); + } + mEngine.stop(); + } + } + + public void stopTts() { + if (mEngine != null && mHasAuth) { + mEngine.stop(); + } } /** @@ -349,9 +359,7 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsList Logger.d(TAG, "speakTTSVoice"); if (mEngine != null && mHasAuth) { // 合成并播放 - mEngine.speak(text, "1024", mAILocalTTSIntent); - // 合成音频,不播放,同时输出实时pcm音频,音频回调在onSynthesizeDataArrived接口 -// mEngine.synthesize(mAILocalTTSIntent, text, "1024"); + mEngine.speak(text, text, mAILocalTTSIntent); } } @@ -642,7 +650,7 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsList context.sendBroadcast(intent); } - private static class AILocalTTSListenerImpl implements AITTSListener { + private class AILocalTTSListenerImpl implements AITTSListener { @Override public void onInit(int status) { @@ -655,8 +663,12 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsList } @Override - public void onError(String s, AIError aiError) { + public void onError(String utteranceId, AIError aiError) { Logger.d(TAG, "检测到错误:" + aiError.toString()); + IMogoTTSCallback callBack = PadTTS.this.mSpeakVoiceMap.remove(utteranceId); + if (callBack != null) { + callBack.onSpeakError(utteranceId, aiError.getError()); + } } @Override @@ -665,8 +677,12 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsList } @Override - public void onCompletion(String s) { + public void onCompletion(String utteranceId) { Logger.d(TAG, "播放完成"); + IMogoTTSCallback callBack = PadTTS.this.mSpeakVoiceMap.remove(utteranceId); + if (callBack != null) { + callBack.onSpeakEnd(utteranceId); + } } @Override