skill从服务器返回给终端的tts只有文字


(huang) #1

我自己创建的skill,在我们的服务器端只能生成tts文字,然后rokid服务器将这个文字直接发给了设备,这样的情况下,设备是不是还要自己做一次tts文字转语音的操作,要是这样就比较麻烦,rokid服务器能不能直接就将语音传给设备吗?还是我的使用方式不正确?


(zhaolin) #2

您的意思是,直接将tts转成音频流回到设备吗?目前协议里面暂时还不支持,当然这个需求我们有在考虑,具体的协议我们会在设计完成后公布出来。


(huang) #3

是的,现在的方式设备还需要做一次tts文字转语音的操作,比较麻烦


(garl) #4

目前我们的交互协议返回的是一个前端展现结构,里面除了包含TTS以外,还有可能出现各种显示结构。
而且TTS是一个流式的返回结构,不太适合在一次交互中全部返回。这会延长整个交互的响应时间。


(huang) #5

其实tts语音可以作为一个可选数据结构添加到交互协议中,至于说会延长交互的响应时间这个要分两个方面来看待,首先,对于不需要tts语音的交互,我本身就不会添加tts字段,也就说不上会延长交互响应;其次,对于需要添加tts语音的交互,目前这种先将tts以文字的方式返回给用户,再让用户自己去转换tts语音的方式,只会让用户实际感受到的交互响应时间更长。所以应该说直接返回tts语音的方式是可以缩短用户实际感受到的交互响应时间的。


(garl) #6

是这样,如果TTS的语音也添加到speech交互的返回结果里去的话,在不增加响应时间的前提下,就需要speech模块产生流式数据的返回,会导致speech的SDK的处理变得复杂,同时,TTS模块和speech模块也会被杂合到一起,不够解耦。
从现有的情况看,我们还是倾向于模块的清晰分割,每个模块专注处理有限的功能。未来如果有大量类似的需求,我们会考虑出一个整合SDK,降低开发者使用的困难度。


(lxedge) #7

tts是否有长度限制?


(shuangbao.fu) #8

我怎么咨询问题呢?有个问题,解决不了,


(大发) #9

@shuangbao.fu 请问是什么问题呢


(shuangbao.fu) #10

若琪进入到意图之后,回复语句用pickup。在调试时,会进入这句话,但是若琪不能读出来。


(yam.zhang) #11

@shuangbao.fu 确认一下自己的代码是不是写对了哟,具体的代码示例如下 ‘ROKID.INTENT.WELCOME’: function () { try { this.setTts({ tts: ‘欢迎词’ }); this.setPickup({ enable: true, retryTts: ‘再次确认语句’ }); this.emit(’:done’); } catch (e) { this.emit(’:error’, e); } },