需求分析和概念原型——基于匹配算法的连续中文语音识别系统
一、前言
本人的工程实践项目是实现一个基于匹配算法的连续中文语音识别系统,主要功能是实现从语音输入序列到中文文本输出的转换。由于本项目是深度学习相关项目,难点主要在于提升语音识别准确率,实现需求较少,主要是将输入语音转换为中文文本输出,因此本篇博客会比较简单。本博客旨在了解从需求分析到软件设计的基本建模方法。
二、需求分析
需求就是对用户期望的软件行为的表述。获取需求就是需求分析师通过关注用户的期望和需要,从而获得用户期望的软件行为,然后对其进行表述的工作。需求分析是在获取需求的基础上进一步对软件涉及的对象或实体的状态、特征和行为进行准确描述或建模的工作。
用户功能需求:1.注册登录个人账号,以管理个人信息;
2.若认为识别不准确,可上传语音文件和对应中文文本。
三、用例分析
用例(Use Case)的核心概念中首先它是一个业务过程(business process),经过逻辑整理抽象出来的一个业务过程,这是用例的实质。而在待开发软件所处的业务领域内完成特定业务任务(business task)的一系列活动就是业务过程。
用例包含几个基本要素:
1.一个用例应该由业务领域内的某个参与者(Actor)所触发。 2.用例必须能为特定的参与者完成一个特定的业务任务。 3.一个用例必须终止于某个特定参与者,也就是特定参与者明确地或者隐含地得到了业务任务完成的结果。
用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。用例图呈现了一些参与者,一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
本项目的参与者(Actor):用户,开发人员。
本项目的用例(Use case):用户:登录;实时录入语音/外部导入语音文件;上传语音文件和中文文本。
开发人员:判断用户上传的语音文件和中文文本是否匹配,决定是否加入语料库,并进行模型调优。
关联关系是用一条直线表示的,一般不强调关联的方向。关联关系是一种静态关系,是由常识、规则和法律等因素前置约定的。
一对一的关联关系可以在直线的两端都标上1表示一对一;一对多的关联关系可以在直线的两端分别标上1和(代表任意数)表示一对多;多对多的关联关系可以在直线的两端都标上*表示多对多。
单向关联关系,是用一条直线加箭头表示的。比如在用例图中参与者和用例就是一种单向关联关系,参与者总是“知道”用例,而用例“不知道”参与者,所以箭头可以从参与者指向用例,不过在UML建模工具中,关联方向是不被强调的。
包含关系是用一条带箭头的虚线加<<include>>来表示的。包含关系特别用于用例模型中,是指在执行基本用例的过程中插入包含用例。
扩展关系是用一条带箭头的虚线加<<extend>>来表示的。扩展用例特别用于用例模型中,表示向基本用例中的某个扩展点插入扩展用例。
本项目不涉及包含关系和扩展关系,不再赘述。
四、业务领域建模
对象和属性:对象能够独立存在,对象的创建必须是通过显式地或隐式地调用构造过程。属性需依附对象存在,属性用来描述对象或存储对象的状态信息。
继承关系:两个概念之间具有概括化/具体化关系。一般用三角形箭头连线表示继承关系(箭头指向概括化概念)
聚合关系:表示一个对象是另一个对象的一部分。一般使用平行四边形箭头表示(箭头指向包含另一个对象的对象)
关联关系:表示继承和聚合以外的一般关系。一般用一条直线连起来表示。
业务领域建模基本步骤:
• 第一步,收集应用业务领域的信息。聚焦在功能需求层面,也考虑其他类型的需求和资料;
• 第二步,头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系;
• 第三步,给这些应用业务领域概念分类。分别列出哪些是类、哪些属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系。
• 第四步,将结果用 UML 类图画出来。
本项目概念分析:
1.本项目实现由语音文件到中文文本序列的转换。其中语音文件和中文文本都可以独立存在,因此本项目两个类。二者之间关系为”转换“,因此为关联关系。语音文件隐含属性为.wav格式,中文文本隐含属性为char类型。
2.用户将语音文件和中文文本上传。那么用户是一个类,其与语音文件和中文文本的关系是关联关系。
3.开发人员判断语音文件和中文文本是否匹配,根据判断结果决定是否加入语料库做模型调优。开发人员是一个类,其与语音文件和中文文本的关系是关联关系。
业务类图如下:
五、数据模型
根据如上业务类图,构建数据模型如下:
用户表:(存放用户名,用户密码,备注等)
user_id | user_account | password | notes |
---|---|---|---|
语音文件/中文序列表:(存放语音文件名,对应的上传用户名,对应的中文文本序列)
speech_files_id | user_account | CN_text_id |
---|---|---|
六、概念原型
概念是人对能代表某种事物或发展过程的特点及意义所形成的思维结论。
概念原型是一种虚拟的、理想化的软件产品形式。
概念原型 = 用例 + 数据模型。