|
引用说明:FSMN-VAD引用魔塔社区项目:https://modelscope.cn/models/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch/summary感谢阿里大佬的开源与介绍。 这篇文章主要介绍两种的ASR中的VAD开源模型,第一种就是FSMN-VAD,这个是达摩院语音团队提出的高效语音端点检测模型,用于检测输入音频中有效语音的起止时间点信息。它使用了一种称为FiniteStateMachineNetworks(FSMN)的神经网络结构,该结构能够有效地建模长期依赖关系。FSMN-VAD将输入的音频信号转换为时频表示,并通过FSMN网络对时频特征进行建模和分类,以决定每一帧是否包含有声音。该算法还利用了前后文语境信息,以提高语音活动检测的准确性。 Silero-VAD是另一种用于语音活动检测的算法,它是由SileroAI团队开发的。该算法是基于深度学习的,使用了一种称为VGGish的卷积神经网络结构。Silero-VAD首先将输入的音频信号转换为时频表示,并将其作为输入提供给VGGish网络,以进行特征提取和分类。通过训练大量的语音数据,Silero-VAD能够准确地识别出声音活动的存在与否。 FSMN-VAD和Silero-VAD都是用于语音活动检测的先进算法,它们在准确性和效率方面都取得了很好的表现。这些算法在语音识别、音频分类和语音分割等领域都有广泛的应用潜力。这篇文章主要简单介绍FSMN-VAD和Silero-VAD与这两个算法使用。因为这是我的学习记录,所以欢迎各位大佬指正,出现错误可以评论或者私信。FSMN-VAD的地址:https://github.com/modelscope/FunASRSilero-VAD的地址:https://github.com/snakers4/silero-vad FSMN-MonophoneVAD是达摩院语音团队提出的高效语音端点检测模型,用于检测输入音频中有效语音的起止时间点信息,并将检测出来的有效音频片段输入识别引擎进行识别,减少无效语音带来的识别错误。 模型结构层面,FSMN模型结构建模时可考虑上下文信息,训练和推理速度快,且时延可控;同时根据VAD模型size以及低时延的要求,对FSMN的网络结构、右看帧数进行了适配。在建模单元层面,speech信息比较丰富,仅用单类来表征学习能力有限,将单一speech类升级为Monophone。建模单元细分,可以避免参数平均,抽象学习能力增强,区分性更好。FSMN-MonophoneVAD模型结构如下图所示。其中带跳跃连接的深度FSMN(DFSMN)示意图:参考自:https://arxiv.org/abs/1803.05030 DFSMN在标准cFSMN的内存块之间增加了一些跳跃连接,使底层内存块的输出可以定向流到更高层的内存块。在反向传播过程中,高层的梯度也可以直接分配给低层,这有助于克服梯度消失问题。DFSMN中内存块的表述形式如下:采用跳跃连接主要是因为对于一个语音信号,由于重叠,相邻帧的信息具有很强的冗余性。与波网中的扩展卷积层类似,在内存块中加入跨步因子,以消除这种冗余。用Python使用FSMN-VAD进行推理,使用阿里的提供的unasr模块进行推理:fromfunasrimportAutoModelmodel=AutoModel(model="fsmn-vad",model_revision="v2.0.4")wav_file=f"/user/your_wav_path/example.wav"res=model.generate(input=wav_file)print(res)没有安装funasr模块的小伙伴可以去https://github.com/modelscope/FunASR这里进行安装。也可以用modelscope进行推理:frommodelscope.pipelinesimportpipelinefrommodelscope.utils.constantimportTasksinference_pipeline=pipeline(task=Tasks.voice_activity_detection,model='iic/speech_fsmn_vad_zh-cn-16k-common-pytorch',model_revision="v2.0.4",)segments_result=inference_pipeline(input='/user/your_wav_path/example.wav')print(segments_result)输出结果单位为ms。SileroVAD 是预训练的企业级语音端点检测模型,一个音频块(30+毫秒) 在单个CPU线程上处理的时间不到 1毫秒。使用批处理或GPU也可以显著提高性能。在某些情况下,ONNX的运行速度甚至可以提高4-5倍。SileroVAD在包含 6000 多种语言的庞大语料库上进行了训练,它在具有不同背景噪音和质量水平的不同领域的音频上表现良好,且SileroVAD 支持 8000Hz 和 16000Hz采样率。importtorchtorch.set_num_threads(1)model,utils=torch.hub.load(repo_or_dir='snakers4/silero-vad',model='silero_vad')(get_speech_timestamps,_,read_audio,_,_)=utilswav=read_audio('/user/your_wav_path/example.wav')speech_timestamps=get_speech_timestamps(wav,model)fs=16000#转换单位为msforsegmentinspeech_timestamps:segment['start_ms']=int((segment['start']/fs)*1000)segment['end_ms']=int((segment['end']/fs)*1000)forsegmentinspeech_timestamps:print(f"[{segment['start_ms']},{segment['end_ms']}],")感兴趣的小伙伴可以尝试一下这两个在ASR中的VAD模型,个人觉得最终的效果还是FSMN-VAD的效果更好。FSMN-VAD和Silero-VAD都是用于语音活动检测的方法,它们能够自动检测语音和非语音部分,并在不同的环境和场景中都表现出良好的性能。这些技术的发展使得我们能够更好地处理语音信号,为语音识别、语音合成等应用提供了更准确和鲁棒的输入。引文:@inproceedings{gao2023funasr,author={ZhifuGaoandZeruiLiandJiamingWangandHaonengLuoandXianShiandMengzheChenandYabinLiandLingyunZuoandZhihaoDuandZhangyuXiaoandShiliangZhang},title={FunASR:AFundamentalEnd-to-EndSpeechRecognitionToolkit},year={2023},booktitle={INTERSPEECH},}@inproceedings{An2023bat,author={KeyuAnandXianShiandShiliangZhang},title={BAT:Boundaryawaretransducerformemory-efficientandlow-latencyASR},year={2023},booktitle={INTERSPEECH},}@inproceedings{gao22b_interspeech,author={ZhifuGaoandShiLiangZhangandIanMcLoughlinandZhijieYan},title={Paraformer:FastandAccurateParallelTransformerforNon-autoregressiveEnd-to-EndSpeechRecognition},year=2022,booktitle={Proc.Interspeech2022},pages={2063--2067},doi={10.21437/Interspeech.2022-9996}}@inproceedings{shi2023seaco,author={XianShiandYexinYangandZeruiLiandYanniChenandZhifuGaoandShiliangZhang},title={SeACo-Paraformer:ANon-AutoregressiveASRSystemwithFlexibleandEffectiveHotwordCustomizationAbility},year={2023},booktitle={ICASSP2024}}@misc{SileroVAD,author={SileroTeam},title={SileroVAD:pre-trainedenterprise-gradeVoiceActivityDetector(VAD),NumberDetectorandLanguageClassifier},year={2021},publisher={GitHub},journal={GitHubrepository},howpublished={\url{https://github.com/snakers4/silero-vad}},commit={insert_some_commit_here},email={hello@silero.ai}}
|
|