freeswitch 使用 silero-vad 静音拆分使用 fastasr 识别

silero-vad 在git 的评分挺高的测试好像比webrtc vad好下面测试下

silero-vad 支持c++ 和py 由于识别c的框架少下面使用py

以下基于python3.8+torch1.12.0+torchaudio 1.12.0 

1.由于fastasr 需要16k  所以 将freeswitch的实时音频mediabug 8k转成16k 用socket传到py   模块代码百度多略 。

pip3 install fastasr

使用阿里的模型吧  感觉还行

下载预训练模型

paraformer预训练模型下载

进入FastASR/models/paraformer_cli文件夹,用于存放下载的预训练模型.

cd ../models/paraformer_cli

从modelscope官网下载预训练模型,预训练模型所在的仓库地址 也可通过命令一键下载。

wget --user-agent="Mozilla/5.0" -c "https://www.modelscope.cn/api/v1/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/repo?Revision=v1.0.4&FilePath=model.pb"

mv repo\?Revision\=v1.0.4\&FilePath\=model.pb model.pb 

将用于Python的模型转换为C++的,这样更方便通过内存映射的方式直接读取参数,加快模型读取速度。

../scripts/paraformer_convert.py model.pb

查看转换后的参数文件wenet_params.bin的md5码,md5码为c77bc27e5758ebdc28a9024460e48602,表示转换正确。

md5sum -b wenet_params.bin

测试:

git clone https://github.com/chenkui164/FastASR

 fastasr  ok

2、silero-vad安装

 需要环境 本文torch1.12.0+torchaudio 1.12.0 

  • pytorch >= 1.12.0
  • torchaudio >= 0.9.0 (used only for examples, IO and resampling, can be omitted in production)

 安装好就行

测试:

 silero-vad/parallel_example.ipynb at master · snakers4/silero-vad · GitHub

3. 综合:

fs 每帧数据10ms 用python3 合并了 vad 推荐30ms 核心代码如下:

其他代码参考

FastASR/paraformer_cli.py at main · chenkui164/FastASR · GitHub

silero-vad/parallel_example.ipynb at master · snakers4/silero-vad · GitHub

  with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
        # 绑定地址和端口
        s.bind(ADDR)
        # 等待接收信息 
        datahe = []
        allokdata=[]  
        index=0;
        sendstate=0
        print("udpstart\n")
        while True:
            #print('UDP服务启动,准备接收数据……')
            # 接收数据和客户端请求地址
            data, address = s.recvfrom(BUFFSIZE) 
            if not data:
                break  
            if (len(data)) < 640: 

  。。。。。

       datahe = np.append( datahe,np.frombuffer( newdata0  , np.int16 )   );   
                    audio_float32 =   int2float(  datahe ) 
                    new_confidence = model(torch.from_numpy(audio_float32), 16000).item()
                    #print("==",new_confidence)    
                    if new_confidence >=0.5: #合并数据为识别
                        print("=================",new_confidence);  
                        if sendstate==1: 
                          allokdata = np.append( allokdata, datahe  )
                        else: 
                          sendstate=1
                          allokdata = datahe
                             
                        #f.write( datahe.tobytes()  ) 
                    else:
                        if sendstate!=0:# 一段有声音的识别
                          start_time = time.time()
                          p.reset()
                          result = p.forward(allokdata)
                          end_time = time.time()
                          print('Result: "{}".'.format(result))
                          print("Model inference takes {:.2}s.".format(end_time - start_time))
                          allokdata =[] 
                        sendstate=0;
                    datahe = []
                    index=0; 

  

最终呼叫实时测试效果如下,效果还行。:

可以在cpu服务器开启做实时翻译、机器人之类 的 。未测试并发能力。

如果需要支持到:https://shop121230895.taobao.com/index.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本系统的研发具有重大的意义,在安全性方面,用户使用浏览器访问网站时,采用注册和密码等相关的保护措施,提高系统的可靠性,维护用户的个人信息和财产的安全。在方便性方面,促进了校园失物招领网站的信息化建设,极大的方便了相关的工作人员对校园失物招领网站信息进行管理。 本系统主要通过使用Java语言编码设计系统功能,MySQL数据库管理数据,AJAX技术设计简洁的、友好的网址页面,然后在IDEA开发平台中,编写相关的Java代码文件,接着通过连接语言完成与数据库的搭建工作,再通过平台提供的Tomcat插件完成信息的交互,最后在浏览器中打开系统网址便可使用本系统。本系统的使用角色可以被分为用户和管理员,用户具有注册、查看信息、留言信息等功能,管理员具有修改用户信息,发布寻物启事等功能。 管理员可以选择任一浏览器打开网址,输入信息无误后,以管理员的身份行使相关的管理权限。管理员可以通过选择失物招领管理,管理相关的失物招领信息记录,比如进行查看失物招领信息标题,修改失物招领信息来源等操作。管理员可以通过选择公告管理,管理相关的公告信息记录,比如进行查看公告详情,删除错误的公告信息,发布公告等操作。管理员可以通过选择公告类型管理,管理相关的公告类型信息,比如查看所有公告类型,删除无用公告类型,修改公告类型,添加公告类型等操作。寻物启事管理页面,此页面提供给管理员的功能有:新增寻物启事,修改寻物启事,删除寻物启事。物品类型管理页面,此页面提供给管理员的功能有:新增物品类型,修改物品类型,删除物品类型。
freeswitch是一个功能强大的开源电话交换平台,可以用于构建语音、视频和聊天应用程序。想要将freeswitch移植到ARM架构下进行交叉编译,可以按照以下步骤进行。 首先,确保你有一个可以运行Linux操作系统的ARM开发板或设备。ARM架构有许多不同的变种,所以你需要选择适合你设备的版本。 其次,安装交叉编译工具链。交叉编译工具链包含用于在一种架构上生成另一种架构的二进制文件的工具。你需要为ARM架构下载并安装适当的交叉编译工具链。 然后,获取freeswitch的源代码。你可以从官方网站上下载最新的源代码包或从版本控制系统中获取最新的开发版本。将源代码解压到你的开发环境中。 接下来,配置freeswitch的编译选项。进入freeswitch的源代码目录,执行./configure命令来配置编译选项。在configure命令中,使用--host选项指定目标架构为ARM,指定交叉编译工具链的路径。 然后,进行编译。运行make命令来编译freeswitch。这可能需要一些时间,因为编译freeswitch可能涉及到许多依赖库的编译和链接。 最后,将编译后的二进制文件和依赖库安装到ARM设备中。使用make install命令来安装freeswitch到指定的目录。 完成上述步骤后,你就成功地将freeswitch移植到ARM架构中,并进行了交叉编译。现在,你可以在ARM设备上运行freeswitch,并构建语音、视频和聊天应用程序了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值