下沉 tts 功能,分别实现"小智语音"和"小迪语音"

This commit is contained in:
wangcongtao
2020-10-12 20:21:15 +08:00
parent f628198de9
commit 0b7468a8a8
42 changed files with 1363 additions and 572 deletions

View File

@@ -0,0 +1,153 @@
package com.mogo.tts.base;
import android.content.Context;
import com.alibaba.android.arouter.facade.template.IProvider;
public
/**
* @author congtaowang
* @since 2020/10/12
*
* 语音抽象
*/
interface IMogoTTS extends IProvider {
/**
* 释放资源
*/
void release();
/**
* 缓存的语音指令注册状态
*
* @return true - 已注册、false - 未注册
*/
default boolean hasFlush() {
return true;
}
/**
* 将缓存的免唤醒指令全部注册一遍
*/
void flush();
/**
* 播报 tts 语音
*
* @param tts 语音内容
*/
void speakTTSVoice( String tts );
/**
* 播放 tts 语音
*
* @param tts 语音内容
* @param callback 回调
* {@link IMogoTTSCallback#onSpeakEnd(String)}
*/
void speakTTSVoice( String tts, IMogoTTSCallback callback );
/**
* 播放 tts并设置播报类型
*
* @param tts 语音内容
* @param type 播报类型 {@link PreemptType}
* @param callback 回调
* {@link IMogoTTSCallback#onSpeakEnd(String)}
*/
void speakTTSVoice( String tts, PreemptType type, IMogoTTSCallback callback );
/**
* 注册问答指令,默认恢复:确认、取消
*
* @param tts 播报内容
* @param callback 回调
* {@link IMogoTTSCallback#onCmdAction(String)}
* {@link IMogoTTSCallback#onCmdCancel(String)} (String)}
* {@link IMogoTTSCallback#onSpeakSelectTimeOut(String)} (String)}
*/
void speakQAndACmd( String tts, IMogoTTSCallback callback );
/**
* 注册问答指令,默认恢复:确认、取消
*
* @param tts 播报内容
* @param okWords 确认指令唤醒词
* @param cancelWords 取消指令唤醒词
* @param callback 回调
* {@link IMogoTTSCallback#onCmdAction(String)}
* {@link IMogoTTSCallback#onCmdCancel(String)} (String)}
* {@link IMogoTTSCallback#onSpeakSelectTimeOut(String)} (String)}
*/
void speakQAndACmd( String tts, String[] okWords, String[] cancelWords, IMogoTTSCallback callback );
/**
* 注册免唤醒指令
*
* @param cmd 免唤醒指令
* @param cmdWords 免唤醒词组
* @param callback 回调
* {@link IMogoTTSCallback#onCmdSelected(String)}
*/
void registerUnWakeupCommand( String cmd, String[] cmdWords, IMogoTTSCallback callback );
/**
* 注销免唤醒指令
*
* @param cmd 指令
*/
void unregisterUnWakeupCommand( String cmd );
/**
* 注销免唤醒指令
*
* @param cmd 指令
* @param callback 具体注销的回调对象(部分指令复用的情况)
*/
void unregisterUnWakeupCommand( String cmd, IMogoTTSCallback callback );
/**
* 启动语音
*
* @param context
*/
void startAIAssist( Context context );
/**
* 启动语音
*
* @param context
* @param status window_start_cancel
* 0 - 结束
* 1 - 显示
* 2 - 未激活调试进入
*/
void startAIAssist( Context context, int status );
/**
* 中断正在播报的语音内容
*/
void breakOffSpeak();
// Deprecated api, but should keep...
@Deprecated
default void speakTTSAndDuck( String tts ) {
}
@Deprecated
default void speakTTSAndDuck( String tts, IMogoTTSCallback callback ) {
}
@Deprecated
default void shutUp( String ttsId, String text ) {
}
default void clearTTSCallback( String tts ) {
}
}

View File

@@ -0,0 +1,81 @@
package com.mogo.tts.base;
public
/**
* @author congtaowang
* @since 2020/10/12
*
* 描述
*/
interface IMogoTTSCallback {
/**
* 新SDK接口
*
* @param ttsId
* @param tts
*/
@Deprecated
default void onTTSStart( String ttsId, String tts ) {
}
/**
* 新SDK接口
*
* @param ttsId
* @param tts
*/
@Deprecated
default void onTTSEnd( String ttsId, String tts ) {
}
/**
* 新SDK接口
*
* @param ttsId
* @param tts
*/
@Deprecated
default void onTTSError( String ttsId, String tts ) {
}
/**
* 免唤醒命令响应回调
*
* @param cmd
*/
default void onCmdSelected( String cmd ) {
}
/**
* 语音播报临时免唤醒“确定”命令
*
* @param speakText 播报内容
*/
default void onCmdAction( String speakText ) {
}
/**
* 语音播报临时免唤醒“取消”命令
*
* @param speakText 播报内容
*/
default void onCmdCancel( String speakText ) {
}
/**
* 语音播报完毕
*
* @param speakText 播报内容
*/
default void onSpeakEnd( String speakText ) {
}
/**
* 语音播报完临时命令选择超时
*
* @param speakText 播报内容
*/
default void onSpeakSelectTimeOut( String speakText ) {
}
}

View File

@@ -0,0 +1,15 @@
package com.mogo.tts.base;
public
/**
* @author congtaowang
* @since 2020/10/12
* <p>
* 描述
*/
interface MogoTTSConstants {
String API_PATH = "/tts/api";
String API_NAME = "TTS";
}

View File

@@ -0,0 +1,32 @@
package com.mogo.tts.base;
public
/**
* @author congtaowang
* @since 2020/10/12
*
* 语音打算类型
*/
enum PreemptType {
/**
* 不打断
*/
PREEMPT_TYPE_NONE,
/**
* 立即打断取消当前的tts插队播放
*/
PREEMPT_TYPE_IMMEDIATELY,
/**
* 下一个插入不取消当前的tts插队下一个播放
*/
PREEMPT_TYPE_NEXT,
/**
* 清空队列
*/
PREEMPT_TYPE_FLUSH,
/**
* 立即打断不取消当前tts
*/
PREEMPT_TYPE_IMMEDIATELY_WITHOUT_CANCEL
}