Funsound语音识别技术之 语音识别多路并发转写

news2025/1/4 16:24:18

免费语音识别转写(优于讯飞):www.funsound.cn
Funsound语音识别工具包:https://github.com/pika-online/Funsound/tree/main

1. 前言

本文主要介绍一种简单的多路语音识别转写部署方案,基于多线程开发实现后台同时转写多个音频文件,这里给出简易实现思路,具体构建服务端/客户端 离线语音转写请参考Funsound工具包代码,本文以部署多个whisper语音转写引擎为例

2. 思路

  1. 初始化 K个 语音识别引擎
  2. 为每个引擎分配一个worker(线程),构建线程组workers
  3. 向workers提交待转写音频,workers会自动调度,将任务分配给最闲的worker进行转写,返回task_id
  4. 对每个音频根据task_id 轮询进度,直至完成。

3. 流程

3.1 初始化ASR引擎

from funsound.whisper.asr import ASR 

def init_engine():
    engine = ASR(model_id='funasr_models/keepitsimple/faster-whisper-large-v3',
                cfg_file='conf/whisper.yaml',
                log_file=f'log/whisper-{id}.log')
    engine.init_state(id)
    return engine

3.2 定义worker

from funsound.common.executor import Worker
def processor(self,params):
    audio_file = params[0]
    result = self.engine.inference(audio_file)
    return result

Worker.processor = processor

3.3 初始化多路待命引擎

nj = 5 # 开启5路
workers = []
for id in range(nj):
    engine = init_engine(id)
    worker = Worker(wid=id,log_file=f'log/worker-{id}.log')
    worker.load_engine(engine=engine)
    workers.append(worker)
launch(workers)

3.4 提交音频转写任务

audio_file = "funsound/examples/test1.wav"
task_id = submit_task(workers,params=[audio_file])

音频会分配给最闲的worker处理

3.5 轮询进度直至转写完成

while 1:
        prgs = get_task_progress(task_id)
        print(prgs)
        if prgs['status'] in ["SUCCESS","FAIL"]:
            break
        time.sleep(1)

获取识别结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2061628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

總結熱力學_2

個人近況 在考慮廷畢的選課情況&#xff0c;以及更改教資的科目三&#xff1a;比如由物理改為音樂 在看<<怪談直播間>>&#xff0c;顧毅的第五關太長了... <<詭舍>>不知道&#xff0c;三下鄉完了就没看了 參考: 陈曦<<热力学讲义>>ht…

甄选范文“论软件体系结构的演化”软考高级论文,系统架构设计师论文

论文真题 软件体系结构的演化是在构件开发过程中或软件开发完毕投入运行后,由于用户需求发生变化,就必须相应地修改原有软件体系结构,以满足新的变化了的软件需求的过程。体系结构的演化是一个复杂的、难以管理的问题。 请围绕“论软件体系结构的演化”论题,依次从以下三…

Array List集合的基本使用

数组&#xff1a;长度固定 集合&#xff1a;自动扩容 数组&#xff1a;可以存基本数据类型&#xff0c;可以存引用数据类型 集合&#xff1a;可以存引用数据类型&#xff0c;不可以存基本数据类型&#xff08;要换成对应的包装类&#xff09; package ArrayListDemo;import j…

Java | Leetcode Java题解之第363题矩形区域不超过K的最大数值和

题目&#xff1a; 题解&#xff1a; class Solution {public int maxSumSubmatrix(int[][] matrix, int k) {int ans Integer.MIN_VALUE;int m matrix.length, n matrix[0].length;for (int i 0; i < m; i) { // 枚举上边界int[] sum new int[n];for (int j i; j <…

最新动态鲨鱼导航网引导页html源码

源码介绍 最新动态鲨鱼导航网引导页html源码 源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 https://download.csdn.net/download/h…

算法小白刷力扣 3 - 回文数

题目描述 原题链接&#xff1a;https://leetcode.cn/problems/palindrome-number/description/ 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&a…

【功能自动化】使用Excel文档获取参数数据

环境搭建&#xff1a; 1.需要配置WebTours网站 2.安装pandas pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python_dateutil…

EasyExcel 导入计算公式导出展示字符串问题(SUM)

导出自定义表单 结果遇到 SUM函数 时 没有算出结果&#xff0c;直接展示的函数字符串 处理思路 拦截公式字符串 &#xff1a; 将对应的cell 设置 setCellFormula 字符串公式 然后cell类型设置为 CellType.FORMULA 重新配置 这样就解决了问题。 注意先设置CellFormula 然…

物品租赁管理系统-押金预授权-原路退回系统-SAAS本地化及未来之窗行业应用跨平台架构

一、物品租赁管理必要性 经济角度 1. 降低成本 - 对于租赁方而言&#xff0c;无需一次性投入大量资金购买物品。比如&#xff0c;企业在项目初期&#xff0c;如果购买昂贵的设备&#xff0c;会占用大量流动资金&#xff0c;增加财务风险。而通过租赁&#xff0c;可以将固…

从0开始搭建一个SpringBoot项目(从环境配置到运行项目)

文章目录 环境配置JAVA环境配置MySQL数据库配置IDEA安装Navicat 15安装Maven配置 SpringBoot项目创建 环境配置 JAVA环境配置 JDK8下载&#xff1a; 官网下载CSDN下载网盘 安装JDK&#xff0c;一直下一步即可&#xff0c;注意安装的位置&#xff1a; 3. 配置环境变量 &…

R语言统计分析——回归中的异常观测值

参考资料&#xff1a;R语言实战【第2版】 一个全面的回归分析要覆盖对异常值的分析&#xff0c;包括离群点、高杠杆点和强影响点。这些数据点需要更深入的研究&#xff0c;因为它们在一定程度上与其他观点不同&#xff0c;可能对结果产生较大的负面影响。 1、离群点 离群点是指…

【MySQL 10】表的内外连接 (带思维导图)

文章目录 &#x1f308; 一、内连接⭐ 0. 准备工作⭐ 1. 隐式内连接⭐ 2. 显式内连接 &#x1f308; 二、外连接⭐ 0. 准备工作⭐ 1. 左外连接⭐ 2. 右外连接 &#x1f308; 一、内连接 内连接实际上就是利用 where 子句对两张表形成的笛卡儿积进行筛选&#xff0c;之前所有的…

git错误fatal: Unpack error, check server log

git错误fatal: Unpack error, check server log fatal: Unpack error, check server log error: remote unpack failed: error Missing tree xxxxxxxxxxxxxxxxxx 先执行 git fetch 命令&#xff0c;再push。 git拉取远程所有分支/添加远程仓库_git pull所有分支代码-CSDN博客…

SQL基础——MySQL的触发器、存储引擎、事务

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 一、MySQL的触发器 1.概述 介绍 触发器&#xff0c;就是一种特殊的存储过程。触发器和存储过程一样是一个能够完成特定功能、存储在数据库服务器上的SQL片段&#xff0c;但是触发器无需调用&…

StarRocks 存算分离 Compaction 原理

前言 StarRocks 中每次数据摄入都会生成一个新的数据版本&#xff0c;而查询时需要将所有版本数据进行合并才能获得一个正确的结果&#xff0c;如果历史数据版本太多&#xff0c;那么查询时需要读取的文件数也会很多&#xff0c;造成查询效率低下。因而 StarRocks 存在内部任务…

【电子通识】IPC-A-600中对验收标准的定义

在文章【电子通识】IPC-A-610标准对产品的四种验收条件都是什么意思&#xff1f;中我们讲到IPC-A-610标准&#xff08;电子组件的可接受性&#xff09;对于产品的四种验收条件。本文中我们同理讲一讲IPC-A-600中对验收标准的定义。 IPC-A-600文件中的多数示意图和照片同时表示每…

66 IPV4/6 OSPFV2/3 实操

一 网络括谱图 二 IPV6 一 华为IPV6地址的配置思路 1 全局上开启IPV6功能 # ipv6 # 2 在指定的接口上配置IPV6地址上的接口上配置IPV6地址 ipv6 enable 3 在接口上配置IPV6地址 ipv6 address 2001:1::254/64 脚本 # interface GigabitEthernet0/0/1 ipv6 enable ip add…

怎么快速定位bug?如何编写测试用例?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 作为一名测试人员如果连常见的系统问题都不知道如何分析&#xff0c;频繁将前端人员问题指派给后端人员&#xff0c;后端人员问题指派给前端人员&#xff0c;那么在…

set容器

基本概念 set容器只有键值&#xff0c;插入容器的时候自动根据键值排序&#xff0c;不允许有相同的键值set的迭代器是只读迭代器multiset特性及用法和set完全相同&#xff0c;唯一的差别就是在于他允许键值重复&#xff0c;set和multiset底层实现都是红黑树 常用操作&#xff…

nordic 蓝牙ble ble_hids_inp_rep_send发送数据采用缓存机制 发送失败后 检测到上一个发送完成再重新发前一个发送失败的数据

目录 1. 定义缓存结构 2. 初始化缓存队列 3. 添加数据到缓存队列 4. 发送数据函数 5. 初始化和事件处理 总结 在Nordic Semiconductor的BLE开发中,如果需要实现一种缓存机制来确保数据发送的可靠性,可以通过以下步骤实现: 定义缓存结构:用于存储待发送的数据。发送数据…