yin

mrcp-server 版本发布

考虑到unimrcp使用不方便,我们开始寻求自研mrcp协议、sip等。   之前开源了 client版本。https://github.com/laoyin/java-sip-mrcp GitHub - laoyin/java-sip-mrcp: java版本的mrcp服务,实现sip、mrcp等协议,实现实时语音流处理、回调等。java版本的mrcp服务,实现sip、mrcp等协议,实现实时语音流处理、回调等。. Contribute to laoyin/java-sip-mrcp development by creating an account on GitHub.GitHublaoyin 最近我们逐步完善了 mrcp-server版本,做大量代码测试等。 自研java版本mrcp-server_哔哩哔哩_bilibilihttps://github.com/laoyin/java-sip-mrcp, 基于此实现了server,用于和freeswitch进行asr交互。Java SIP
yin

freeswitch-mediabug回调细节

有群友询问如何进行监听和会写媒体。 很多人根据我的文档和文章知道了使用media bug,但是有几个回调有疑虑。 我这边出一个源码的细则,大家便非常清楚了。 类型解释 SWITCH_ABC_TYPE_INIT 初始化 close 关闭这里不再赘述 SWITCH_ABC_TYPE_WRITE_REPLACE: 将读取的进行替换 SWITCH_ABC_TYPE_WRITE_REPLACE: 写出时候,可以进行媒体替换 代码样例 那么你如何进行读取和写出时候进行替换呢? 我们看一部分代码 static switch_bool_t replace_callback(switch_media_bug_t *bug, void *user_data, switch_abc_type_t type) { displace_
yin

如何自定义freeswitch-cdr

关于cdr,只要涉及freeswitch,都关心cdr存储和处理。 如果现有的cdr你自己不满意,如何自定义呢? 我们参考freeswitch mod_json_cdr 来看看源码如何实现的。 源码只有几百行,特别适合初学者学习。 /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application * Copyright (C) 2005-2014, Anthony Minessale II * * Version: MPL 1.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not
yin

kam实践-安装和基本概念

安装: 要在 Ubuntu 上安装 Kamailio,你可以按照以下步骤进行: 1. 打开终端。 2. 更新软件包列表: bashCopy code sudo apt update 1. 安装 Kamailio 及其附加组件: bashCopy code sudo apt install kamailio kamailio-mysql-modules kamailio-tls-modules kamailio-websocket-modules 这将安装 Kamailio 主程序以及一些常用的模块,如 MySQL 数据库支持、TLS(Transport Layer Security)支持和 WebSocket 支持。 1. 完成安装后,编辑 Kamailio 的配置文件。主配置文件位于 /etc/kamailio/kamailio.
yin

电话实现大规模姓名匹配02

上一讲,我们讲到通过ner命名实体识别,实现信息提取。 当我们分析完用户说的话,提取出对应的名称,接下来就是问题的重中之重。 如果用户说的内容asr翻译的是李命薄,或者用户不记得对方名字,只有他的昵称。鸵鸟。我们如何去解决这类问题。 多种方案 1:使用es做相似查询搜索 es及elasticsearch,熟悉es的人清楚,es将文本内容解析成token之后,使用倒排索引方式存储。 如果我们使用es进行相似匹配,效果可能不好,因为姓名此类,如何使用分词呢?按字分词检索? 2:使用词向量来做相似匹配。 我个人采用词向量方式。 什么是词向量,embedding 最近大模型爆火,很多人使用chatgpt,或者其他开源大模型时候,经常接触embedding。就是将文本转化为可以计算的向量。 词向量-可以使用对汉字的词向量,方式很多。 可以调用chatgpt的embedding接口 可以使用bert-embedding方式,甚至可以使用Word2vec等等经典方式处理。 解析出对应的embedding向量之后,将向量存储起来,形成embedding库
yin

电话实现大规模姓名匹配01

客户有这样的需求,公司500-1000名员工,通过姓名、昵称转接给当事人。 初看觉得是个简单问题,提取姓名+匹配即可。 你期望的而输入 query == 姓名,然后做匹配。 真实情况可能是: A: query== 帮我转接给李鬼(姓名) B: query== 那个叫李奎的帮我转接 C: query== 帮我转给黑旋风 ……………… 所以,这个简单的需求,其实是ner命名实体识别+多维相似匹配。 ner命名实体识别,我们可以采用bert等+crf来实现。 对应提取的姓名而言,这只是实现了第一步。 现在需要将姓名和近1000个进行相似匹配。 实现了相似匹配还需要考虑一个问题,1000个姓名,包含了n个昵称。 同时,还得考虑asr转写之后的口音问题。 我们下一篇文章来介绍,我是如何处理的。
yin