FreeSWITCH源码分析和分享之ASR解析

2024-02-28 19:58

本文主要是介绍FreeSWITCH源码分析和分享之ASR解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

asr_interface的工作流程

调用detect_speech这个APP,FreeSWITCH的核心代码中会注册ASR的监听(bugging)处理,并注册监听回调函数。

一、监听回调函数初始化时启动

创建一个线程A。A线程主要是处理识别结果。

在线程中可以看到,只要channel没有销毁,呼叫状态没有进入CS_HANGUP状态,就会执行一个死循环,等待条件变量被唤醒。
当条件变量被唤醒后,动作就是检查当前session的内存池中是否有识别结果数据。
这个检查动作比较迷惑人,即便没有识别结果,但只要vad检测到状态是activity的,检查结果也是成功的。

检查结果成功的话。创建freeswitch的事件,并发送事件。
有识别结果时,事件的"Speech-Type"为"detected-speech"类型,如果无识别结果,事件的"Speech-Type"为"begin-speaking"类型

二、监听回调函数在读取音频流时被调用

将读取的音频流数据发给语音识别的回调函数。
然后执行检查识别结果,如果检查识别结果成功,发送一个信号给处于阻塞等待状态的A线程。

三、语音识别处理(我开发的模块,或者使用MRCP建立通道转发语音获取结果)

VAD识别函数,我采用的处理也是注册回调函数,将每一帧数据挂载在一个链表中,达到一个可识别的阀值大小时,送给VAD接口去检测。

VAD回调使用的类型由profile决定,ASR引擎类型同样由profile决定。灵活选择,热加载。

这篇关于FreeSWITCH源码分析和分享之ASR解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/756459

相关文章

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT