语音识别服务分离计算内核

简介: 云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 背景最近研究的同事对识别内核做了一些优化,将原先集成在casrserver的内核计算逻辑单独抽离出来做成了服务并且测试后性能有提升,需要casrserver服务配合做一些改造,我之前也有过类似的想法,这次正好识别工程团队没有人力支持,加上我之前维护过casrserver, 于是就去协助casrserver改造了。

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!


背景

最近研究的同事对识别内核做了一些优化,将原先集成在casrserver的内核计算逻辑单独抽离出来做成了服务并且测试后性能有提升,需要casrserver服务配合做一些改造,我之前也有过类似的想法,这次正好识别工程团队没有人力支持,加上我之前维护过casrserver, 于是就去协助casrserver改造了。在修改之前先介绍一下当前的架构

当前架构

1

如上图,当前casrserver中既处理了网络连接,又完成了识别的计算任务,图中是一次语音请求的核心交互逻辑, 一条客户端连接过来,网络进程里会对应三个协程:

  • recv协程负责接收客户端发上来的数据
  • rpc协程负责将recv的数据发送给计算进程,然后接收计算进程返回的识别结果
  • send协程将识别结果再回给客户端

为了做到异步三个协程之间用了两个队列进行通信, 关于这套架构更详细的介绍,见顺哥在2016年openresty大会做的 ppt分享。之前的架构介绍到这里,让我们再来看看新版修改后的架构。

改动后的架构

2

如图,原先在openresty中worker进程fork出来的计算进程已经抽离出来成为独立的服务,casrserver和asr kernel server通过cosocket进行通信。

实现

针对上述架构,在新的casrserver中主要做了如下修改:

消息格式

asr-kernel-server服务的同事定义了一套新的消息格式, casrserver对应的实现如下:

  • 针对这个消息格式,casrserver里封装了protocol.lua, 用于tcp底层的数据包封装。
  • 针对上层的业务数据,由 asr_kernel_helper.lua 中的pack和unpack完成业务数据的打包, 使用protobuf对数据进行序列化。

处理逻辑

  • 客户端websocket连接进来的时候,同步建一条到asr-kernel-server的连接
  • 在主协程中新起了两个协程分别做接收和发送逻辑,接收和发送可以全双工进行,不再需要发送完后一帧数据后等计算进程返回了才能发送下一帧数据,具体实现在asr_kernel.lua中的kernel.send和kernel.recv。

其他

由于移除了计算进程,因此对原有的代码进行了删减,主要有这些:

  • 移除了服务启动前资源的同步、预热逻辑
  • 移除了原先的rpc协程
  • 移除了计算进程池的管理
  • 移除了与计算进程的luasocket通信

优势

我认为将识别计算部分分离出来有如下好处

1.职责更加单一化,使基于openresty的casrserver可以更加专注于自身的业务逻辑,团队分工更加明确,识别内核的更新,不再需要casrserver出版本。

2.计算服务分离后,不再需要进程池管理,worker中也不用进行fork,可以充分发挥多worker的优势,使casrserver可以更加专注地处理网络io。

3.解决了casrserver和计算内核的绑定,单个casrserver支持更多的client连接,可以更好地进行分布式部署

4.原先nginx worker和计算内核通信使用的是阻塞式的luasocket,可以改造为cosocket进行通信

5.困扰casrserver很久的计算内核相关的监控和日志问题,可以更好的解决掉。

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-06-11
本文作者:gerrard
本文来自:“掘金”,了解相关信息可以关注“掘金”

相关实践学习
一键创建和部署高分电影推荐语音技能
本场景使用天猫精灵技能应用平台提供的技能模板,在2-5分钟内,创建一个好玩的高分电影推荐技能,使用模板后无须代码开发,系统自动配置意图、实体等,新手0基础也可体验创建技能的乐趣。
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
4月前
|
前端开发 API 异构计算
构建一个语音转文字的WebApi服务
构建一个语音转文字的WebApi服务
87 0
|
10月前
|
语音技术
阿里云语音识别服务提供了三个版本的录音文件识别
阿里云语音识别服务提供了三个版本的录音文件识别
350 1
|
自然语言处理 监控 BI
智能语音交互控制台项目服务用量查看Quick Start
智能语音交互(Intelligent Speech Interaction)是基于语音识别、语音合成、自然语言理解等技术,为企业在多种实际应用场景下,赋予产品“能听、会说、懂你”式的智能人机交互功能。适用于智能问答、智能质检、法庭庭审实时记录、实时演讲字幕、访谈录音转写等场景,在金融、司法、电商等多个领域均有应用。目前云上的许多企业客户在使用该服务后,往往有想查看具体某个项目的消费账单等需求。这一需求,目前是无法直接查看到的。但是在控制台监控统计功能页可以分项目查看调用量。再结合费用中的账单明细能计算下具体的消费。本文以12月的项目调用为例,为您介绍如何查看监控报表页面项目用量详情。
175 0
智能语音交互控制台项目服务用量查看Quick Start
|
自然语言处理 人机交互 语音技术
阿里云智能语音交互中一句话识别服务的PythonSDK调用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,一句话识别服务可以对一分钟内的短语音进行识别,适用于对话聊天,控制口令等较短的语音识别场景,此篇文章将介绍此服务的pythonSDK简单使用
601 0
阿里云智能语音交互中一句话识别服务的PythonSDK调用
|
自然语言处理 人机交互 语音技术
阿里云智能语音交互中录音文件识别服务的简单使用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,识别是针对已经录制完成的录音文件,进行离线识别的服务。录音文件识别是非实时的,识别的文件需要提交基于HTTP可访问的URL地址,不支持提交本地文件。此篇文章简单介绍下javasdk的调用
837 0
阿里云智能语音交互中录音文件识别服务的简单使用
|
自然语言处理 人机交互 API
阿里云智能语音交互中长文本语音合成服务的restful api 中python3调用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,长文本语音合成功能提供了将超长文本(如千字或者万字)合成为语音二进制数据的功能,此篇文章简单介绍基于python的简单调用
928 0
阿里云智能语音交互中长文本语音合成服务的restful api 中python3调用
|
自然语言处理 视频直播 人机交互
阿里云智能语音交互中实时识别服务的简单使用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,实时识别服务对长时间的语音数据流进行识别,适用于会议演讲、视频直播等长时间不间断识别的场景,此篇文章将介绍此服务的简单使用
1298 0
阿里云智能语音交互中实时识别服务的简单使用
|
自然语言处理 Java 人机交互
阿里云智能语音交互中一句话识别服务的简单使用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,一句话识别服务可以对一分钟内的短语音进行识别,适用于对话聊天,控制口令等较短的语音识别场景,此篇文章将介绍此服务的简单使用
975 0
阿里云智能语音交互中一句话识别服务的简单使用
|
自然语言处理 Java 人机交互
阿里云智能语音交互--实时语音识别服务Java SDK Quick Start
智能语音交互(Intelligent Speech Interaction)是基于语音识别、语音合成、自然语言理解等技术,为企业在多种实际应用场景下,赋予产品“能听、会说、懂你”式的智能人机交互功能。适用于智能问答、智能质检、法庭庭审实时记录、实时演讲字幕、访谈录音转写等场景,在金融、司法、电商等多个领域均有应用。实时语音识别服务可对不限时长的音频流做实时识别,达到“边说边出文字”的效果,内置智能断句,可提供每句话开始结束时间。可用于视频实时直播字幕、实时会议记录、实时法庭庭审记录、智能语音助手等场景。本文将使用Java SDK演示实时语音识别服务的快速调用以供参考。
625 0
|
JSON 自然语言处理 测试技术
使用科大讯飞语音转文字的服务进行电话录音分析
使用科大讯飞语音转文字的服务进行电话录音分析
使用科大讯飞语音转文字的服务进行电话录音分析