-
Notifications
You must be signed in to change notification settings - Fork 48
系统事件
本文定义了 YodaOS 系统事件,它们主要用于:
- 自定义任何模块
- 监控系统状态
- 支持集成测试接口
Flora 是同时具备发布/订阅、请求/响应模式的 IPC 库,我们可以用它来获取以下所列的所有系统事件和方法。
- 模块概览
-
事件
rokid.turen.voice_coming
rokid.turen.local_awake
rokid.turen.start_voice
rokid.turen.voice
rokid.turen.sleep
rokid.turen.pickup
rokid.turen.mute
rokid.turen.addVtWord
rokid.turen.removeVtWord
rokid.speech.prepare_options
rokid.speech.options
rokid.speech.stack
rokid.speech.final_asr
rokid.speech.inter_asr
rokid.speech.extra
rokid.speech.nlp
rokid.speech.error
rokid.speech.completed
- 方法
在语音交互过程中,YodaOS主要分为三个系统模块:turenproc,speech-service 和 vui。
turenproc 用于从麦克风捕获原始音频数据,判断语音是否激活,并上报激活后的语音数据。speech-service 接收 turenproc 的音频数据后上传云端,并将 NLP 结果返回给 vui。
vui 负责管理应用生命周期,并通过配置向不同的应用下发 NLP 进行处理。
以下是 YodaOS 的系统事件列表。一种用于获取系统当前状态,一种用于重写某个系统模块时,可以根据该文档重新实现。
本地激活事件,通常由本地激活模块提供。
本地寻向事件,可以提供当前用户说话的角度。
-
angle
{float} 用户说话的角度
表示语音激活后,开始输出语音数据。
-
trigger
{string} 激活词 -
trigger_start
{int32} 激活词的语音数据中的起始坐标 -
trigger_end
{int32} 激活词在语音数据中的结束坐标 -
energy
{float} 当前语音的能量值 -
cloud_verfiy
{int32} 是否支持云端激活确认 -
id
{int32} 请求 ID
语音原始数据。
-
data
{raw} 原始 PCM 数据 -
id
{int32} 请求 ID
本地休眠事件,比如“没事了”。
控制设备是否处于拾音状态。
-
enabled
{int32} 1表示拾音状态, 0表示非拾音状态
控制设备麦克风是否启用。
-
muted
{int32} 0表示启用, 1禁用麦克风
新增自定义激活词。
-
text
{string} 中文形式的激活词 -
pinyin
{string} 激活词拼音 -
type
{int32} 激活词类型,1表示唤醒词,2表示休眠词,3表示热词
删除自定义激活词。
-
text
{string} 中文形式的激活词
该事件需要由 speech-service 实现,它通知激活词请求完成。
-
id
{int32} 请求 ID
语音服务的认证信息,默认按照 Rokid 开放平台 的格式。
-
uri
{string} 服务 URI -
key
{string} key. -
device_type_id
{string} the device type id. -
secret
{string} the secret. -
device_id
{string} the device id. -
reconnect_interval
{double} 当网络不好时,重连的间隔时间 -
ping_interval
{double} keep alive 间隔时间 -
timeout
{double} 请求超时时间
语音服务的参数。
-
lang
{double} 中文(0), 英文(1). -
codec
{double} pcm(0), opus(1). -
vad_mode
{double} 本地(0), 云端(1). -
vad_timeout
{double} 当vad_mode
值为1时的云端 VAD 超时时间 -
require_nlp
{double} 是否返回 NLP -
require_full_asr
{double} 是否返回识别的中间结果 -
ignore_voice
{double} the milliseconds ignore part of voice data. -
voice_mtu
{double} separate voice data to fragment with max size.
语音服务要求的 NLP 领域栈信息,采用cut-domain:scene-domain
格式。
-
stack
{string} NLP 领域栈。
语音识别的最终结果。
-
text
{string} 识别内容 -
id
{int32} 请求 ID
语音识别的中间结果。
-
text
{string} 识别内容 -
id
{int32} 请求 ID
Voice data to asr, extra result (activation cloud confirm, multiple devices activation arbitrate, etc).
-
extra
{string} the extra information. -
id
{int32} the voice request id.
自然语言处理(NLP)后的结果。
-
nlu
{string} 自然语言理解数据 -
action
{string} NLP 数据,一般由云端技能通过 NLU 数据生成 -
id
{int32} 请求 ID
表示识别错误,也可能为网络错误。
-
code
{int32} 错误码 -
id
{int32} 请求 ID
结束一次语音交互流程(正常结束,或异常结束)。
-
id
{int32} 请求 ID
如果您尝试在 YodaOS 中实现某模块,如 speech-service,需要先实现该模块下的方法。
该服务通常用于上传语音数据并将云端识别的结果作为系统事件分发。
将纯文本转换为 NLP 结果,返回的结构与rokid.speech.nlp
相同。
-
text
{string} 输入的文本 -
options
{string} 技能参数
Vui 用于处理与语音交互相关的逻辑,包括语音应用管理和 NLP 分发。
获取当前技能的状态与参数,它返回一个 JSON 字符串。