智能语音交互-语音识别介绍 | 学习笔记

简介: 简介:快速学习智能语音交互-语音识别介绍

开发者学堂课程【智能语音对话机器人训练营课程:智能语音交互-语音识别介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/908/detail/14394


智能语音交互-语音识别介绍


目录:

一、语音识别结构示意图

二、一句话识别

三、实时语音识别

四、录音文件识别

语音识别就是将一段音频数据转换为文字数据


一、语音识别结构示意图

image.png

音频格式

实时音频格式

Pcm/pcm

Wav

Opus/opu

Speex

离线文件格式

Mp3

Aac

Mp4

M4a

Mkv 

阿里云的智能语音交互提供的三种

录音文件识别

实时语音识别

一句话识别

 

二、一句话识别

对时长较短(一分钟以内)的语音进行识别,适用于较短的语音交互场景,如语音搜索、语音指令、语音短消息等可集战在各类 App 、智能家电、智能助手等产品中。

语音搜索

支持各种场景下的语音技索,比如地图导航、浏览器搜索等。可以集成

到任何形式的于机应用中,最大限度的解放双手。

语音指令

通过语音命令控制智能设备,实现快捷便利的操作。比如控制空调的开

关、电视的换台等。可以朱成到智能家居等设备中。

语音短消息

通过语音发送或者接收短消息。在不方便打字的情况下实现快速便捷的

短信操作,比如音频短信转文字。

接口说明

对一分钟内的短语音进行识别,适用于对话聊天、控制口令、语音输入法、语音搜索等较短的语音识别场景。

支持的输入格式:PCM 编码(无压缩的 PCM 或 WAV 文件)、WAV、OPUS、AMR 格式单声道( mono )音频文件,16bit采样位数。

音频采样率:8000Hz/16000Hz。

时长限制:语音数据时长不能超过60s。

音频文件大小:不超过2 MB。

设置返回结果:

是否返回中间识别结果

是否在后处理中添加标点

是否将中文数字转为阿拉伯数字输出

设置多语言识别:在管控台编辑项目中进行模型选择,详情请参见管理项目 

交互流程image.pngimage.png

image.png

鉴权

客户端与服务端建立 WebSocket 连接时,使用 Token 进行鉴权。关于 Token 获取请参见获取 Token

开始识别

客户端发起一句话识别请求,服务端确认请求有效。

其中在请求消息中需要进行参数设置,各参数由 SDK 中 SpeechRecognizer 对象的相关 set 方法设置,各参数含义如下

.发送数据

循环发送语音数据,持续接收识别结果。

若 enable_intermediate_result 设置为 true, 服务端会持续多次返回 RecognitionResultChanged 消息,即中间识别结果, 

示例如下:

北京的天

北京的天气

服务端返回的响应消息:

{

"header": {

"namespace": "SpeechRecognizer",

"name": "RecognitionResultChanged",

"status": 20000000,

"message_id": "e06d2b5d50ca40d5a50d4215c7c8****",

"task_id": "4c3502c7a5ce4ac3bdc488749ce4****",

"status_text": "Gateway:SUCCESS:Success."

},

"payload": {

"result": "北京的天气"

}

}

header 对象参数说明:

参数

类型

说明

namespace

String

消息所属的命名空间。

name

String

息名称RecognitionResultChanged 表示获取到中间识别结果。

status

Integer

状态码,表示请求是否成功,

见服务状态码。

status_text

String

状态消息。

task_id

String

任务全局唯一 ID,请记录该值,

便于排查问题。

message_id

String

本次消息的 ID。

payload 对象参数说明:

参数

类型

说明

result

String

中间识别结果。

若 enable_intermediate_result 设置为 false , 此步骤服务端不返回任何消息。

header 对象参数说明

参数

类型

说明

namespace

String

消息所属的命名空间。

name

String

消息名称,RecognitionCompleted表示识别完成。

status

Integer

状态码,表示请求是否成功,见服务状态码。

status_text

String

状态消息。

task_id

String

任务全局唯一ID,请记录该值,便于排查问题。

message_id

String

本次消息的ID,由SDK自动生成。

payload 对象参数说明:

参数

类型

说明

result

String

一句话识别的结果。


三、实时语音识别

对不限时长的音频流做实时识别,达到"边说边出文字"的效彩内置智能断句,可提供每句话开始结束时间。可用于视频实时直播字幕、实时会议记录、实时法庭庭审记录、智能语音助手等场景。

适用场景

视频实时直播字母

现场演讲场景、直播场景下,将视频中的音频实时转写成字幕。还可以辅助视频平台进行内容合规治理.

实时会议记录

将会议中的音频实时转换成文字,特别适用于电视会议等远距离场景。

实时法庭审记录

将庭审各方在庭审过程中的语音转变为文字,供各方在庭审页面上查看,减少书记员的工作。

实时客服记录

将呼叫中心的语音实时的转写到文字,可实现实时质检、服务风险管理等。

接口说明

对长时间的语音数据流进行识别,适用于会议演讲、视频直播等长时间不间断识别的场景。

使用须知

支持的输入格式:PCM(无压缩的 PCM 或 WAV 文件)、16 bit采样位数、单声道(mono)。

支持的音频采样率:8000 Hz和16000 Hz。

支持设置返回结果:是否返回中间识别结果,在后处理中添加标点,将中文数字转为阿拉伯数字输出。

支持设置多语言识别:在控制台编辑项目中进行模型选择,详情请参见管理项目

服务地址

访问类型

说明

URL

外网访问

所有服务器均可使用外网访问URL(SDK中默认设置了外网访问URL)。

wss://nls-gateway.cn-shanghai.aliyuncs.com/ws/v1

上海 ECS 内网访问

使用阿里云上海ECS(即 ECS 地域为华东2(上海)),可使用内网访问URL。ECS的经典网络不能访问 AnyTunnel ,即不能在内网访问语音服务;如果希望使用AnyTunnel ,需要创建专有网络在其内部访问。

说明 

使用内网访问方式,将不产生 ECS 实例的公网流量费用。

关于 ECS 的网络类型请参见网络类型。

ws://nls-gateway.cn-shanghai-internal.aliyuncs.com:80/ws/v1

交互流程

1. 鉴权

客户端与服务端建立 WebSocket 连接时,使用 Token 进行鉴权。关于 Token 获取请参见获取 Token

2. 开始识别

客户端发起请求,服务端确认请求有效。其中在请求消息中需要进行参数设置,各参数由 SDK 中 SpeechTranscriber 对象的 set 方法设置,

各参数含义如下:

参数

类型

是否必选

说明

appkey

String

管控台创建的项目appkey。

format

String

音频编码格式,默认是PCM(无压缩的PCM文件或WAV文件),16bit采样位数的单声道。

sample_rate

Integer

音频采样率,默认是16000Hz,根据音频采样率在管控台对应项目中配置支持该采样率及场景的模型。

enable_intermediate_result

Boolean

是否返回中间识别结果,默认是False。

enable_punctuation_prediction

Boolean

是否在后处理中添加标点,默认是False。

enable_inverse_text_normalization

Boolean

是否在后处理中执行 ITN ,设置为 True 时,中文数字将转为阿拉伯数字输出,默认是 False。

说明 

不对词信息进行 ITN转换。

customization_id

String

自学习模型 ID。

vocabulary_id

String

定制泛热词 ID。

max_sentence_silence

Integer

语音断句检测阈值,静音时长超过该阈值会被认为断句,参数范围200ms~2000ms,默认值800ms。

enable_words

Boolean

是否开启返回词信息,默认是  False。

enable_ignore_sentence_timeout

Boolean

是否忽略实时识别中的单句识别超时,默认是 False。

disfluency

Boolean

是否对识别文本进行顺滑(去除语气词,重复说等),默认是 False。

speech_noise_threshold

Float

噪音参数阈值,参数范围:[-1,1]。取值说明如下:

取值越趋于-1,噪音被判定为语音的概率越大。

取值越趋于+1,语音被判定为噪音的概率越大。

说明 

该参数属高级参数,调整需慎重并重点测试。

enable_semantic_sentence_detection

Boolean

是否开启语义断句,可选,默认是False。

3. 接收识别结果

客户端循环发送语音数据,持续接收识别结果:

SentenceBegin 事件表示服务端检测到了一句话的开始。实时语音识别服务的智能断句功能会判断出一句话的开始与结束,举例如下

{

"header": {

"namespace": "SpeechTranscriber",

"name": "SentenceBegin",

"status": 20000000,

"message_id": "a426f3d4618447519c9d85d1a0d1****",

"task_id":

"5ec521b5aa104e3abccf3d361822****",

"status_text": "Gateway:SUCCESS:Success."

},

"payload": {

"index": 1,

"time": 0

}

}

header 对象参数说明:

参数

类型

说明

namespace

String

消息所属的命名空间。

name

String

消息名称,SentenceBegin表示一个句子的开始。

status

Integer

状态码,表示请求是否成功,见服务状态码。

status_text

String

状态消息。

task_id

String

任务全局唯一ID,请记录该值,便于排查问题。

message_id

String

本次消息的ID。

payload 对象参数说明:

参数

类型

说明

index

Integer

句子编号,从1开始递增。

time

Integer

当前已处理的音频时长,单位是毫秒

TranscriptionResultChanged 事件表示识别结果发生了变化。仅当 enable_intermediate_result 取值为 true 时会多次返回此消息,即一句话的中间识别结果,举例如下:

{

"header": {

"namespace": "SpeechTranscriber",

"name": "TranscriptionResultChanged",

"status": 20000000,

"message_id": "dc21193fada84380a3b6137875ab****",

"task_id": "5ec521b5aa104e3abccf3d361822****",

"status_text": "Gateway:SUCCESS:Success."

},

"payload": {

"index": 1,

"time": 1835,

"result": "北京的天",

"confidence": 1.0,

"words": [{

"text": "北京",

"startTime": 630,

"endTime": 930

}, {

"text": "的",

"startTime": 930,

"endTime": 1110

}, {

"text": "天",

"startTime": 1110,

"endTime": 1140

}]

}

}

header 对象参数同上述表格说明,

name 为 TranscriptionResultChanged :表示句子的中间识别结果。 

payload 对象参数说明:

参数

类型

说明

index

Integer

句子编号,从1开始递增。

time

Integer

当前已处理的音频时长,单位是毫秒。

result

String

当前句子的识别结果。

words

List< Word >

当前句子的词信息,需要将enable_words设置为true。

confidence

Double

当前句子识别结果的置信度,取值范围:[0.0,1.0]。值越大表示置信度越高

SentenceEnd 事件表示服务端检测到了一句话的结束,并附带返回该句话的识别结果,举例如下:

{

"header": {

"namespace": "SpeechTranscriber",

"name": "SentenceEnd",

"status": 20000000,

"message_id": "c3a9ae4b231649d5ae05d4af36fd****",

"task_id": "5ec521b5aa104e3abccf3d361822****",

"status_text": "Gateway:SUCCESS:Success."

},

"payload": {

"index": 1,

"time": 1820,

"begin_time": 0,

"result": "北京的天气。",

"confidence": 1.0,

"words": [{

"text": "北京",

"startTime": 630,

"endTime": 930

}, {

"text": "的",

"startTime": 930,

"endTime": 1110

}, {

"text": "天气",

"startTime": 1110,

"endTime": 1380

}]

}

}

header 对象参数同上述表格说明,name 为 SentenceEnd 表示识别到句子的结束。payload 对象参数说明:

参数

类型

说明

index

Integer

句子编号,从1开始递增。

time

Integer

当前已处理的音频时长,单位是毫秒。

begin_time

Integer

当前句子对应的SentenceBegin事件的时间,单位是毫秒。

result

String

当前的识别结果。

words

List< Word >

当前句子的词信息,需要将enable_words设置为true。

confidence

Double

当前句子识别结果的置信度,取值范围:[0.0,1.0]。值越大表示置信度越高。

Word 对象参数说明:

参数

类型

说明

text

String

文本。

startTime

Integer

词开始时间,单位为毫秒。

endTime

Integer

词结束时间,单位为毫秒。

4. 结束识别

通知服务端语音数据发送完成,服务端识别结束后通知客户端识别完毕


四、录音文件识别

提交录音文件识别请求后,商业用户的转写任务可在6小时之内完成识别并返回识别文本,一次性上传大规模数据(半小时内上传起过5饿小时时长的录音)的除外.有大规模数据转写需求的客户,可与售前专家另行沟通。免费用户的转写任务可在24小时内完成识别并返回识别文本。

接口说明

录音文件识别是针对已经录制完成的录音文件,进行离线识别的服务。录音文件识别是非实时的,识别的文件需要提交基于 HTTP 可访问的 URL 地址,不支持提交本地文件。

使用限制

支持单轨/双轨

的.wav、.mp3、.m4a、.wma、.aac、.ogg、.amr、.flac格式录音文件识别。

文件大小需控制在512 MB以下。

需要识别的录音文件必须存放在某服务上,可以通过 URL 访问。

推荐使用阿里云 OSS :如果 OSS 中文件访问权限为公开,可参见公共读 Object ,获取文件访问链接;如果 OSS 中文件访问权限为私有,可参见私有 Object ,通过 SDK 生成有有效时间的访问链接。

可以把录音文件存放在自行搭建的文件服务器,提供文件下载。请保证 HTTP 的响应头( Header )中 Content-Length 的长度值和 Body 中数据的真实长度一致,否则会导致下载失败.

上传的录音文件 URL 的访问权限需要设置为公开,URL 中只能使用域名不能使用IP地址、不可包含空格,请尽量避免使用中文。

录音文件识别属于离线识别服务,对于并发数没有限制,对于 QPS(Queries Per Second)的限制如下:

POST 方式的录音文件识别请求调用接口,用户级别 QPS 限制为200。

GET 方式的录音文件识别结果查询接口,用户级别 QPS 限制为500。

免费用户每日可识别不超过2小时时长的录音文件。

提交录音文件识别请求后,免费用户的识别任务在24小时内完成并返回识别文本; 付费用户的识别任务在6小时内完成并返回识别文本。识别结果在服务端可保存72小时。

智能分轨功能只支持8k单通道的语音。

支持调用方式:轮询方式/回调方式。

支持语言模型定制。更多信息,请参见语言模型定制

支持热词。更多信息,请参见热词

支持汉语普通话、方言、欧美英语等多种模型识别。查看支持的方言和语种,请参见语音识别服务支持的方言模型和语种都有哪些?

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
API 语音技术 开发者
构建智能语音助手应用:语音识别和语音合成的实践
智能语音助手应用正在成为现代应用程序的热门趋势。语音识别技术使应用能够理解和解释用户的语音输入,而语音合成技术则将计算机生成的语音转化为可听的声音。本文将介绍构建智能语音助手应用的实践方法,并展示如何使用开源工具和API进行语音识别和语音合成。
496 0
|
机器学习/深度学习 自然语言处理 搜索推荐
阿里云智能语音交互产品测评:基于语音识别、语音合成、自然语言理解等技术
智能语音交互基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景。 目前已上线实时语音识别、一句话识别、录音文件识别、语音合成等多款产品,您可以在控制台页面进行试用,也可以通过API调用相关能力。
44518 4
阿里云智能语音交互产品测评:基于语音识别、语音合成、自然语言理解等技术
|
机器人 语音技术 Android开发
App Inventor 2 语音交互机器人Robot,使用讯飞语音识别引擎
App Inventor 2 语音识别及交互App。识别语言指令并控制机器人运动,主要用到语音识别器及文本朗读器组件,语音识别相关开发最佳入门。代码逻辑简单,App交互性及趣味性非常强~
244 0
|
API 语音技术
构建智能语音助手应用:语音识别和语音合成的实践
智能语音助手应用正变得越来越流行,它们能够通过语音与用户进行交互,为用户提供便捷的服务。在本文中,我们将介绍如何构建一个智能语音助手应用,包括语音识别和语音合成的实践。我们将使用现代化的语音处理技术和开源工具来实现这个应用。
352 0
|
机器学习/深度学习 自然语言处理 前端开发
智能语音交互自学习平台培训 | 学习笔记
简介:快速学习智能语音交互自学习平台培训
323 0
智能语音交互自学习平台培训 | 学习笔记
|
机器学习/深度学习 编解码 自然语言处理
音频基础知识+智能语音控制台介绍 | 学习笔记
音快速学习频基础知识+智能语音控制台介绍
音频基础知识+智能语音控制台介绍 | 学习笔记
|
机器学习/深度学习 自然语言处理 达摩院
语音识别技术|学习笔记
快速学习语音识别技术
337 0
语音识别技术|学习笔记
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与智能语音概述 | 学习笔记
快速学习 人工智能与智能语音概述
189 0
人工智能与智能语音概述 | 学习笔记
|
开发框架 自然语言处理 机器人
智能语音交互产品介绍 | 学习笔记
快速学习 智能语音交互产品介绍
265 0
|
机器学习/深度学习 中间件 API
语音识别技术及应用 | 学习笔记
快速学习 语音识别技术及应用
343 0