[Update]离线TTS支持语音播报完成的回调和停止语音播报

This commit is contained in:
chenfufeng
2022-03-04 16:05:10 +08:00
parent b382c54612
commit 02bdba7832
4 changed files with 51 additions and 16 deletions

View File

@@ -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();
}
}
/**
* 问答类型语音注册:默认确认和取消
*

View File

@@ -58,6 +58,10 @@ interface IMogoTTS extends IProvider {
*/
void speakTTSVoice( String tts, PreemptType type, IMogoTTSCallback callback );
void stopSpeakTts(String text);
void stopTts();
/**
* 注册问答指令,默认恢复:确认、取消
*

View File

@@ -71,6 +71,9 @@ interface IMogoTTSCallback {
default void onSpeakEnd( String speakText ) {
}
default void onSpeakError( String speakText, String errorMsg) {
}
/**
* 语音播报完临时命令选择超时
*

View File

@@ -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