-
Notifications
You must be signed in to change notification settings - Fork 87
Speech_chn
temi 的语音流由四个主要部分组成:唤醒、自动语音识别(ASR)、自然语言处理(NLP)和文本到语音的转换(TTS)。
返回值 | 方法 | 说明 |
---|---|---|
void | speak(TtsRequest ttsRequest) | 语音播报文本(TTS) |
void | cancelAllTtsRequests() | 取消 TTS 播报 |
void | wakeup() | 唤醒 temi |
String | getWakeupWord() | 获取当前唤醒词 |
void | askQuestion(String question) | 让 temi 主动说话,并等待用户回答 |
void | finishConversation() | 结束一个对话 |
void | startDefaultNlu(String text, SttLanguage sttLanguage) | 触发系统默认的自然语言理解(NLU) |
void | setTtsService(IttsService ttsService) | 设置 TTS 服务 |
void | publishTtsStatus(TtsRequest ttsRequest) | |
boolean | setTtsVoice(TtsVoice ttsVoice) | 设置 TTS 声音,语速,语调 |
TtsVoice | getTtsVoice() | 获取 TTS 声音,语速,语调 |
int | setAsrLanguages() | 设置 ASR 语言 |
接口 | 说明 |
---|---|
TtsListener | TTS 播报状态监听器 |
WakeupWordListener | 唤醒监听器 |
AsrListener | 语音识别(ASR)监听器 |
ConversationViewAttachesListener | 对话视图监听器 |
OnConversationStatusChangedListener | 对话层状态、文本内容变化监听器 |
OnTtsVisualizerWaveFormDataChangedListener | TTS 音频可视化 wave form 数据变化监听器 |
OnTtsVisualizerFftDataChangedListener | TTS 音频可视化 fft 数据变化监听器 |
ITtsService | 自定义 TTS 服务规范接口 |
模型 | 说明 |
---|---|
TtsRequest | TTS 请求对象 |
TtsVoice | TTS 声音参数 |
Gender | TTS 性别参数 |
SttLanguage | ASR / STT 语言 |
WakeupRequest | Wakeup 行为 |
WakeupOrigin | Wakeup 来源 |
用这个方法来语音播报一段文本。
-
参数
参数 类型 说明 ttsRequest TtsRequest TTS 请求对象,包含待播报文本内容 -
原型
void speak(TtsRequest ttsRequest);
-
所需权限
无。
-
最小支持版本
0.10.36
用这个方法来停止当前的TTS播报并清空TTS请求队列。
-
原型
void cancelAllTtsRequests();
-
所需权限
无。
-
最小支持版本
0.10.36
触发temi的唤醒。132 版本支持传入语言,指定 temi 可以听懂的语言。可以设置三种额外的语言。
此方法指定的语言优先级高于 setAsrLanguages() 方法。
目前此方法仅在英文版中支持,中文版 temi 暂时无法使用。
133 版本增加了一个覆写方法 wakeup(SttRequest sttRequest)
135 版本增加了一个参数 WakeupRequest
-
参数
参数 类型 说明 languages List<SttLanguage> 唤醒语言,传空列表表示使用系统语言,1.132.0 版本加入,配合 132 版本使用 wakeupRequest WakeupRequest 唤醒请求,1.135.1 版本加入,配合 135 版本使用 参数 类型 说明 sttRequest SttRequest 唤醒语言及一些实验性参数,133版本加入。 wakeupRequest WakeupRequest 唤醒请求,1.135.1 版本加入,配合 135 版本使用 -
原型
void wakeup(List<SttLanguage> languages, WakeupRequest wakeupRequest); void wakeup(SttRequest sttRequest, WakeupRequest wakeupRequest);
-
所需权限
无。
-
最小支持版本
0.10.49
用这个方法来获取 temi 的唤醒词。
-
返回值
类型 说明 String 唤醒词 -
原型
String getWakeupWord();
-
所需权限
无。
-
最小支持版本
0.10.49
用这个方法让 temi 主动向用户说话,并等待用户回答。
133 版本增加了一个覆写方法,支持传入 TtsRequest、SttRequest 作为参数。
-
参数
参数 类型 说明 question String 待播报的内容 参数 类型 说明 question TtsRequest 待播报的内容,可以使用 TtsRequest 中的参数控制 TTS,133版本加入 sttRequest SttRequest 控制播报之后的 STT 行为,类似于 wakeup(SttRequest sttRequest)
的效果,默认为 null, 133版本加入 -
原型
void askQuestion(String question); void askQuestion(TtsRequest question, SttRequest sttRequest);
-
所需权限
无。
-
最小支持版本
0.10.63
-
推荐
可通过配合 AsrListener 来实现一个自定义的对话流,具体可参考 Sample 的代码。
用这个方法以结束会话(关闭ASR收音等)。
-
原型
void finishConversation();
-
所需权限
无。
-
最小支持版本
0.10.63
用这个方法来触发系统默认的自然语言理解(NLU)。如果希望能在技能中直接触发系统的技能比如天气或音乐,可直接将“今天天气”或“播放音乐”作为参数传入并调用此方法来实现。
-
参数
参数 类型 说明 text String 待处理的自然语言文本 sttLanguage SttLanguage 指定文本语言,133 版本增加,默认为 SttLangauge.SYSTEM。中文版 temi 不支持该参数。 -
原型
void startDefaultNlu(String text, SttLanguage sttLanguage);
-
所需权限
作为选中的Kiosk
-
最小支持版本
0.10.70
-
注意
这个接口每 5 秒内只能被调用一次。
用这个方法配置你自己的 TTS 服务,正确配置之后,temi 的 TTS 功能需求将依赖于这个 TTS 服务,这里不包括腾讯云小微的自有技能(天气、百科等),除此之外都将使用这个自定义的 TTS服务。如果有需要(比如播报自有 TTS 服务无法播报的语言)使用回 temi 原有 TTS 服务,则可通过调用 speak() 方法来实现。
-
参数
参数 类型 说明 ttsService ITtsService 实现了 ITtsService 的子类实例,如果传入的为 null
,将解绑 TTS 服务 -
原型
void setTtsService(ITtsService ttsService);
-
所需权限
AndroidManifest 中声明
com.robotemi.sdk.metadata.OVERRIDE_TTS
覆盖原 TTS -
最小支持版本
0.10.77
用这个方法来发布自定义 TTS 服务的 TTS 播报状态,将状态通知给 temi。
-
参数
参数 类型 说明 ttsReqeust TtsRequest 当前正在处理的 TtsRequest 对象(需包含状态) -
原型
void setTtsService(TtsRequest ttsReqeust);
-
所需权限
AndroidManifest 中声明
com.robotemi.sdk.metadata.OVERRIDE_TTS
覆盖原 TTS -
最小支持版本
0.10.77
设置 TTS 声音,语速,语调。 中文版软件暂不支持。
-
参数
参数 类型 说明 ttsVoice TtsVoice TtsVoice 声音参数 -
返回值
类型 说明 boolean true 表示配置成功,false 表示配置失败 -
原型
boolean setTtsVoice(TtsVoice ttsVoice);
-
所需权限
SETTINGS
-
最小支持版本
1.129.0
获取 TTS 声音,语速,语调。中文版软件暂不支持。
-
返回值
Type Description TtsVoice 当前 TTS 声音参数 -
原型
TtsVoice getTtsVoice();
-
最小支持版本
1.129.0
改变 ASR 语言,在 KIOSK 应用活跃期间保持生效。可以设置三种额外的语言。
wakeup() 指定的语言会在其触发的对话中临时覆盖掉当前方法指定的语言。
目前此方法仅在英文版中支持,中文版 temi 暂时无法使用。
-
返回值
类型 说明 int 0 成功, -1 无效, 403 无权限 -
原型
int setAsrLanguages(List<SttLanguage> languages);
-
所需权限
KIOSK
-
最小支持版本
1.132.0
让你的上下文实现这个监听器接口,并重写相关方法以获取TTS状态变化信息。
package com.robotemi.sdk;
interface Robot.TtsListener {}
-
参数
参数 类型 说明 ttsRequest TtsRequest TTS 请求对象,包含待播报文本内容及状态 -
原型
void onTtsStatusChanged(TtsRequest ttsRequest);
-
参数
参数 类型 说明 listener TtsListener 实现了这个接口的类的实例 -
原型
void addTtsListener(TtsListener listener);
-
参数
参数 类型 说明 listener TtsListener 实现了这个接口的类的实例 -
原型
void removeTtsListener(TtsListener listener);
-
最小支持版本
0.10.36
让你的上下文实现这个监听器接口,并重写相关方法以在用户触发唤醒词可获取到唤醒词的内容以及方向角度。
package com.robotemi.sdk;
interface Robot.WakeupWordListener {}
-
参数
参数 类型 说明 wakeupWord String 包含用于触发的唤醒词的字符串对象 direction int - 0 - temi被正前方唤醒
- 90 - temi被左边唤醒
- 180 - temi被后方唤醒
- 270 - temi被右边唤醒
- 555 - 无法确定唤醒方位
origin WakeupOrigin 唤醒来源 -
原型
void onWakeupWord(String wakeupWord, int direction, WakeupOrigin origin);
-
参数
参数 类型 说明 listener WakeupWordListener 实现了这个接口的类的实例 -
原型
void addWakeupWordListener(WakeupWordListener listener);
-
参数
参数 类型 说明 listener WakeupWordListener 实现了这个接口的类的实例 -
原型
void removeWakeupWordListener(WakeupWordListener listener);
-
最小支持版本
0.10.36
让你的上下文实现这个监听器接口,并重写相关方法以获取ASR结果。
132 版本后,同时会返回识别到的文字和语言。
package com.robotemi.sdk;
interface Robot.AsrListener {}
-
参数
参数 类型 说明 asrResult String temi被唤醒后收听到的语音转成文字内容之后的字符串对象。 sttLanguage SttLanguage 文字结果对应的语言 (132 版本加入) -
原型
void onAsrResult(String asrResult, SttLanguage sttLanguage);
-
参数
参数 类型 说明 listener AsrListener 实现了这个接口的类的实例 -
原型
void addAsrListener(AsrListener listener);
-
参数
参数 类型 说明 listener AsrListener 实现了这个接口的类的实例 -
原型
void removeAsrListener(AsrListener listener);
-
最小支持版本
0.10.53
让你的上下文实现这个监听器接口,并重写相关方法以监听会话视图是否出现。
package com.robotemi.sdk;
interface Robot.ConversationViewAttachesListener {}
-
参数
参数 类型 说明 isAttached boolean true
(false
)表示会话视图已出现(消失) -
原型
void onConversationAttaches(boolean isAttached);
-
参数
参数 类型 说明 listener ConversationViewAttachesListener 实现了这个接口的类的实例 -
原型
void addConversationViewAttachesListenerListener(ConversationViewAttachesListener listener);
-
参数
参数 类型 说明 listener ConversationViewAttachesListener 实现了这个接口的类的实例 -
原型
void removeConversationViewAttachesListenerListener(ConversationViewAttachesListener listener);
-
最小支持版本
0.10.36
让你的上下文实现这个监听器接口,并重写相关方法以监听会话层状态已经文本内容变化。
注意: 只有是作为选中的 Kiosk(商店模式)应用并且在 AndroidManifest.xml 文件中声明了覆盖原有会话层用户交互界面才能收到相关回调数据。
package com.robotemi.sdk.listeners;
interface OnConversationStatusChangedListener {}
这里的常量均为对话层状态。
常量 | 类型 | 值 | 说明 |
---|---|---|---|
IDLE | int | 0 | 空闲,无交互 |
LISTENING | int | 1 | 收音中 |
THINKING | int | 2 | 自然语言处理中 |
SPEAKING | int | 3 | TTS 播报中 |
-
参数
参数 类型 说明 status int 会话层状态 text String 会话层文本内容 -
原型
void onConversationStatusChanged(int status, String text);
-
参数
参数 类型 说明 listener OnConversationStatusChangedListener 实现了这个接口的类的实例 -
原型
void addOnConversationStatusChangedListener(OnConversationStatusChangedListener listener);
-
参数
参数 类型 说明 listener OnConversationStatusChangedListener 实现了这个接口的类的实例 -
原型
void removeOnConversationStatusChangedListener(OnConversationStatusChangedListener listener);
-
最小支持版本
0.10.72
让你的上下文实现这个监听器接口,并重写相关方法以监听 TTS 音频可视化 Wave form 的数据变化。
package com.robotemi.sdk.listeners;
interface OnTtsVisualizerWaveFormDataChangedListener {}
-
参数
参数 类型 说明 waveForm byte[] Wave form 数据 -
原型
void onTtsVisualizerWaveFormDataChanged(byte[] waveForm);
-
参数
参数 类型 说明 listener OnTtsVisualizerWaveFormDataChangedListener 实现了这个接口的类的实例 -
原型
void addOnTtsVisualizerWaveFormDataChangedListener(OnTtsVisualizerWaveFormDataChangedListener listener);
-
参数
参数 类型 说明 listener OnTtsVisualizerWaveFormDataChangedListener 实现了这个接口的类的实例 -
原型
void removeOnTtsVisualizerWaveFormDataChangedListener(OnTtsVisualizerWaveFormDataChangedListener listener);
-
最小支持版本
0.10.72
让你的上下文实现这个监听器接口,并重写相关方法以监听 TTS 音频可视化 fft 的数据变化。
package com.robotemi.sdk.listeners;
interface OnTtsVisualizerFftDataChangedListener {}
-
参数
参数 类型 说明 fft byte[] fft 数据 -
原型
void OnTtsVisualizerFftDataChangedListener(byte[] fft);
-
参数
参数 类型 说明 listener OnTtsVisualizerFftDataChangedListener 实现了这个接口的类的实例 -
原型
void addOnTtsVisualizerFftDataChangedListener(OnTtsVisualizerFftDataChangedListener listener);
-
参数
参数 类型 说明 listener OnTtsVisualizerFftDataChangedListener 实现了这个接口的类的实例 -
原型
void removeOnTtsVisualizerFftDataChangedListener(OnTtsVisualizerFftDataChangedListener listener);
-
最小支持版本
0.10.72
实现这个接口并重写抽象方法,并将子类的实例通过 setTtsService() 绑定 TTS 服务。
package com.robotemi.sdk.voice;
interface ITtsService {}
temi 将间接调用这个方法来播报 TTS。
134 版本开始,如果 TtsRequest.id 相同,在当前同一 id TtsRequest 正在说话的情况下,新的 TtsRequest 将被添加至 TtsRequest 队列。
-
参数
参数 类型 说明 ttsRequest TtsRequest 待处理的 TtsRequest 对象 -
原型
void speak(TtsRequest ttsRequest);
temi 将间接调用这个方法来取消(中止)当前 TTS。
-
原型
void cancel();
temi 将间接调用这个方法来暂停当前 TTS。
-
原型
void pause();
temi 将间接调用这个方法来继续播报当前 TTS。
-
原型
void resume();
-
最小支持版本
0.10.77
传递给temi的TTS请求对象,其中包含要temi播报的内容信息以及播报的状态信息。
package com.robotemi.sdk;
class TtsRequest {}
-
-
语言 说明 SYSTEM(0) 跟随系统 EN_US(1) 英语(美) ZH_CN(2) 普通话 ZH_HK(3) 广东话 ZH_TW(4) 繁体中文(台湾) TH_TH(5) 泰语 HE_IL(6) 希伯来语 KO_KR(7) 韩语 JA_JP(8) 日语 ID_ID(10) 印度尼西亚语 DE_DE(11) 德语 FR_FR(12) 法语(法) FR_CA(13) 法语(加拿大) PT_BR(14) 葡萄牙语(巴西) AR_EG(15) 阿拉伯语 RU_RU(18) 俄语 IT_IT(19) 意大利语 PL_PL(20) 波兰语 ES_ES(21) 西班牙语 CA_ES(22) 加泰罗尼亚语 (130 版本加入) HI_IN(23) 印地语 (130 版本加入) ET_EE(24) 爱沙尼亚语 (131 版本加入) TR_TR(25) 土耳其语 (131 版本加入) EN_IN(26) 英语(印度) (133 版本加入) MS_MY(27) 马来语 (134 版本加入) VI_VN(28) 越南语 (134 版本加入) EL_GR(29) 希腊语 (134 版本加入) -
原型
enum Language { SYSTEM(0), EN_US(1), ZH_CN(2), ZH_HK(3), ZH_TW(4), TH_TH(5), HE_IL(6), KO_KR(7), JA_JP(8), IN_ID(9), ID_ID(10), DE_DE(11), FR_FR(12), FR_CA(13), PT_BR(14), AR_EG(15), AR_AE(16), AR_XA(17), RU_RU(18), IT_IT(19), PL_PL(20), ES_ES(21), CA_ES(22), HI_IN(23), ET_EE(24), TR_TR(25), EN_IN(26), MS_MY(27), VI_VN(28), EL_GR(29); }
-
属性 | 类型 | 说明 |
---|---|---|
id | UUID | 标识每一个TTS请求的唯一编号 |
speech | String | 播报的文本内容 |
packageName | String | 技能的包名,以便 temi 知道是哪个应用发出的请求 |
status | Status | TTS 请求的状态 |
isShowOnConversationLayer | boolean | temi 播报 TTS 时是否显示对话视图 |
language | int | 语言 |
showAnimationOnly | boolean | true 表示想要显示动画表情。 需要在设置中已经选择了非默认的互动表情 否则会以全屏文字显示 这个参数设置为 true 会覆盖 isShowOnConversationLayer 的 false |
cached | boolean | true 表示需要对当前文字创建或使用缓存 已缓存过的 TTS 可以离线播放 对于较为固定的文字,如 strings.xml 中的内容推荐使用缓存 (129 版本加入) |
创建一个 TtsRequest 对象传入 speak(TtsRequest ttsRequest) 方法以播报 TTS。仅 speech
为必传参数,其它参数可选,并有默认值。
-
参数
参数 类型 说明 speech String 待播报文本内容 isShowOnConversationLayer boolean 默认为 true language Language 默认为 Language.SYSTEM
showAnimationOnly boolean 默认为 false cached boolean 默认为 false -
返回值
类型 说明 TtsRequest 创建的 TTS 请求对象 -
原型
static TtsRequest create(String speech, boolean isShowOnConversationLayer, Language language, boolean showAnimationOnly, boolean cached);
Tts 声音参数
package com.robotemi.sdk.voice.model;
class TtsVoice {}
属性 | 类型 | 说明 |
---|---|---|
gender | Gender | 只有 FEMALE 和 MALE 可被传入 |
speed | float | 0.5 - 2.0, 步进为 0.1, 默认为 1.0 |
pitch | int | -10 - 10, 步进为 1, 默认为 0 |
Tts 性别参数.
package com.robotemi.sdk.constants;
enum class Gender {
FEMALE, MALE, GIRL, BOY, UNKNOWN
}
-
**当前支持的 ASR / STT 语言(与系统语言选项一致) **
语言 说明 SYSTEM(0) 跟随系统 EN_US(1) 英语 ZH_CN(2) 简体中文 JA_JP(3) 日语 KO_KR(4) 韩语 ZH_HK(5) 粤语 ZH_TW(6) 繁体中文 DE_DE(7) 德语 TH_TH(8) 泰语 IN_ID(9) 印尼语 PT_BR(10) 葡萄牙语(巴西) AR_EG(11) 阿拉伯语 FR_CA(12) 法语(加拿大) FR_FR(13) 法语(法国) ES_ES(14) 西班牙语 CA_ES(15) 加泰罗尼亚语 IW_IL(16) 希伯来语 IT_IT(17) 意大利语 ET_EE(18) 爱沙尼亚语 TR_TR(19) 土耳其语 HI_IN(20) 印地语 EN_IN(21) 英语(印度) MS_MY(22) 马来语 (134 版本) VI_VN(23) 越南语 (134 版本) RU_RU(24) 俄语 (134 版本) EL_GR(25) 希腊语 (134 版本)
enum SttLanguage {
SYSTEM(0),
EN_US(1),
ZH_CN(2),
JA_JP(3),
KO_KR(4),
ZH_HK(5),
ZH_TW(6),
DE_DE(7),
TH_TH(8),
IN_ID(9),
PT_BR(10),
AR_EG(11),
FR_CA(12),
FR_FR(13),
ES_ES(14),
CA_ES(15),
IW_IL(16),
IT_IT(17),
ET_EE(18),
TR_TR(19),
HI_IN(20),
EN_IN(21),
MS_MY(22),
VI_VN(23),
RU_RU(24),
EL_GR(25);
}
唤醒请求.
data class WakeupRequest(
val wakeupResponse: Boolean = false
)
属性 | 类型 | 说明 |
---|---|---|
wakeupResponse | Boolean | 是否触发唤醒应答 |
唤醒来源
enum class WakeupOrigin {
ROBOX,
ANDROID,
TOP_BAR,
SDK,
ANALOG,
UNKNOWN,
}
属性 | 说明 |
---|---|
ROBOX | 由 Robox 端监听触发的唤醒,V3 的场景 |
ANDROID | 由 Android 端监听触发的唤醒,temi GO, temi Platform 的场景 |
TOP_BAR | 由手动点击顶栏触发的唤醒 |
SDK | 由 SDK 应用调用 wakeup() 触发的唤醒 |
ANALOG | 由 temi 内部逻辑,如连续对话,迎宾模式自动聆听等流程触发的 ASR 流程对应的唤醒 |
UNKNOWN | 当前版本未知来源的唤醒 |
-
在 AndroidManifest.xml 清单文件中的
<application>
元素下添加如下元数据<meta-data>
:<!-- 必须是 Kiosk 技能 --> <meta-data android:name="@string/metadata_kiosk" android:value="true" /> <meta-data android:name="@string/metadata_override_nlu" android:value="true" />
-
监听 ASR 并在回调方法中接入你自己的 NLP 服务。
-
在 Launcher 的 设置 > 应用 > 商店模式 > 选中你的技能。或者通过方法
Robot.getInstance().requestToBeKioskApp()
请求成为选中的 Kiosk(商店模式)技能应用。
作为选中的Kiosk
0.10.63
-
在 AndroidManifest.xml 清单文件中的
<application>
元素下添加如下元数据<meta-data>
:<!-- 必须是 Kiosk 技能 --> <meta-data android:name="@string/metadata_kiosk" android:value="true" /> <meta-data android:name="@string/metadata_override_stt" android:value="true" />
-
监听唤醒事件 并在回调方法中接入你自己的 ASR 服务。
-
在 Launcher 的 设置 > 应用 > 商店模式 > 选中你的技能。或者通过方法
Robot.getInstance().requestToBeKioskApp()
请求成为选中的 Kiosk(商店模式)技能应用。
作为选中的Kiosk
0.10.70
-
在 AndroidManifest.xml 清单文件中的
<application>
元素下添加如下元数据<meta-data>
:<!-- 必须是 Kiosk 技能 --> <meta-data android:name="@string/metadata_kiosk" android:value="true" /> <meta-data android:name="@string/metadata_override_conversation_layer" android:value="true" />
-
监听对话层状态、文本变化 并在回调方法中处理相关数据并绘制对应的用户交互界面。
-
在 Launcher 的 设置 > 应用 > 商店模式 > 选中你的技能。或者通过方法
Robot.getInstance().requestToBeKioskApp()
请求成为选中的 Kiosk(商店模式)技能应用。
作为选中的Kiosk
0.10.72
-
在 AndroidManifest.xml 清单文件中的
<application>
元素下添加如下元数据<meta-data>
:<!-- 必须是 Kiosk 技能 --> <meta-data android:name="@string/metadata_kiosk" android:value="true" /> <meta-data android:name="@string/metadata_override_tts" android:value="true" />
-
实现 ITtsService 接口,并重写
speak()
、cancel()
、pause()
、resume()
方法。temi 将会调用对应的方法来实现 TTS 播报需求。 -
将上个步骤中实现的 ITtsService 子类通过 setTtsService() 方法进行绑定。
-
【非常重要】通过 publishTtsStatus() 方法将 TTS 的状态通知 temi,temi 需要根据这些状态进行响应(UI 展示、导览的步骤推进等)。
-
在 Launcher 的 设置 > 应用 > 商店模式 > 选中你的技能。或者通过方法
Robot.getInstance().requestToBeKioskApp()
请求成为选中的 Kiosk(商店模式)技能应用。 -
更多细节请参考 Sample。
作为选中的Kiosk
0.10.77