FreeSWITCH ASR 电话机器人 VAD 打断 ASR集成 全功能开源代码

简介: 最近很多人都对FreeSWITCH和ASR对接比较感谢兴趣,我之前已经做了一个商业模块(商业模块请点击这里http://www.ddrj.com/callcenter/asr.html),考虑到大部分人,只是研究一下,并不准确购买商业模块,特意做一个开源项目给大家提供一个参考。

FreeSWITCH 语音识别 电话机器人 VAD 打断 ASR集成 全功能开源代码

gitcode地址: https://gitcode.net/iyaosan/FreeSWITCH-ASR
github地址: https://github.com/cdevelop/FreeSWITCH-ASR

最近很多人都对FreeSWITCH和ASR对接比较感谢兴趣,我之前已经做了一个商业模块(商业模块请点击这里http://www.ddrj.com/callcenter/asr.html),考虑到大部分人,只是研究一下,并不准确购买商业模块,特意做一个开源项目给大家提供一个参考。

mod_asr.cpp 第二个版本,使用了顶顶通VAD(支持噪音人声识别)本程序包的授权文件是10并发1个月的体验授权,仅用于体验和测试使用。

顶顶通VAD介绍

语音活动检测(Voice Activity Detection,VAD),就是检测是否有声音,常规的算法是通过声音音量和频谱特诊来判断是否有声音的,但是无法区分是噪音还是人声,在电话机器人中噪音打断噪音识别错误的关键词始终是一个痛点,机器学习算法可以通过大量噪音和人声数据训练出判别人声还是噪音的神经网络模型,VAD算法结合深度神经网络就可以彻底解决这个痛点了。 顶顶通的最新VAD算法已经集成了人声噪音判别引擎。

噪音识别的用处

  • 防止错误的意向判断

    噪音识别成关键词(是,恩,哦),导致把无意向客户判断成有意向客户,通过噪音识别模块,过滤掉噪音,可以大大提高机器人的意向判断准确度。

  • 防止噪音打断机器人说话
    大部分机器人只要开了打断功能,有一点噪音就给错误打断了,根本没法在生产环境开打断功能,有了噪音识别模块,就可以避免噪音打断了。
  • 机器人反应更灵敏

    噪音环境VAD无法判断用户说话结束,会导致用户说话完成了,机器人还一直傻等,有了噪音识别模块,可以让机器人反应更加灵敏。

  • 节约ASR费用

    在电话机器人业务中,大量的无效声音(各种噪音)调用ASR,浪费ASR调用费用,有了噪音人声判别功能,就可以噪音不再调用ASR接口,节约大量ASR费用。

噪音人声识别算法原理

基于20G的噪音声音文件和100G的正常人声的声音文件,使用tdnn(时延神经网络)和 lstm(长短期记忆网络)训练出噪音人声音判别模型。

噪音人声识别的准确率

准确率取决训练数据的准确性,目前的模型大于1秒声音准确率大于99.9%, 300毫秒以内短时人声和质量很差的人声,有少量识别成噪音的错误率,因为噪音库包含了大量的背景人声。

2023-2-28 第二版本代码提交

请在FreeSWITCH 1.8以上版本测试,低于1.8版本需要修改代码:switch_buffer.c没有switch_buffer_get_head_pointer这个函数。

  • 安装 libsad

    • 目录 copy到 /var目录,最后的路径是

      • 授权文件 /var/libsad/license.jon
      • 模型目录 /var/libsad/model/
      • lib文件 /var/libsad/libsad.so
    • mod_asr.so copy到 fs的mod目录
    • fs_cli 执行 load mod_asr 加载模块。
  • 申请ASR 本例子使用多方asr接口,注册地址 http://ai.hiszy.com/#/user/register?code=RK9RD7W 注册后可以联系ASR服务商微信 aohu6789 获取免费次数

    在fs安装目录/etc/vars.xml 配置asr key

      <X-PRE-PROCESS cmd="set" data="appKey=asr后台的appkey"></X-PRE-PROCESS>
      <X-PRE-PROCESS cmd="set" data="appSecret=asr后台的appSecret"></X-PRE-PROCESS>
      
  • 测试

    执行动作 play_and_asr 参数 playfilename waittime maxspeaktime allowbreak recordfilename
    语音识别结果存入通道变量asr_result,如果没有检测到声音设置为silence

    • playfilename 放音文件
    • waittime 等待说话时间,放音完成开始计算
    • maxspeaktime 最大说话时间
    • allowbreak 是否允许打断,检测到说话就停止放音
    • recordfilename 本次说话录音文件

      例子

       <action application="play_and_asr" data="welcome.wav  5000 10000 true /tmp/speak.wav"/>
       <action application="log" data="open=${asr_result}"/>
  • 编译

如果修改了代码编译方法是
g++ -shared -fPIC -o mod_asr.so mod_asr.cpp -I /usr/local/freeswitch/include/freeswitch -L /usr/local/freeswitch/lib -lfreeswitch -L /var/libsad/ -lsad -Wl,-rpath=/var/libsad

相关文章
|
1月前
|
传感器 监控 搜索推荐
智能服装:集成健康监测功能的纺织品——未来穿戴科技的新篇章
【10月更文挑战第7天】智能服装作为穿戴科技的重要分支,正以其独特的技术优势和广泛的应用前景,成为未来科技发展的亮点之一。它不仅改变了我们对服装的传统认知,更将健康监测、运动训练、医疗康复等功能融为一体,为我们的生活带来了更多的便利和可能。随着技术的不断进步和市场的日益成熟,我们有理由相信,智能服装将成为未来穿戴科技的新篇章,引领我们走向更加健康、智能、可持续的生活方式。
|
1月前
|
前端开发 JavaScript UED
探索Python Django中的WebSocket集成:为前后端分离应用添加实时通信功能
通过在Django项目中集成Channels和WebSocket,我们能够为前后端分离的应用添加实时通信功能,实现诸如在线聊天、实时数据更新等交互式场景。这不仅增强了应用的功能性,也提升了用户体验。随着实时Web应用的日益普及,掌握Django Channels和WebSocket的集成将为开发者开启新的可能性,推动Web应用的发展迈向更高层次的实时性和交互性。
77 1
|
1天前
|
人工智能 机器人 Shell
AI语音机器人安装方法 AI机器人安装代码
AI语音机器人安装方法 AI机器人安装代码
13 2
|
24天前
|
JSON Java API
springboot集成ElasticSearch使用completion实现补全功能
springboot集成ElasticSearch使用completion实现补全功能
24 1
|
1月前
|
存储 JSON Ubuntu
时序数据库 TDengine 支持集成开源的物联网平台 ThingsBoard
本文介绍了如何结合 Thingsboard 和 TDengine 实现设备管理和数据存储。Thingsboard 中的“设备配置”与 TDengine 中的超级表相对应,每个设备对应一个子表。通过创建设备配置和设备,实现数据的自动存储和管理。具体操作包括创建设备配置、添加设备、写入数据,并展示了车辆实时定位追踪和车队维护预警两个应用场景。
59 3
|
1月前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
1月前
|
人工智能 自然语言处理 关系型数据库
阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成
近日,阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成。
|
1月前
|
存储 前端开发 Java
Spring Boot 集成 MinIO 与 KKFile 实现文件预览功能
本文详细介绍如何在Spring Boot项目中集成MinIO对象存储系统与KKFileView文件预览工具,实现文件上传及在线预览功能。首先搭建MinIO服务器,并在Spring Boot中配置MinIO SDK进行文件管理;接着通过KKFileView提供文件预览服务,最终实现文档管理系统的高效文件处理能力。
278 11
|
2月前
|
人工智能 自然语言处理 机器人
谷歌将大模型集成在实体机器人中,能看、听、说执行57种任务
【9月更文挑战第17天】近年来,人工智能在多模态大模型领域取得显著进展。谷歌最新研发的Mobility VLA系统,将大模型与实体机器人结合,实现了视觉、语言和行动的融合,使机器人能理解并执行复杂多模态指令,如“我应该把这个放回哪里?”系统在真实环境测试中表现出色,但在计算资源、数据需求及伦理问题上仍面临挑战。相关论文发布于https://arxiv.org/abs/2407.07775。
65 9
|
2月前
|
机器学习/深度学习 人工智能 搜索推荐
如何让你的Uno Platform应用秒变AI大神?从零开始,轻松集成机器学习功能,让应用智能起来,用户惊呼太神奇!
【9月更文挑战第8天】随着技术的发展,人工智能与机器学习已融入日常生活,特别是在移动应用开发中。Uno Platform 是一个强大的框架,支持使用 C# 和 XAML 开发跨平台应用(涵盖 Windows、macOS、iOS、Android 和 Web)。本文探讨如何在 Uno Platform 中集成机器学习功能,通过示例代码展示从模型选择、训练到应用集成的全过程,并介绍如何利用 Onnx Runtime 等库实现在 Uno 平台上的模型运行,最终提升应用智能化水平和用户体验。
56 1