[北航软工]技术规格说明书
技术规格说明书v1.0
基本功能需求
- 概述:该部分将说明基本的功能需求和设计方案
识别
-
基本概述:该部分需要识别用户输入的语音信息,调用对应的语音识别API获得结果,根据内置的语法词典,判断是否是合法输入,对合法输入执行后续操作,对不合法输入进行报错提示。
-
基本流程
- 用户输入语音
- 手机获得语音,将其转换为接口格式
- 语音识别接口,将其转换为API格式,并将API反馈结果转换为内部处理格式
-
可选功能
- 加入语音和词典的模糊识别,可大幅提升用户体验
- 加入用户自定义词典的方式
-
具体子模块
- 语音识别接口:输入语音信息,调用语音识别API,得到识别结果和分词结果。该层需要将具体的识别API封装在内部,接口的语音输入,识别和分词结果格式都是独立的,需要在接口内部做一层转换,即从入口接口到实际语音识别API的转换。
- 词典模块:词典中需要定义语音信号到实际输入内容的映射。此处需要包括两种词典,一种是编辑词典,包含文本输入内容,编程语言(python)词库。一种是命令词典,包含基本的文本编辑命令和shell命令。词典还需要完成查询模块,根据标准分词结果转换到对应的动作序列。
- 语音转换模块:将手机端得到的语音信息转换为语音识别接口的标准输入形式。即word2action。
- 分词模块:由于我们的系统需要的分词结果会有很多自定义和个性化的结果,我们将会依据一定的规则将API初次返回的分词结果进行再整理,这部分将作为一个工具模块(helper)的形式在语音识别接口内部使用,使用不同的分词策略对于接口不会产生影响。
-
设计方案重点
- 解耦合:在该部分中,手机传回语音的类型和语音识别API的类型是可能在实现中变化的,所以我们又做了一层中间层,将两部分封装起来,我们的系统内部只使用我们定义的语音识别接口,而将上述两部分分离开。
- 数据的处理能力:我们的词典模块将会做成数据模板的形式,而具体的数据信息都是使用Android的数据持久化技术(sharedPerference)进行存储。
- 错误处理:该阶段的错误信息将分为两大类,语音识别错误和词典映射错误,我们也会封装具体的异常类,保证足够的模块化和可扩展性。
传输
- 基本概述:需要将解析好的动作序列传递给文本编辑器或shell
- 基本流程
- 获取动作序列
- 根据动作序列信息确定是文本输入还是命令,需要传输到文本编辑器还是shell
- 完成信息传输
- 设计方案
- 我们将借鉴termux的app和shell之间的信息传输模式,使用专用字节编码的方式传输信息,具体的编码方式是相对独立的,但具体编码信息将会存储在词典的对应数据项中,即词典是一个核心的后像化模块,概括定义了输入内容到输出动作的映射,但具体输入内容的解析,输出动作的实现,都与词典本身无关。
编辑
- 基本概述:自制简易文本编辑器,两种模式,命令模式和编辑模式
- 基本流程
- 接收输入信息
- 完成相应动作
- 结果显示在UI上
- 基本子模块
- 命令模块:支持打开,复制,粘贴,删除,查找,替换,撤销,保存等操作
- 输入模块:单个字符输入,关键字输入, 补全式输入
shell
- 基本概述:基于termux的shell界面,支持简单输入和快捷操作
- 基本流程
- 接收输入信息
- 完成相应动作
- 结果显示在UI上
- 可选功能
- 用户自定义添加快捷操作
- 基本子模块
- 输入模块:单个字符输入,关键字输入
- 快捷操作模块:无需在shell中进行输入,直接通过语音转换为对应的shell动作
UI
- UI主要包括五部分:文本编辑器,shell,脚本list,信息反馈界面,全局快捷键
- 全局快捷键和信息反馈界面是常驻元素,文本编辑器,shell,脚本list之间可互相切换
- 信息反馈界面包括:语音识别反馈,动作映射反馈,动作执行反馈
- 全局快捷键包括:文本编辑器,shel,脚本list的切换键
具体模块级别API
To be continued(这部分将会在各部分的调研设计工作完成之后继续更新)