1.基本术语
- 语音特征
- MFCC:Mel Frequency Cepstral Ceofficient,目前最主流的语音信号特征提取方式,相比ceptrum的流程,主要是增加了mel滤波,另外用DCT替换了IFFT。
- Fbank:亦称MFSC(log mel-frequency spectral Coefficients),特征的提取方法就是相当于MFCC去掉最后一步的离散余弦变换,跟MFCC特征相比,Fbank特征保留了更多的原始语音数据。
- 声学模型:
- DNN:
- GMM:
- HMM:
- 语音识别工具
- HTK:(HMM Toolkit)一款基于hmm模型的语音处理工具,c代码实现,最主流的LPC,MFCC,FBANK(MFSC)和PLP都是支持的
- Kaldi:开源语音识别工具,C++实现,支持fbank,mfcc,spectrogram,pitch和mel单独实现,做的事情要比htk多,而且工具包有兼容HTK的选项,kaldi在语音特征提取方面更丰富,扩展性更好。
- W2l:C++实现,支持MFCC和MFSC两种语音特征提取
- 语音唤醒:在连续语流中实时检测出说话人特定片段(唤醒词),从而启动语音识别模块开始工作
- 语音识别
- 短语音识别:60秒以下的音频识别为文字。适用于语音对话、语音控制、语音输入等场景。
- 实时长语音识别:可以将音频流实时识别为文字,并返回每句话的开始和结束时间,适用于长句语音输入、音视频字幕、会议等场景。
- 音频文件转写:可以将大批量的音频文件异步转写为文字。适合批量录音质检、会议内容总结、录音内容分析等场景,一般12小时内
- 语音合成:语音合成可将文字信息转化为声音信息,适用于手机APP、儿童故事机、智能机器人等多种应用场景。
技能
语音技能类似于一个APP,通过语音对话完成一个或者多个特定功能,如:导航技能,可以通过编写语义对话完成地址查询与设置、路线规划、周边搜索、导航等功能。
意图
用户的每一轮对话,都可以认为是一个意图。每一个意图都是为了实现用户进行这轮对话的目的。如意图【查询天气】,用户的目的就是为了查询某天某地的天气状况。
一个任务,需要用户进行一轮或者多轮对话。用户的每一轮对话,都可以认为是一个意图
任务
技能类似于一个APP,通过语音对话完成一个或者多个特定功能,如微信支持N种功能,消息,朋友圈,支付等,任务就是其中一个功能,如查询地址,导航,搜索周边或定位。任务是技能的重要组成成分之一,是完成某一项功能的单轮对话或者多轮对话的合集。用户的每一轮对话,都可以认为是一个意图,一个任务由一个或者多个意图组成。以导航这个任务为例,由4个意图构成:
1) 导航
2) sys.用户选择
3) sys.确认
4) sys.取消
用户说法
用户说法就是用户在对话交互过程中提出的问题,请求或命令
语义槽
语义槽即从用户说法中提取的关键字,如“我要去上海”,语义槽就是#地址#,取值为“上海”。
语义槽和词库总是一起使用,意义是用来指代词库。通过说法标注将语义槽与词库绑定。说法标注过程中,被标注的词句绑定词库后会自动创建和词库同名的语义槽,被标注的词句就是语义槽的取值。支持修改语义槽名称。一个语义槽只能同时绑定一个词库,但是可以更改当前绑定的词库,而一个词库可以同时对应多个语义槽。
词库
词库是同类单词的合集,如:地址、歌曲名、歌手等,在对话编辑中通过对词库的绑定和调用,进行重要信息的提取和语义槽调用。语义通过词库进行理解,然后抽取并输出机器可以理解的格式。
例如一个说法「我喜欢绿色」,我们都知道绿色是一种颜色,但如果我们不预先告诉机器,机器是不会知道的。为了让机器能够理解绿色,我们可以创建一个词库,把常见的颜色(红橙黄绿青蓝紫等)填上,这样机器再遇到这些词,就能知道是一种颜色。
数据资源
语音交互不仅仅是一问一答,语音技能通常需要查询资源来获取一些信息。如用户询问“今天天气怎么样”时就需要使用查询天气相关信息的数据资源,从而回答用户的问题,给予用户所需的信息。
数据资源根据来源可分为2类,API资源和Function,如下:
1、API资源分为web api和native api 2种,WebAPI即通过云端调用接口的API;NativeAPI即通过本地调用接口的API
2、Function可看做是一种比较特殊的web api, 不需要开发者填写web地址,只需要提供一段代码块,由DUI平台自动生成web地址。DUI平台会自动把function代码部署到思必驰提供的服务器上,以数据源配置的参数作为输入参数,输出结果作为对话定制的数据源。
2.大厂资源
2.1百度
2.2思必驰
2.3讯飞
2.4云知声
3.流程
语音应用全流程
拟人化设计:
语音唤醒流程: