公共云语音转文本能力介绍及使用说明 | 学习笔记

简介: 快速学习公共云语音转文本能力介绍及使用说明

开发者学堂课程【3节课带你走进智能语音交互公共云语音转文本能力介绍及使用说明】学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/748/detail/13212


公共云语音转文本能力介绍及使用说明


内容介绍:

一.系统结构

二.音频识别

三.智能语音交互

本期视频主要介绍语音识别相关的内容,语音识别就是将一段音频数据转换为对应的文件,如语音理解以及语音合成等步骤。


一.系统结构

如下图是语音识别系统的大致示意图

image.jpeg

从最左侧的语音数据开始,经过特征提取再经过解码搜索,最后产生一个识别结果,一般识别结果搜索之后得到的是排名,但多数场景下只会用到得分最高的识别结果,即可满足绝大部分场景的需求,系统有三个很重要的要素,第一个要素是发音词典,决定了语音识别系统里能够输出哪些词或字,在当前版本的语音识别系统里面,词典规模是较大的,包括一些常用词及生僻词,基不会出现没有覆盖词的情况。对于声学模型,是在大量的语音数据上训练产生的,主要作用是将输入的音频进行切片,确定每一片对应的因素,因素可以理解为拼音,但在训练语音模型时,因素会在拼音基础上做更加优化的处理。

第三个语言模型,主要是文本相关的模型,在声学模型后面的处理步骤,在声学模型给出可能的发音前提下,语言模型会进一步判断发音之间的相互依赖关系,最终给出词的序列。通过序列即是最终的识别结果。


二.音频识别

还需了解一些常见的音频格式。

image.jpeg

大概分为两类,一类可以做实时音频识别,因为后面介绍的接口很大程度上分为实时和离线两类,所以需要首先了解概念。对于实时音频格式要求较多,音频格式需支持边发送边识别,所以对格式有要求。常见的实时音频格式大概有四种,一个是 pcm ,即未经压缩的一种音频格式,存储着音频数据里每个采样点的信息。

wav 格式即于 pcm 上做了文件头,opus 的压缩格式,是相对较新的压缩格式也是推荐使用,因为既可提供较高的保真度压缩,也可实时识别,可做到10%的压缩频,可节省90%的带宽信号,并且支持实时传输,实时识别。

另外一种是speex ,是一个相对旧的格式,在 OPPOS 出来前是主流,后面 oppos 在同样压缩比情况下音质上会有明显优势,因此 opus 取代了speex 。另外一类是离线文件格式,种类较多,如MP3,MP4 及 aac 这样的文件格式,平时也会称为流媒体,但是相当于实时音频是有区别的,如MP4的格式,会有索引数据在文件的结尾,因此在文件流式传输的过程中,是无法对文件流进行分真的处理,无法识别,因此这种格式一般用于离线文件的情况,用户会提供完整的文件,如文件的地址,去获取整个文件,再进行识别。


三.智能语音交互

下面介绍产品的具体功能,阿里云的智能语音交互提供了三种形态的接口,包括录音文件识别,实时语音识别和一句话识别。

1.一句话识别

一句话识别的接口相对更直观。主要是针对较短的语音,大部分是在十秒以内,即一句话。接口也考虑了说话相对长的场景,接口限定是在60秒左右,主要用于如语音搜索,语音质量语音流较短的场景中,可以集成在各类的APP及设备上,如高德地图上的接口就是一句话识别的接口,用户可以采用语音唤醒的方式,开启一句话识别。识别过程中音频流是以每个数据包的形式流式的发送到服务端,服务端收数据后做识别,检测到用户说话结束时,服务端可以把最终的结果反馈,用户体验较好。

(1)使用须知

因为是流式传输的机构,所以支持的格式较少,主要是 pcm 和 wav 还有 opus ,采样率在语音场景下主要是两种8000采样率或16000的采样率,时长限制不超过60秒,同时可以设置附加条件,如是否返回中间结果,因为有些设备需要中间结果,如高德助手,人在同时说话时有一个中间的识别接口返回交互上感觉会好,也有些场景不需要如设备端,有时界面会做成动态的效果,这个效果表示在听,不需返回中间结果,如“帮我打开空调”,中间结果是没有必要展示出的,只是最终展示命令执行的结果即可,涉及到展示,有些场景下需要添加标点。因此提供了添加标点的功能。

(2)服务访问地址

服务访问在 sdk 里有内置的设置,一般不需要进行特殊的配置,因为是双向的流式交互,下面示意图大概介绍交互的过程,但是交互的过程背后是由协议来实现的,使用sdk不需要关心协议细节,大概了解流程即可。

image.jpeg

image.jpeg

主要分为三个阶段,第一个阶段执行 start 操作,即 sdk 会发送一个 startrecognition 指令,指令会受到服务端,针对参数做出发设置,完成后会返回 recognitionstarted 事件,启动操作就完成了,此时可以发送音频流,以流失的数据包的方式边采集边发送到服务端,服务端同步进行音频流失的识别,识别过程中若用户开启了返回中间结果的参数选项,中间结果也会被流失的方式反映,当客户端检测到语音点或用户通过点击屏幕的方式表示说话结束时,此时 sdk 发送stoprecognition 的一个指令到服务端,服务端完成最后的识别返回recoginiyioncompleted 事件,一次识别过程中即结束。

(3)鉴权

在前面的教程已涉及,不展开讲这部分,是在所有语音交互的接口是通用的。下面是每个参数的详细含义

image.jpeg

image.jpeg

需要介绍的是一句话接口是支持云端的语音检测,服务端会通过 vs 的算法来判断是否说话,因为对于有些智能设备,如音箱是通过语音唤醒进行绘画的开始,但绘画的结束需要另外一种算法,即 vd 的语音检测的算法,需要判断是否说话,判断说话后如静音达到了800毫秒或1000毫秒需结束会话,返回最终结果,很多情况是在端上做的,但因为受限于端上的计算量,模型相对小一些,效果不一定好,所以云端提供用了一种云端的 vd 能力,可以通过参数打开,打开之后服务端会做 vd 的计算,若检测到用户一段时间没有说话,如流程图里的结束事件,服务端会自行返回,不需要端上发停止事件,是针对于助手或智能设备的增强功能,同时有些关于危机算法的参数也可以通过请求来设置。以上是一句话接口的大概说明,因为相对编程较麻烦,所以提供了多种语言的sdk,可以找到每个语言的 SDK 说明。每一个 sdk 会提供相关事例代码的下载,稍后演示。

2.实时语音识别

一句话接口相对简单,用户送来相对较短的语音流,返回数据结果,还有些场景一句话识别无法满足,如实时会议记录或实时直播字幕,这类情况下一个会议持续几十分钟,一场直播持续一两个小时,此时需要提供一种超常连接的接口,即实时语音识别接口,内部会通过语言的算法对语音进行切片,内部会启动相对较短的识别流程,但对于终端用户来使用较简单,建立好连接后,可以一直把设备上采集的音频屏包发送到服务端,而不需考虑时长问题。该接口大幅简化了用户的操作,还有客服的记录场景也可实现,因为实时接口会返回事件,如用户开始说话,会有消息下发,客户端知道什么时候开始说话,什么时候开始结束,可以对客服人员和客户的交流做一些判断。

是对于语音数据流进行识别,适用于会议演讲,视频直播等长时间不间断识别的场景,因为是一种实时识别,支持的编码较少,支持的音频采样率与之前也一样。支持返回结果的格式与一句话相似,服务房地址也设置好了。下图是交互流程,与一句话识别有类似,如 start 和 stop 基本相同,在中间的过程中,服务端返回的消息有一些差别,会多sentencebegin 和sentenceend 事件。下图实时转写的参数较多。

image.jpeg

image.jpeg

其中较重要的参数是speech_noise_threshold ,用来判断断句的灵敏度的,因为在实施音频流中会存在背景噪音,类似人声等,导致实时转写的断句不精准,这种情况需要用户根据自己的场景对值进行调整,区间范围是从负一到正一,数值越大,算法判定更严格,不易将背景噪声判断为有效语音,也会造成误判,如音量较小,正确的说话人的声音被当做噪音切掉,反之若设置值特别小,会导致背景噪音被当作有效语音,需要根据业务进行优化调整。识别结果的 transcriptionresultchanged 事件与一句话接口基本对应,需要参数控制事故返回中间的识别结果,如果这个你enable_intermediate_result 设置为 false 时,该消息则不会出现,只会返回sentencebegin 和 sentenceend 事件,sentenceend 会带有整句的识别结果。以上是实时语音转写接口的介绍。

3.录音文件识别

录音文件识别针对的完全是另外一种场景,,因为在语音的应用场景里很多需求,不需要实施的,如客服质检,每天客服人员录音数据收集完成后,不一定需要当天拿到识别结果,此时可以通过录音文件识别的方式来接受业务,因为录音文件识别可以允许用户一次批量提交很多录音文件。

用户可以直接将存储好的录音文件链接地址发给我们,服务会挖掘识别结果,整个录音文件的识别接口相对于施接口较简单,由两部组成,一个提交任务,一个查询任务。因为是一种针对离线的文件的识别,所以支持的录音格式相对较多,如支持单轨和双轨,即一个录音文件里可以存两路声音,两个通道的方式保存,如客服场景下,一个通道可以存储客服人员的声音,另一个通道可以存储客户的声音,经过文件转写时,识别结果里会包含通道的信息,用户可知道每个人说了什么话。识别的格式较多些,如支持MP3的录音格式,实时接口是不支持的。调用方式也相对简单,需要类似 HTP 的调用接口提交任务,再通过另外一个 htp 接口查询任务即可。此外也支持回调方式,回调方式一般针对于高级用户使用,如大客户请求量较大,如同时提交1万个任务,如果可行效率相对较低,因此提供了回调方式,可以指定回调地址,当识别完成后,主动将结果推送给调用方。同时由于安全方面的考虑,提交文件地址会有限制。

整个文件转写的接口对外承诺大小为512M,文件在大小以内都可进行识别,另外文件转写技术接口也支持视频,如MP4视频,但这类情况视频文件易突破512M限制,若为短视频,可直接将视频提交进行识别,若为相对较大的视频,更建议将其中的音频流提供出,可大幅压缩文件大小,整体速度也会提高,带宽信号也会减少。录音文件转写任务提交后,承诺时效为六小时,即保证在六小时内完成识别,并将最终结果保存,结果的保存有24小时有效期的,转写完成后,用户可在24小时内任何时间获取识别结果,且可重复获取。下图为文件转写的流程图。

image.jpeg

接口调用方式通过阿里云开放平台,即不分api 的方式对外提供,可以使用 open API 的sdk 进行调研,因为使用阿里云统一的api ,所以接口支持的 sdk 种类较多,是整个阿里云方面统一的,此外若使用了如这里没有列出的语言,也可参考 open ap 官方的标准,自己实现一个简易的 SDK ,因为整个接口的本质是 htp 接口的形态,唯一需要的是计算安全的签名,签名的计算方式开发api 的平台都有详细介绍。关于 version 的概念,因为很早开始建设语音识别的云产品,目前文件转写技术已到4.0的版本,所以参数需要进行填写。

"appkey": "your-appkey",

"file link":"https://aliyun-nls.oss-cn-hangzhou.aliyuncs.com/asr/fileASR/examples/n1s-sampl

"auto split":false,

"version": "4.0"

"enable words": false.

"enable sample rate adaptive": true,

//valid_times是获取语音的指定时间段的识别内容,如果不需要,则不用填写

"valid times":[

{

"begin time”: 200,

"end_time":2000,

"channel id": 0

}

}

}

4.演示

下面进行演示环节,演示过程中使用到的数据代码可在官方进行下载。

(1)一句话识别

下图是临时申请演示用的 appk ,是在控制台创建的,为了安全考虑,token 有24小时有效期。

image.jpeg

事例流程包含两个关键点,第一个是调用流程,首先创建了 listener 对象,用来监听服务端返回的事件

image.jpeg

重要的事件有两个

image.jpeg

一个是 resultchanged ,当打开中间结果时,回调在每次服务端返回中间机构时触发,另外一个是 recognitioncompleted ,这个事件在整个识别过程完成后返回,发生后返回的结果是最终的识别结果。listener 创建完成后即可创建recognizer 对象。

image.jpeg

对于 recognizer 进行参数的设置,如appkey ,音频的格式,进行选择是否打开中间结果。在所有选项都关闭的情况下,参数设置好后会调用 start 方法,开启开始识别, start 方法返回后可开始发送音频,是用一个文件来模拟实时流,所以会有 sleep的事件,如果是在具体的应用场景下,音频流不是使用read方式进来的,如移动端是底层录音不断的向外抛音频包,之后发送到服务端,只有采用文件的方式模拟。

image.jpeg

当发送完数据后,会调用 recognizer stop 操作,等 stop 返回时,即最终结果

image.jpeg

最后将 recognizer 关掉,相当于将连接释放。

image.jpeg

执行这段代码,最终返回的识别结果如下图

image.jpeg

因为没有开启中间结果,因此在请求启动之后,只收到一次消息,此时将中间结果打开。

image.jpeg

再执行一遍,此时随着音频流的发送会不断的有中间结果返回,以递增的方式出现,最后会有最终结果。

image.jpeg

有时展示情况下需要加标点,将标点模式打打开。

image.jpeg

执行时可进行标点的添加

image.jpeg

若句子相对长些,中间会产生逗号,问号之类。以上为一句话接口的演示。

(2)实时语音转写

实时语音转写这里使用同样的 appkey 和 token 。

image.jpeg

同样两个关键点,第一个是 listener 创建,实时语音转写 listener 相对复杂些,除了Completed 和 Resultchange 外,多出了Sentencebegin 和 SentenceEnd 。

image.jpeg

用来标识一句话的开始及结束,begin 中有时间 truly 信息,表示这句话从哪个时间开始,Sentenceend 会返回完整的识别结果,若打开中间结果的显示,也会随着服务端的返回结果进行触发。

image.jpeg

Complete 事件在实时转写的意义不大,因为最终的结果是通过 Sentenceend 返回,中转代码的第二个点是 transcriber 的创建过程。

image.jpeg

通过 listener 指定 transcriber ,创建后设置参数,参数设置完成后调用 start 方法,开启识别,再用文件模拟音频流。

image.jpeg

最后调用 stop 操作完成识别过程,实际过程中持续几个小时的音频流也可以。执行代码。,sentencebegin 消息在音频输送过程中,首先检测到语音说话返回消息。

image.jpeg

消息 payload 会带有句子的编号,如是开始的第几句,这句话是在720秒的音频流开始的。对于 sentenceend 事件如下图

image.jpeg

表示一句话的结束,与 sentencebegin 配对出现,index 1表示为第一句,同样有时间戳,表示这句话结束的时间,同时返回begintime ,对应 sentencebegin 的时间,可计算出这句话在哪个时间范围出现,对于直播场景,可以做字幕的对齐操作,同时会返回这句话的识别结果。以上是实时语音识别的演示。

(3)文件转写

这个接口相对简单,可以写非常串型的代码,不需考虑异步回调的方式,因为是基于阿里云的开放平台结果,统一采用阿里云的践行方式。下图是演示的录音文件,整个识别过程大概分为三步

image.jpeg

image.jpeg

第一个是创建 pop 官方的 api 的 client ,创建完成后第二步可以提交文件转写的任务。需填文件转写的信息,再里面会添加 task 对象,会写 appkey 信息及文件的下达地址,将请求发送到 pop 的接口上,拿到任务的标识,标识相当于文件转写的任务,在查询接口里可通过任务进行结果的查询,查询结果里有 statustext 字段,可根据字段进行判断任务是否在执行过程中。执行过程有两个阶段,一个是排队的阶段 queueing 的状态,另一个是执行过程中 running 的阶段,两个阶段都度过后,即可获取到最终结果。执行代码。任务已提交等待三秒查询结果。

image.jpeg

是一个 jason 的结构,因为这里是一个短音频,只 sleep 三秒钟的时间,但实际使用时,若提交的任务特别多,查询操作会达到较高的 qps ,目前系统做的是两版的 qps ,若任务数量较多时,需考虑轮询策略的优化,如轮询相对较早的更有可能完成的任务,按照有序的方式进行,或使用回调的方式进行。以上是文件转写接口的演示。

5.restful api

需要补充介绍一个相对更方便的接口,即restful api 是一句话识别接口的简化调用方式,因为使用 sdk 需要做集成工作,如遇到代码块的冲突,接起来较麻烦,所以提供了更简单的调用方式,其实是 HTP 的请求,可以使用开源的通用的 api 库来完成,因为是HTP 请求,所以没有中间结果返回能力,是一个缺点,但接入很简单,可以做一个简单的命令即可完成语音识别的调用,如下图命令,由一个 token 字段和一个 appkey 字段组成,通过 core 自带的参数可指定录音文件,将文件 pose 到请求地址上,对文件进行识别,执行即为识别结果,这种调用方式的集成非常简单,若通过相对脚本化如Python 语言进行编程,通过进程调用可完成这样的操作。

image.jpeg

相关文章
|
1月前
|
机器学习/深度学习 安全 Java
视觉智能平台常见问题之图像生产功能开通时一直开通不成功如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
29 0
|
1月前
|
人工智能 边缘计算 监控
【开源视频联动物联网平台】视频AI智能分析部署方式
【开源视频联动物联网平台】视频AI智能分析部署方式
117 3
|
1月前
|
机器学习/深度学习 Java PHP
视觉智能平台常见问题之无法购买服务如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
27 2
|
1月前
|
机器学习/深度学习 安全 Java
视觉智能平台常见问题之“图像生产”功能开通时一直开通不成功如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
23 0
|
1月前
|
人工智能 搜索推荐 语音技术
有道开源的国产语音库EmotiVoice爆火了!具有情绪控制功能的语音合成引擎!
有道开源的国产语音库EmotiVoice爆火了!具有情绪控制功能的语音合成引擎!
|
1月前
|
机器学习/深度学习 API 计算机视觉
视觉智能平台常见问题之用到人脸1:1加上活体需要单独收费如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
26 2
|
1月前
|
机器学习/深度学习 API 开发工具
视觉智能平台常见问题之人脸美颜增强关闭如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
19 1
|
1月前
|
机器学习/深度学习 Ubuntu PyTorch
视觉智能平台常见问题之通用抠图老是ssl错误如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
19 0
|
10月前
|
语音技术 信息无障碍
直播源码搭建平台技术知识:实时语音识别字幕呈现功能
回到我们的直播源码平台开发上来,对于直播源码平台来说实时语音识别字幕呈现功能也是重要的功能之一,好了,正式进入我们今天的主题内容:直播源码搭建平台技术知识:实时语音识别字幕呈现功能!
直播源码搭建平台技术知识:实时语音识别字幕呈现功能
|
11月前
《阿里云产品手册2022-2023 版》——数据语音
《阿里云产品手册2022-2023 版》——数据语音