Something wrong with the VAD algorithm

1、错误原因

调用阿里语音识别模型 paraformer-large-zh 进行多线程推理时出现错误内容如下:

bash 复制代码
warning

Something wrong with the VAD algorithm

或

VAD data_to_pop is bigger than cache["stats"].data_buf .size() !!!

error in calling pop data_buf

代码调用使用funasr库加载,如下:

python 复制代码
from funasr import AutoModel

model = AutoModel(model="paraformer-zh", model_revision="v2.0.4",
                  vad_model="fsmn-vad", vad_model_revision="v2.0.4",
                  punc_model="ct-punc-c", punc_model_revision="v2.0.4"
                  )
res = model.generate(input=f"{model.model_path}/example/asr_example.wav", 
            batch_size_s=300, 
            hotword='魔搭')
print(res)

上述代码使用了语音识别model="paraformer-zh"、端点检测vad_model="fsmn-vad"、标点符号模型punc_model="ct-punc-c",其中,vad和punc是协同使用的,而业务中多线程并发推理时出现了错误:Something wrong with the VAD algorithm,主要是vad算法的错误,最后通过多线程模拟发现语音识别过程中,vad模型无法并发调用。

2、业界方法

实际上提出该问题的博文较多,如funasr官方github 的issue中均有提及,但没有官方回复,有一位老哥提出了队列方法的解法 。各位可以看看,后面我提出我的解法及启发解法

3、解法

其实本质就是解决语音识别中三个模型不能并发调用的问题,在多线程环境里,我们可以使用线程锁来解决,只需要添加几行代码,就能解决该错误,下面我来举个例子如何添加,首先需要明确一点,多线程访问共享资源时,需要加锁,比如语音识别模型,读写统一文件等等,而我们加锁只需要加在实际语音模型的调用函数中,模型初始化、传参过程不需要加锁,比如你在deal.py文件中使用了语音识别模型asr_model

python 复制代码
# deal.py

def deal(audio_name):
    result = asr_model.generate(input=audio_name,
                                batch_size_s=300,
                                hotword=[])
    result 处理

加锁方式如下:

python 复制代码
# deal.py

import threading
lock = threading.Lock()

def deal(audio_name):
    with lock:
        result = asr_model.generate(input=audio_name,
                                    batch_size_s=300,
                                    hotword=[])
    result 继续处理

如上方式即可实现多线程并发调用语音识别模型,实现方法简单,可快速实现,在调用代码中添加锁即可。

上述思想也可以理解为队列方式,只不过这个队列我是通过线程锁来实现的,亲测有效,如有问题评论区交流。

相关推荐
打小就很皮...12 小时前
使用 React 实现语音识别并转换功能
人工智能·语音识别
会游泳的石头1 天前
在Java项目中实现本地语音识别与热点检测,并集成阿里云智能语音服务(优化版)
阿里云·语音识别·xcode
Hello server3 天前
利用 Python pyttsx3实现文字转语音(TTS)
python·学习·语音识别
limingade3 天前
手机打电话时由对方DTMF响应切换多级IVR语音应答(一)
人工智能·语音识别·手机实现来电ivr导航·多级ivr语音导航
create174 天前
使用 AI 如何高效解析视频内容?生成思维导图或分时段概括总结
人工智能·aigc·语音识别·ai写作
limingade5 天前
手机SIM卡打电话时识别对方按下的DTMF按键(二)
智能手机·语音识别·dtmf识别·dtmf解码器·sim卡通话识别dtmf·手机通话识别dtmf·手机通话语音拦截
xu_wenming6 天前
嵌入式MCU语音识别算法及实现方案
单片机·算法·语音识别
瑶光守护者7 天前
【学习笔记】深度学习:典型应用
人工智能·笔记·深度学习·学习·计算机视觉·语音识别
打小就很皮...9 天前
前端 AI 开发实战:基于自定义工具类的大语言模型与语音识别调用指南
人工智能·语言模型·语音识别
会游泳的石头9 天前
在Java项目中实现本地语音识别与热点检测,并集成阿里云智能语音服务
java·阿里云·语音识别