语音识别ASR
语音识别服务,可提供语音转文本服务,包括:一句话识别、实时语音识别、录音文件识别。同时,还提供用户自定义热词接口,提高特定领域的识别率。
一句话识别:即实时短语音识别,可提供Java、Android、iOS SDK、C++ SDK。
实时语音识别:即实时长语音识别,可支持长时间语音识别。可提供Java SDK、C++ SDK。
录音文件识别:可提供RESTful接口,支持录音文件的语音识别。
阿里云语音服务为用户提供语音识别的基础服务,Android、iOS SDK封装了录音(Recoder)、静音检测(VAD)、语音服务访问(WSAPI)等功能,可以极大的简化App开发。
阿里云语音识别技术是基于后台服务器的密集CPU计算,语音SDK负责在App端打开录音机,进行语音压缩后,传送到服务器端。服务器进行语音识别转成文字后,通常还需要进行自然语言处理,分析其语法结构,并把语意结果返回给SDK。
一句话识别
一句话识别:即实时短语音识别,可用于语音输入法、智能客服等领域。
提供Java、Android、iOS、C++ 等平台的SDK。
支持语言包括:中文、英文、粤语
支持方言包括:东北、河南、四川等方言
支持结果返回方式包括:“流式”和“非流式”两种模式
支持用户自定义热词功能。
(1) “支持的结果返回方式”包括“流式”和“非流式”两种模式,“流式”模式下用户一边说话一边返回识别结果,“非流式”简单来说就是用户整句话说完后返回识别结果。
(2) “一句话识别”支持的领域包括:社交聊天、家庭娱乐、电商购物、智能客服等。用户可针对具体的使用场景选择对应领域的app_key。
OPUS 编码使用说明
Opus编码器 是一个有损声音编码的格式,由互联网工程任务组(IETF)进来开发,适用于网络上的实时声音传输,标准格式为RFC 6716。Opus 格式是一个开放格式,使用上没有任何专利或限制。
Bitrates from 6 kb/s to 510 kb/s
Sampling rates from 8 kHz (narrowband) to 48 kHz (fullband)
Frame sizes from 2.5 ms to 60 ms
Support for both constant bitrate (CBR) and variable bitrate (VBR)
Audio bandwidth from narrowband to fullband
Support for speech and music
Support for mono and stereo
OPUS 在NLS服务中的使用
目前我们的Android 和 iOS客户端sdk中集成了OPUS编码(encoder)功能。根据我们的参数进行语音编解码,可以做到大概9:1的语音压缩比,能够有效的节省传输带宽和响应时间。
在使用Java SDK时,SDK本身不支持OPUS的编解码,我们提供了使用JNI方式调用Opus的编解码工具,用户可以通过下面的代码自行编译动态链接库。
实时语音识别
功能介绍:
实时语音转写服务适用场景如实时会议记录、视频直播实时字幕等。
本文档提供服务端程序的Java SDK,Java SDK内部不自带语音采集功能,只提供将语音流实时转写成文字的功能。
支持16k 16bit PCM、16k 16bit WAV的语音格式。
sdk本身未设置超时时间,用户可以调用client.close()方法关闭链接。
录音文件识别
录音文件识别:
“录音文件识别”服务是以Restful方式提供长语音文件识别接口。基于该Restful API接口,开发者可以方便获取语音识别能力。
本文档描述了使用“录音文件识别”服务 Restful API 的方法,并提供了完整示例供开发者参考,适用使用 HTTPS 接口的开发人员。
功能介绍:
支持单轨/双轨的wav格式、MP3格式的语音文件识别
目前只支持8k和16k的采样率;
支持普通话识别
Restful架构的描述参考:
www.ruanyifeng.com/blog/2011/0…
www.ruanyifeng.com/blog/2014/0…
NLU
自然语言理解(Natural Language Understanding,NLU)以语言学为基础,融合逻辑学、心理学和计算机科学等学科,试图解决以下问题:语言究竟是怎样组织起来传输信息的?人又是怎样从一连串的语言符号中获取信息的?换种表达就是,通过语法、语义、语用的分析,获取自然语言的语义表示。在自然人机交互大发展的背景下,自然语言理解平台应运而生,本文将对自然语言理解平台中的各个领域的语义表示协议进行详细介绍。
语义表示协议
协议描述语言
协议采用结构化的描述语言JSON进行表示,采用utf8编码。JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写,也易于机器解析和生成,具体请参考: Json介绍。
此处只简述JSON的几个核心概念:
值(value)
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
数组(array)
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。比如,[value1,value2,……]。
对象(object)
对象是一个无序的“‘键/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“键”后跟一个“:”(冒号);“‘键/值’ 对”之间使用“,”(逗号)分隔。比如,{key1:value1, key2:value2, ……}。
关于JSON
结构上看,所有的数据(data)最终都可以分解成三种类型:
**
第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词。 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如"北京,上海"。 第三种类型是映射(mapping),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对应的值,这又称作散列(hash)或字典(dictionary),比如"首都:北京"。 复制代码
21世纪初,Douglas Crockford寻找一种简便的数据交换格式,能够在服务器之间交换数据。当时通用的数据交换语言是XML,但是Douglas Crockford觉得XML的生成和解析都太麻烦,所以他提出了一种简化格式,也就是Json。
Json的规格非常简单,只用一个页面几百个字就能说清楚,而且Douglas Crockford声称这个规格永远不必升级,因为该规定的都规定了。
**
1) 并列的数据之间用逗号(", ")分隔。 2) 映射用冒号(": ")表示。 3) 并列数据的集合(数组)用方括号("[]")表示。 4) 映射的集合(对象)用大括号("{}")表示。 复制代码
关键术语定义
领域(domain)
领域是指同一类型的数据或者资源,以及围绕这些数据或资源提供的服务,比如“视频”,“餐厅”,“酒店”,“飞机票”、“火车票”、“电话黄页”等。
意图(intent)
意图是指对于领域数据的操作,一般以动宾短语来命名,比如视频领域中,有“查询”、“播放”等意图。
属性(slot)
属性用来存放领域的属性,比如视频领域有“视频名”“导演”“演员”等。 对于视频领域,我们的语义表示结构如
TTS
语音合成服务(TTS),就是将文本转成语音的服务。阿里云语音服务为用户提供语音合成的基础服务,服务器将需要进行合成的文本传送到服务器端,服务器进行语音合成后,以语音数据流的形式返回给SDK,用户可直接进行语音数据的播放或存储。
同时,阿里云语音合成服务提供给用户丰富的接口,可以设置不同的发音人、语速、音量等,获取的语音形式也很丰富,包括PCM、WAV等格式,可以极大的简化语音类App的开发。
知识库
知识库简介
智能问答系统基于一个问答知识库来回答用户提问,该知识库中每一条知识点是以“问题-答案”形式组织的。每条知识点包含如下的关键内容:
ID:每条知识点的唯一标识符。
Question:知识点的问题部分。这个内容是匹配算法处理的内容。用户的输入会和这个字段内容进行语义匹配。
Answer:知识点的答案部分。这个内容问答系统不会做处理,会在问题匹配之后原样返回给用户。
其中的Question部分是语义匹配的关键部分,书写良好的Question对于匹配的精确度有很大好处。一个较好的Question应该遵循这样一些规则:
首先表述尽可能完整,能够描述一个特定的问题。比如说“吃了不干净的东西导致拉肚子,用什么药比较好”,要好于“拉肚子怎么办”。
尽可能用通用的表述,避免特例,比如说“支付宝转账到银行卡,24小时了还未到账怎么办”,要好于“昨天上午用支付宝转账到账户为xxx的银行卡,现在还没到”
采用比较正规简洁的句式,避免不相关的问候、语气等内容。
用词尽可能用常见的词汇,避免孤僻词或者网络用语。
知识库格式
管控台导入的知识库文件格式要求如下:
文件格式:xls或xlsx格式
内容格式:
【第一个sheet】
第1列:问题
第2列到第n列:问题对应的不同问法,可以为空
【第二个sheet】
第1列:问题(保持与sheet1第一列一致)
第2列:问题的答案
知识库上传
系统提供两种数据上传方式,一是通过用户界面自动上传,支持全量上传和增量上传,全量上传即所有的知识点都同一次上传,并且以前所有的知识点都将从系统中删除;增量式的上传,即只传输那些新增、修改或者删除的知识点。二是通过后台服务人员手动上传