开发者学堂课程【3节课带你走进智能语音交互:音频基础知识+智能语音控制台介绍】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/748/detail/13213
音频基础知识+智能语音控制台介绍
内容介绍:
一、概览
二、应用场景
三、产品与服务
四、音频概念
五、ASR 概念
六、体验、注册、开通
七、使用
一、概览
1、智能语音交互
阿里智能语音交互(Intelligent Speech Interaction),是基于语音识别、语音合成等技术,为企业在多种实际应用场景下,赋予产品“能听、会说、懂你"式的智能人机交互体验。适用于多个应用场景中,包括智能问答、智能质检、法庭庭审实时记录、实时演讲字幕、访谈录音转写等场景,在金融、保险、司法、电商等多个领域均有应用案例。
2、语音识别
语音识别:也称为自动语音识别(Automatic Speech Recognition),简称ASR,其目标是将入类语音中的词汇内容转换为可读的文字。
3、语音合成
语音合成:也称为自动语音合成(Text To Speech),简称TTS,其目
标是将文字转成人的声音。
二、应用场景
1、法庭庭审转写
将庭审过程中的法官、被告等角色所说的话实时转写成文字,从而替代了书记员的角色。阿里云智能法庭方案已经覆盖上百个法庭,经过千次庭审的洗礼,得到广泛好评。
2、录音质检
传统质检一般是对客服电话录音以人工听的方式进行检查,存在效率问题以及人员瓶颈。智能质检能够对所有服务过程进行全量的实时质检,全面把控服务质量。
3、实时直播字幕
现场演讲场景、直播场景下,将视频中的音频实时转写成字幕。在直播场景下,还可以进一步对内容进行监控。实时转写速度极快,几乎与直播同步。比如演讲过程中提供语音翻译,演讲是中文,实时转写文本后,调用语言翻译的功能,实时中英会议的场景。
4、智能语音问询终端
率先解决在公共场合噪音环境下的语音交互问题,在地铁,餐饮店等公众场景下实现了高体验的语音交互。为用户提供一种全新的,多模态的语音交互方式。
三、产品与服务
1、一句话识别
对时长较短(一分钟以内)的语音进行识别,适用于较短的语音交互场景,如语音搜索、语音指令、语音短消息等,可集成在各类App、智能家电、智能助手等产品中。
2、实时语音识别
对不限时长的音频流做实时识别,达到“边说边出文字”的效果,内置智能断句,可用于视频实时直播字幕、实时会议记录、实时法庭庭审记录,智能语音助手等场景。
3、录音文件识别
对用户,上传的录音文件进行离线识别,上传完之后6小时内完成识别并返回识别文本。可用于呼叫中心语音质检,庭审数据库录入,会议记录总结,医院病历录入等场景。
4、(长文本)语音合成
能将用户提交的文本转换成自然流畅的语音,有多种音色可供选择,并提供调节语速、语调,音量等功能。适用于智能客服、通知、任务播报、新闻播报、小说类的合成文学、有声阅读等场景。
5、语音合成声音定制
为客户提供深度定制TTS声音的能力。通过先进的深度学习技术,用更少的数据量,更快速高效地为客户定制个性化语音合成声音。
6、语言模型自学习工具
用户通过上传数据,对阿里的语音技术进行深度定制,从而提升特定业务领域的识别准确度。目前支持上传文本数据对语言模型进行定制,未来会推出上传音频数据对声学模型进行定制。
四、音频概念
1、采样率
音频采样率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。目前语音识别服务只支持16000Hz和8000Hz两种采样率,其中8000Hz 般是电话业务使用,通过电话说话语音识别的过程,其余都使用16000Hz。其他可能还有6k、44k等等。
2、采样位数
即采样值或取样值。它是用来衡量声音波动变化的一个参数,也可以说是声卡的分辨率。它的数值越大,分辨率也就越高,所发出声音的能力越强。采样精度取决于采样位数的大小,一般来说是2字节即16bit。常见可能还要8bit位数,比如语音电话。
3、声道
声道是指声音在录制时在不同空间位置采集的相互独立的音频信号,所以声道数也就是声音录制时的音源数量。常见的音频数据为单声道或双声道(立体声)。除录音文件识别以外的服务只支持单声道(mono)语音数据。
4、音频编码
指语音数据存储和传输的方式。请注意,语音编码和语音文件格式不同。例如常见的.WAV文件格式,会在其头部定义语音数据的具体编码,其中的音频数据通常是使用PCM编码,但也有可能是AMR或其他编码。其他可能还有电话客服场景下u-law、a-law、mp3、amr、mkv等。组合描述声音的形态,比如实时语音识别支持8k或者16k采样率,16bit单声道PCM格式的语音,文本转写即支持单声道语音,又支持双声道语音等。
五、ASR 概念
1、逆文本规整(inverse text normalization)
语音转换为文本时使用标准化的格式来展示数字、金额,日期和地址
等对象,以符合阅读习惯或书写形态,简称ITN。比如一千六百八十元,开启ITN的识别结果是1680元。
2、流式中间结果(intermediate result)
在调用语音识别服务时,服务端流式的返回中间识别结果,而不是等
到全部结果识别完成后才返回。比如例如一段语音,识别最终结果是“你好阿里巴巴”, 在启用中间结果后可能如下面所列在您说话的同时返回5次。你、你好、你好啊、你好阿里、你好阿里巴巴。如果没有开启流式中间结果,它可能只会在全部结果识别完成结束之后只返回一次你好阿里巴巴。
3、语音活动检测(Voice Activity Detection,VAD)
语音活动检测(Voice Activity Detection,VAD)又称语音端点检测,语音边界检测。目的是从声音信号流里识别有效语音的开始和结束时间段、剔除长时间的静音数据。在实时语音过程中特别多用,它可以将连续不断的语音进行断句,直播场景中用户演讲可能一个小时或者两个小时,它会把语音进行断句,把每一次,每一句的结果都返回给调用方。
六、体验、注册、开通
1、智能语音交互入口
智能语音交互在阿里云公有云的入口地址
https://ai.aliyun.com/nls/
2、语音合成
https://ai.aliyun.com/nls/tts
3、实时语音识别
https://ai.aliyun.com/nls/trans
开通,产品介绍。
在线体验的功能。
试用实时语音识别,实时产生音频,流式返回结果的过程。
语音合成,有比较多的发音场景,通用,客服,文字,童声,英文,方言。
4、在阿里云中开通智能语音交互产品
智能语音交互控制台入口:
https://nls-portal.console.aliyun.com/overview
也可以在阿里云官网直接搜索语音交互跳转进来。
(1)注册阿里云账号。
(2)实名认证,可以进行个人认证,也可以进行企业认证。个人直接通过支付宝就可以完成认证。
(3)开通智能语音交互服务(三个月免费试用版)。测试开发都可以进行。
以下是控制台界面,可以看到创建了15个项目,使用了一个语言模型定制,用量统计,一句话识别,实时语音识别,语音合成等等。
免费版可以在服务开通与购买中开通,做测试,上线时最好开通商业版,提供更大的开发能力,试用版有三个月的有效期,有效期过期后就无法再提供服务,免费版是有两个并发的限制,无法满足产品上线的要求。
可以看到项目的创建,历史创建的项目。
自学习平台可以用来做语音识别过程中识别率的优化,提供热词和语音模型定制两个方式。
自动化测试是指可以以比较客观的手段进行识别率的自动化测试,做完平台的优化后想观察优化后的效果,就可以通过识别率自动化测试进行验证。
七、使用
接触一个新的产品,了解产品什么功能,以及使用时怎么去集成,这时需要看开发文档,分析示例代码,学习api。
智能语音交互开发文档:
https://help.aliyun.com/product/30413.html
(1)下载sdk及示例代码,开发文档,比如开发的限制和注意事项等。
(2)学习开发文档。
(3)测试通过示例代码流程。通过示例代码跑通流程,完成对公共云上智能语音交互产品的调用。
打开文档,可以看到有控制台用户指南,如何管理项目,模型的使用,如何开通服务,升级后可以购买预付费资源包,开发指南,开发时的注意事项,api细节的介绍,一句话识别,实时语音识别,语音合成,进行产品分类的开发介绍。
点击一句话识别,提供了java sdk,python sdk,android sdk,restful api等接口方式,开发语言的安装包。
以实时识别为例,下载安装包。
导入 ide 中,需要填入两个信息,一个是填写你的 appkey,一个是填写你的token,填写完参数后就可以运行设计代码,登陆管控台查看参数,点击获取accessToken sdk,鼠标放进去会提示此 token 仅供测试使用,存在有效期限制,长期调用请自行更新token, 详见交档。
过期后,调用就会失效,开发过程中可以使用,开发完成,产品上线时要参考开发文档,代码中通过api的形式去集成token,动态的更新token,点击打开,访问令牌(Access Token)是调用智能语音交互服务的凭证。动态获取token,输入。
创建实际的项目获取appkey,创建项目,2020-ceshi-appkey。
选择语音识别的模型,类别分为电话和非电话,电话是指通过电话接入一些应用,应用识别电话端产生的语音。
选择电话时,采样率都是8k。比如中国移动10086,某些省份提供智能语音导航,和电话客服机器人进行交互,用手机或者固话打电话时就是电话场景,比如支付宝电话95188,它也会引导用户接入人机对话的场景。
非电话场景包括淘宝app按钮说话,16k的场景,通过直播场景,演讲场景,通过话筒采集语音,也是16k的场景。有中文普通话,英语,四川方言,湖北方言,粤语,日语,西班牙语,选择中文普通话模型,因为要测试中文普通话的录音。语音合成选择思琪,温柔女声,通用场景,发布上线。
发布成功,可以看到项目上有appkey,复制,粘贴进去。
运行后,识别结果是北京的天气,识别代码里面自带的语音,语音的内容就是北京的天气。
ASR实计识别API调用
通过本场模拟实时流发送
识别耗时计算
通过本地文件进行模拟发送实时流数据,实际使用时,用户可以从某处实时采集或接收语音流并发送到asr服务端
用读取本地文件的形式模拟实时获取语音流并发送的,因为read很快,所以这里需要sleep
如果是真正的实时获取语音,则无需sleep,如果是8k采样率语音,第二个参数改为8888
Thread .sleep(deltasleep);
测试SpeechSynthesizerDemo,可以看到语音合成,日志输出可以看到使用的是siyue,合成的文本是欢迎使用阿里巴巴智能语音合成服务,您可以说北京明天天气怎么样啊。
tts start Latency 79 ms
指的是自己的测试代码连上公共云智能语音服务,发送完成请求并且返回花了79ms,时间符合预期。
Synthesizer.start();
tts first Latency : 218 ms
服务端回调的接口,语音合成的语音二进制数据
Public void onmessage(bytebuffer message){
此处是计算首包语音流的延迟,收到第一包语音流时,既可以进行语音播放,以提升响应速度(特别是实时交互场景下),合成你好阿里巴巴一句话,不需要等六个字都合成才播放
tts stop Latency 1241ms
等待语音合成结束会打印stop Latency,时间差比较大。
设置siyue,假设不知道,随便填写一个,可以看到显示的信息不一样,报了错误信息,错误代码是4102001,
可以通过阿里云文档进行查询,设置了无效的voice name,声音不存在,这次的错误代码是以4开头的,之前的错误代码是以2开头的,比如会以2开头的表示成功,4开头的表示客户端错误,5开头的表示服务端错误,比较快速的分析出现的错误,缩小排查范围。
在控制台获取token,点开token提示,调用时需要提供阿里云账号的AccessKey ID和AccessKey Secret。在用户信息管理里面可以看到AccessKey ID和AccessKey Secret。通过它获取token,token调用云服务,所以可以看到信息是被隐藏起来的。
在代码里面集成api,动态获取token,动态更新调用token,以避免token失效。
Systen.out.println("Token: "+accessToken.getToken()+",expire time: " . accessToken. getExpireTime());
每次请求token,会返回token 的有效期,根据这个有效期提前10分钟,甚至提前一个小时获取新的有效token更新服务。