当前位置: 首页 > news >正文

阿里达摩院:FunASR - onnxruntime 部署

阿里达摩院:FunASR - onnxruntime 部署

git clone https://github.com/alibaba/FunASR.git 

切换到 onnxruntime

 cd FunASR/runtime/onnxruntime

1下载 onnxruntime

wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/dep_libs/onnxruntime-linux-x64-1.14.0.tgz
tar -zxvf onnxruntime-linux-x64-1.14.0.tgz

/media/wmx/soft1/software/onnxruntime/onnxruntime-linux-x64-1.14.0

2下载 ffmpeg

wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/dep_libs/ffmpeg-master-latest-linux64-gpl-shared.tar.xz
tar -xvf ffmpeg-master-latest-linux64-gpl-shared.tar.xz

我这里用之前下载的 /media/wmx/ws1/ffmpeg-n6.0

3安装依赖

# openblas
sudo apt-get install libopenblas-dev #ubuntu
# sudo yum -y install openblas-devel #centos# openssl
apt-get install libssl-dev #ubuntu 
# yum install openssl-devel #centos

4编译 onnxruntime 工程:

#cd FunASR/runtime/onnxruntime
mkdir build && cd build
cmake  -DCMAKE_BUILD_TYPE=release .. -DONNXRUNTIME_DIR=/media/wmx/soft1/software/onnxruntime/onnxruntime-linux-x64-1.14.0  -DFFMPEG_DIR=/media/wmx/ws1/ffmpeg-n6.0
make -j 12

生成在 onnxruntime/build/bin/ 路径下:

5切换到websocket 工程:

#cd FunASR/runtime/websocket
mkdir build && cd build
cmake  -DCMAKE_BUILD_TYPE=release .. -DONNXRUNTIME_DIR=/media/wmx/soft1/software/onnxruntime/onnxruntime-linux-x64-1.14.0 -DFFMPEG_DIR=/media/wmx/ws1/ffmpeg-n6.0
make -j 12

生成在路径下 FunASR/runtime/websocket/build/bin/

6手动下载模型

因为自动下载模型需要 FunASR 的python 环境和相关依赖,这里是runtime ,没有安装这些,所以手动下载
modelscope : https://www.modelscope.cn/models
直接搜索模型名称,然后下载,我放在modelscope配置的路径下 /media/wmx/soft1/huggingface_cache/hub
模型名称:

iic/speech_fsmn_vad_zh-cn-16k-common-onnx 
iic/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch  
iic/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx
iic/punc_ct-transformer_cn-en-common-vocab471067-large-onnx 
iic/speech_ngram_lm_zh-cn-ai-wesp-fst 
thuduj12/fst_itn_zh 

修改 FunASR/runtime/run_server.sh
指定模型路径,其中 gpu 、cpu 推理 2选1

download_model_dir="/media/wmx/soft1/huggingface_cache/hub"# 这是 gpu 推理
model_dir="iic/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch" # 这是 cpu 推理
#model_dir="iic/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx"  vad_dir="iic/speech_fsmn_vad_zh-cn-16k-common-onnx"
punc_dir="iic/punc_ct-transformer_cn-en-common-vocab471067-large-onnx"
itn_dir="thuduj12/fst_itn_zh"
lm_dir="iic/speech_ngram_lm_zh-cn-ai-wesp-fst"

7 准备音频文件

 #cd FunASR/runtime/
wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav

8 运行server

 #cd FunASR/runtime/./run_server.sh 

9 运行client

#cd FunASR/runtime/
./websocket/build/bin/funasr-wss-client --server-ip 127.0.0.1 --port 10095 --wav-path ./asr_example_zh.wav

输出:

(base) wmx@wmx-ubuntu:/media/wmx/soft1/AI-model/FunASR/runtime$  ./websocket/build/bin/funasr-wss-client --server-ip 127.0.0.1 --port 10095 --wav-path /media/wmx/ws3/AI/data/audios/zh/asr_example.wavI20240912 23:57:06.561726 80170 funasr-wss-client.cpp:315] Thread: 127658211935744, sended data len=177572
I20240912 23:57:06.768560 80172 funasr-wss-client.cpp:101] Thread: 127658190964224, total_recv=1, on_message = {"is_final":false,"mode":"offline","stamp_sents":[{"end":5195,"punc":"。","start":880,"text_seg":"欢 迎 大 家 来 体 验 达 摩 院 推 出 的 语 音 识 别 模 型","ts_list":[[880,1120],[1120,1380],[1380,1540],[1540,1780],[1780,2020],[2020,2180],[2180,2480],[2480,2600],[2600,2780],[2780,3040],[3040,3240],[3240,3480],[3480,3699],[3699,3900],[3900,4180],[4180,4420],[4420,4620],[4620,4780],[4780,5195]]}],"text":"欢迎大家来体验达摩院推出的语音识别模型。","timestamp":"[[880,1120],[1120,1380],[1380,1540],[1540,1780],[1780,2020],[2020,2180],[2180,2480],[2480,2600],[2600,2780],[2780,3040],[3040,3240],[3240,3480],[3480,3699],[3699,3900],[3900,4180],[4180,4420],[4420,4620],[4620,4780],[4780,5195]]","wav_name":"wav_default_id"}
I20240912 23:57:06.768589 80172 funasr-wss-client.cpp:106] Thread: 127658190964224, close client thread

on_message 返回的就是 json :

{"is_final":false,"mode":"offline","stamp_sents":[{"end":5195,"punc":"。","start":880,"text_seg":"欢 迎 大 家 来 体 验 达 摩 院 推 出 的 语 音 识 别 模 型","ts_list":[[880,1120],[1120,1380],[1380,1540],[1540,1780],[1780,2020],[2020,2180],[2180,2480],[2480,2600],[2600,2780],[2780,3040],[3040,3240],[3240,3480],[3480,3699],[3699,3900],[3900,4180],[4180,4420],[4420,4620],[4620,4780],[4780,5195]]}],"text":"欢迎大家来体验达摩院推出的语音识别模型。","timestamp":"[[880,1120],[1120,1380],[1380,1540],[1540,1780],[1780,2020],[2020,2180],[2180,2480],[2480,2600],[2600,2780],[2780,3040],[3040,3240],[3240,3480],[3480,3699],[3699,3900],[3900,4180],[4180,4420],[4420,4620],[4620,4780],[4780,5195]]","wav_name":"wav_default_id"}

提取其中的 text 字段的值,就是解码结果 "欢迎大家来体验达摩院推出的语音识别模型。"

相关文章:

阿里达摩院:FunASR - onnxruntime 部署

阿里达摩院:FunASR - onnxruntime 部署 git clone https://github.com/alibaba/FunASR.git 切换到 onnxruntime cd FunASR/runtime/onnxruntime1下载 onnxruntime wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/dep_libs/onnxruntime-linux-x64-1.14.0.t…...

SpringMvc注解

SpringMvc注解 1 SpringMcv基础环境搭建 注&#xff1a;如果已经有SpringMvc项目直接跳过这个就可以了 1 新建项目 2.修改文件为packaging 为war包 <packaging>war</packaging> <?xml version"1.0" encoding"UTF-8"?> <pr…...

队列的基本概念及顺序实现

队列的基本概念 队列的定义 ​ 队列(Queue)简称队&#xff0c;也是一宗操作受限的线性表&#xff0c;只允许在表的一段进行插入&#xff0c;而在表的另一端进行删除。向队列中插入元素成为入队或进队&#xff1b;删除元素成为出队或离队。 ​ 特性&#xff1a;先进先出 (Fir…...

Leetcode 最长连续序列

算法流程&#xff1a; 哈希集合去重&#xff1a; 通过将数组中的所有元素放入 unordered_set&#xff0c;自动去除重复元素。集合的查找操作是 O(1)&#xff0c;这为后续的快速查找提供了保证。 遍历数组&#xff1a; 遍历数组中的每一个元素。对于每个元素&#xff0c;首先检…...

linux网络编程——UDP编程

写在前边 本文是B站up主韦东山的4_8-3.UDP编程示例_哔哩哔哩_bilibili视频的笔记&#xff0c;其中有些部分博主也没有理解&#xff0c;希望各位辩证的看。 UDP协议简介 UDP 是一个简单的面向数据报的运输层协议&#xff0c;在网络中用于处理数据包&#xff0c;是一种无连接的…...

第四部分:1---文件内核对象,文件描述符,输出重定向

目录 struct file内核对象&#xff1a; 如何读写文件&#xff1f; 文件描述符在文件描述符表中的分配规则&#xff1a; 输出重定向初步解析&#xff1a; dup2实现复制文件描述符&#xff1a; struct file内核对象&#xff1a; struct file 是在内核空间中创建的用于描述文…...

如何在开发与生产环境中应用 Flask 进行数据库管理:以 SQLAlchemy 和 Flask-Migrate 为例

在使用 Flask 进行开发时&#xff0c;数据库管理是一个至关重要的环节。借助 SQLAlchemy 作为 ORM&#xff08;对象关系映射&#xff09;工具和 Flask-Migrate 进行数据库迁移&#xff0c;开发者可以高效地进行数据库管理&#xff0c;并在不同的环境&#xff08;如开发环境和生…...

【Java零基础】Java核心知识点之:Map

HashMap(数组链表红黑树) HashMap 根据键的 hashCode 值存储数据&#xff0c;大多数情况下可以直接定位到它的值&#xff0c;因而具有很快的访问速度&#xff0c;但遍历顺序却是不确定的。 HashMap 最多只允许一条记录的键为 null&#xff0c;允许多条记录的值为 null。HashMa…...

9.12日常记录

1.extern关键字 1&#xff09;诞生动机:在一个C语言项目中&#xff0c;需要再多个文件中使用同一全局变量或是函数&#xff0c;那么就需要在这些文件中再声明一遍 2&#xff09;用于声明在其他地方定义的一个变量或是函数&#xff0c;在当前位置只是声明&#xff0c;告诉编译器…...

光纤的两种模式

光纤主要分为两种模式&#xff1a;‌‌单模光纤&#xff08;Single-Mode Fiber, SMF&#xff09;‌和‌‌多模光纤&#xff08;Multi-Mode Fiber, MMF&#xff09;‌。这两种光纤在传输特性、应用场景以及传输距离上存在显著差异。‌12 单模光纤 ‌定义‌&#xff1a;单模光纤…...

SpringMVC的初理解

1. SpringMVC是对表述层&#xff08;Controller&#xff09;解决方案 主要是 1.简化前端参数接收( 形参列表 ) 2.简化后端数据响应(返回值) 1.数据的接受 1.路径的匹配 使用RequestMapping(可以在类上或在方法上)&#xff0c;支持模糊查询&#xff0c;在内部有method附带…...

Python 基本库用法:数学建模

文章目录 前言数据预处理——sklearn.preprocessing数据标准化数据归一化另一种数据预处理数据二值化异常值处理 numpy 相关用法跳过 nan 值的方法——nansum和nanmean展开多维数组&#xff08;变成类似list列表的形状&#xff09;重复一个数组——np.tile 分组聚集——pandas.…...

Android Greendao的数据库复制到设备指定位置

方法如下&#xff1a; private void export() {// 确保您已经请求并获得了WRITE_EXTERNAL_STORAGE权限// 获取要储存的设备路径String picturesDirPath Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();// 在公共目录下创建…...

Ajax 揭秘:异步 Web 交互的艺术

Ajax 揭秘&#xff1a;异步 Web 交互的艺术 一 . Ajax 的概述1.1 什么是 Ajax ?1.2 同步和异步的区别1.3 Ajax 的应用场景1.3.1 注册表单的用户名异步校验1.3.2 内容自动补全 二 . Ajax 的交互模型和传统交互模型的区别三 . Ajax 异步请求 axios3.1 axios 介绍3.1.1 使用步骤3…...

TitleBar:打造高效Android标题栏的新选择

在Android应用开发中&#xff0c;标题栏是用户界面的重要组成部分。一个好的标题栏不仅能够提升应用的专业感&#xff0c;还能增强用户体验。然而&#xff0c;传统的标题栏实现方式往往存在代码冗余、样式不统一、性能开销大等问题。今天&#xff0c;我们将介绍一个名为TitleBa…...

Lua协同程序Coroutine

Lua 协同程序(Coroutine) 定义 Lua 协同程序(Coroutine)与线程类似&#xff1a;拥有独立的堆栈、局部变量、指令指针&#xff0c;同时又与其它协同程序共享全局变量和其它大部分东西。 协同程序可以理解为一种特殊的线程&#xff0c;可以暂停和恢复其执行&#xff0c;从而允…...

【vue+帆软】帆软升级,从版本9升级到版本11,记录升级过程

帆软要升级&#xff0c;记录下过程 1、帆软官网地址必不可少&#xff0c;戳这里&#xff0c;跳转帆软官网 点击前端开发指南 点击JS API 跳转过来就是版本11 一直往下翻&#xff0c;在最底部有个2.2 在Web中使用&#xff0c;圈起来的就是要引入到index.html中的脚本 在项…...

linux从0到1 基础完整知识

1. Linux系统概述 Linux是一种开源操作系统&#xff0c;与Windows或macOS等操作系统不同&#xff0c;Linux允许用户自由地查看、修改和分发其源代码。以下是Linux系统的一些显著的优势。 稳定性和可靠性&#xff1a; 内核以其稳定性而闻名&#xff0c;能够持续运行数月甚至数…...

“人大金仓”正式更名为“电科金仓”; TDSQL-C支持回收站/并行DDL等功能; BigQuery支持直接查询AlloyDB

重要更新 1. “人大金仓”正式更名为“电科金仓”&#xff0c;完整名称“中电科金仓&#xff08;北京&#xff09;科技股份有限公司”&#xff0c;突出金仓是中国电子科技集团有限公司在基础软件领域产品( [1] ) 。据悉人大金仓在上半年营收入为9056万元&#xff0c;净利润约21…...

大模型微调 - 用PEFT来配置和应用 LoRA 微调

大模型微调 - 用PEFT来配置和应用 LoRA 微调 flyfish PEFT&#xff08;Parameter-Efficient Fine-Tuning&#xff09;是一种参数高效微调库&#xff0c;旨在减少微调大型预训练模型时需要更新的参数量&#xff0c;而不影响最终模型的性能。它支持几种不同的微调方法&#xff…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...