Skip to content

3.0 语音控制系统文档

一、系统架构

┌─────────────────────────────────────────────────────────────────┐
│                        语音控制系统                               │
├───────────────────────────┬─────────────────────────────────────┤
│      配置层 (voice-config) │           服务层 (voice.js)          │
│  ┌─────────────────────┐  │  ┌───────────────────────────────┐  │
│  │  命令词配置          │  │  │  语音监听                      │  │
│  │  • 导航命令          │  │  │  • 创建监听器(Xiri.Listener)   │  │
│  │  • 跳转命令          │  │  │  • 注册场景(regist)            │  │
│  │  • 功能命令          │  │  │  • 同步信息(syncClientInfo)    │  │
│  │  • 应用命令          │  │  └───────────────────────────────┘  │
│  └─────────────────────┘  │  ┌───────────────────────────────┐  │
│  ┌─────────────────────┐  │  │  命令分发处理器                  │  │
│  │  场景配置             │  │  │  • intentHandler(入口)        │  │
│  │  • createScene()    │  │  │  • initMasterHandler(主处理)   │  │
│  └─────────────────────┘  │  └───────────────────────────────┘  │
│							│  ┌───────────────────────────────┐  │
│							│  │  业务处理器                    │  │
│ 							│  │  • 导航处理                    │  │
│  							│  │  • 链接跳转                    │  │
│  							│  │  • 功能操作                    │  │
│  						 	│  │  • 语义解析                    │  │
└───────────────────────────┴─────────────────────────────────────┘

二、配置层详解 (voice-config.js)

2.1 命令词命名规范

[标识]$[值]

标识类型:
├─ nav      → 首页导航跳转
├─ wyNav    → 维语导航跳转  
├─ link     → 页面链接跳转
├─ cmd      → 功能命令操作
├─ apk      → 应用启动
├─ list     → 列表栏目切换
├─ channel  → 频道栏目切换
└─ xiri     → 科大注册场景

2.2 场景配置生成

javascript
createScene(data) → 生成场景对象
├── _scene: 'com.iflytek.xiri.MyScene'    // 场景标识
├── _commands: { 命令词: 匹配规则数组 }    // 命令词配置
├── _feedbacks: { 命令词: 反馈文本 }       // 语音反馈
└── _fuzzy_words: { 槽位名: 同义词数组 }   // 模糊匹配词

三、服务层详解 (voice.js)

3.1 核心流程

voiceListener(启动监听)

创建 Xiri.Listener 实例

createScene(生成场景配置)

listener.regist(注册场景)

_syncClientInfo(同步客户端信息)

syncChannelInfo(同步频道信息)

[等待语音指令]

callBack → intentHandler(接收回调)

initMasterHandler(命令分发)

各类处理器执行

3.2 命令分发总览

intentHandler (入口)

    ├─► command === '_XIRI_XJMobile' ────► 科大语义解析
    │                                         ├─ getClientInfo
    │                                         ├─ search (语音搜索)
    │                                         ├─ search-others (灵犀)
    │                                         └─ semantemeHandler
    │                                               ├─ tvchannel (直播)
    │                                               ├─ epg (回看)
    │                                               ├─ cmd (控制)

    ├─► command === '_XIRI_XJMobile_Wy' ─► 维语搜索处理

    └─► 其他命令 ─────────────────────────► 类型分发

                                              ├─ nav → navHandler
                                              ├─ wyNav → wyNavHandler
                                              ├─ cmd → cmdHandler(需要在各自页面实现voiceHandler)
                                              ├─ apk → apkHandler
                                              └─ 预设命令 → presetHandler
                                                                ├─ _PLAY
                                                                ├─ _PAGE
                                                                ├─ _EPISODE
                                                                └─ _SELECT

四、命令词分类速查表

4.1 导航类命令

类型命令格式示例功能
首页导航nav$[key]nav$movieIndex切换到电影首页
维语导航wyNav$[key]wyNav$7切换维语电影

4.2 功能操作命令

命令语音示例页面方法
cmd$goBack"返回"keyBack() / xiriGoBack()
cmd$fullPlay"全屏观看"fullPlay()
cmd$openEpisodeList"选集"openEpisodeList()
cmd$order"订购"order()
cmd$continuePlay"继续播放"continuePlay() / resume()
cmd$replay"从头播放"restart()
cmd$addCollect"收藏"addCollect()
cmd$delCollect"取消收藏"delCollect()
cmd$playPrev"上一个"prevEpisode()
cmd$playNext"下一个"nextEpisode()
cmd$playFirst"第一集"playFirst()
cmd$playFinal"最后一集"playFinal()

4.3 预置控制命令

命令Action功能页面方法
_PLAYPLAY播放play()
PAUSE暂停pause()
RESUME继续resume()
RESTART重播restart()
SEEK定位seek(position)
FORWARD快进forward(offset)
BACKWARD快退backward(offset)
_PAGEPREV上一页prevPage()
NEXT下一页nextPage()
INDEX指定页setPage(index)
_EPISODEPREV上一集prevEpisode()
NEXT下一集nextEpisode()
INDEX指定集setEpisode(index) 最后一集 index 为 -1
_SELECT-选择项selectItem(index, row)

五、语义解析详解

5.1 语义服务类型

服务名触发场景处理函数核心逻辑
tvchannel换台/直播控制channelSemanteme切台/上下频道
epg回看查询tvodSemanteme日期解析+跳转回看
cmd系统控制controllSemanteme音量/静音控制

5.2 音量控制指令

指令功能说明
volumeAdd增加指定音量值
volumeLower降低指定音量值
volume_plus音量+5
volume_minus音量-5
volume_max音量最大(100)
volume_min音量最小(0)
volumeMid音量减半
mute静音
unmute取消静音
_volume设置到指定音量

六、页面接口规范

6.1 必需实现接口

页面需暴露给语音系统调用的方法:

分类方法名参数调用场景
基础getPage()-获取Page实例
saveParams()-保存页面状态
voiceHandler(intent)intent自定义语音处理
选择selectItem(i,r)index,row选择元素
wySelectItem(i)intent维语选择

七、双语支持机制

7.1 语言切换标志

javascript
top.isWY  // true: 维语模式  false: 中文模式

7.2 反馈文本格式

javascript
postFeedBackFn({
  zhText: '中文提示',      // 中文反馈
  ugText: '维语文本'       // 维语反馈
});

7.3 维语特殊处理

场景处理方式
导航wyNavHandler 单独处理
命令cmd$wy_* 前缀区分
搜索_XIRI_XJMobile_Wy 命令
选择wySelectItem() 方法