当前位置: 首页 > news >正文

[北航软工]技术规格说明书

技术规格说明书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(这部分将会在各部分的调研设计工作完成之后继续更新)

转载于:https://www.cnblogs.com/bingduoduo/p/10640450.html

相关文章:

  • PAT甲级1068 Find More Coins【01背包】
  • 【BZOJ2125】—最短路(圆方树+树链剖分)
  • Java学习笔记-正则表达式
  • centos7.5搭建zabbix3.4.x以及mysql定制化监控
  • java ReentrantLock
  • C学习笔记-makefile
  • cocos2dx笔记1:概述
  • 易语言QQpost加好友源码
  • Ansible-----常用功能
  • 2019春第六周学习编辑总结
  • 【感悟】一次不太好的寻找bug的体验,RecyclerView
  • mysql 命令启动
  • [题解]区间dp_luogu_P3147 262144
  • Permission denied: .gvfs
  • day2
  • 【笔记】你不知道的JS读书笔记——Promise
  • Date型的使用
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • JavaScript实现分页效果
  • jquery cookie
  • node-glob通配符
  • PAT A1120
  • Redis学习笔记 - pipline(流水线、管道)
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Vue2.0 实现互斥
  • vuex 笔记整理
  • 阿里云购买磁盘后挂载
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • #include
  • #LLM入门|Prompt#3.3_存储_Memory
  • #微信小程序:微信小程序常见的配置传值
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (汇总)os模块以及shutil模块对文件的操作
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转) Face-Resources
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ***详解账号泄露:全球约1亿用户已泄露
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net core 6 redis操作类
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .net 后台导出excel ,word
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET微信公众号开发-2.0创建自定义菜单
  • .NET序列化 serializable,反序列化
  • /var/spool/postfix/maildrop 下有大量文件
  • @ConditionalOnProperty注解使用说明
  • [2010-8-30]
  • [BUUCTF]-PWN:wustctf2020_number_game解析(补码,整数漏洞)