基于长上下文偏置的音视频识别模型

我要开发同款
匿名用户2024年07月31日
59阅读

技术信息

开源地址
https://modelscope.cn/models/iic/LCB-NET
授权协议
Apache License 2.0

作品详情

LCB-NET模型介绍

模型原理介绍

随着在线会议和课程越来越普遍,如何利用视频幻灯片中丰富的文本信息来改善语音识别(Automatic&bsp; Speech Recogitio, ASR)面临着新的挑战。视频中的幻灯片与语音实时同步,相比于统一的稀有词列表,能够提供更长的上下文相关信息。因此,我们提出了一种创新的长上下文偏置网络(LCB-et),用于音频-视觉语音识别(Audio-Visual Speech Recogitio,AVSR),以更好地利用视频中的长时上下文信息。

AVSR整体流程框架

LCB-NET模型结构

具体来说,我们首先使用OCR技术来检测和识别幻灯片中的文本内容,其次我们采用关键词提取技术来获取文本内容中的关键词短语。最后,我们将关键词拼接成长上下文文本和音频同时输入到我们的LCB-et模型中进行识别。而LCB-et模型采用了双编码器结构,同时建模音频和长上下文文本信息。此外,我们还引入了一个显式的偏置词预测模块,通过使用二元交叉熵(BCE)损失函数显式预测长上下文文本中在音频中出现的关键偏置词。此外,为增强LCB-et的泛化能力和稳健性,我们还采用了动态的关键词模拟策略。实验证明,我们提出的LCB-et热词模型,不仅能够提升关键词的识别效果,同时也能够提升非关键词的识别效果。具体实验结果如下所示:

实验结果

更详细的细节见:

基于ModelScope进行推理

  • 推理支持音频格式如下:
  • wav文件路径,例如:data/test/asr_example.wav
  • pcm文件路径,例如:data/test/asr_example.pcm
  • ark文件路径,例如:data/test/data.ark
  • wav文件url,例如:https://www.modelscope.c/api/v1/models/iic/LCB-NET/repo?Revisio=master&FilePath=example/asr_example.wav
  • wav二进制数据,格式bytes,例如:用户直接从文件里读出bytes数据或者是麦克风录出bytes数据。
  • 已解析的audio音频,例如:audio, rate = soudfile.read("asrexamplezh.wav"),类型为umpy.darray或者torch.Tesor。
  • wav.scp文件,需符合如下要求(以下分别为soud和kaldi_ark格式):
cat wav.scp
asr_example1  data/test/asr_example1.wav
asr_example2  data/test/asr_example2.wav

cat wav.scp
asr_example1  data/test/data_wav.ark:22
asr_example2  data/test/data_wav.ark:90445
...
  • 推理支持OCR预测文本格式如下:
  • ocr.txt文件,需符合如下要求:
cat ocr.txt
asr_example1  ANIMAL <blak> RIGHTS <blak> MANAGER <blak> PLOEG
asr_example2  UNIVERSITY <blak> CAMPUS <blak> DEANO
...
  • 若输入格式wav文件和ocr文件均为url,api调用方式可参考如下范例:
from modelscope.pipelies import pipelie
from modelscope.utils.costat import Tasks

iferece_pipelie = pipelie(
    task=Tasks.auto_speech_recogitio,
    model="iic/LCB-NET",
    model_revisio="v1.0.0")

rec_result = iferece_pipelie(iput=("https://www.modelscope.c/api/v1/models/iic/LCB-NET/repo?Revisio=master&FilePath=example/asr_example.wav","https://www.modelscope.c/api/v1/models/iic/LCB-NET/repo?Revisio=master&FilePath=example/ocr.txt"),data_type=("soud", "text"))
prit(rec_result)
from fuasr import AutoModel

model = AutoModel(model="iic/LCB-NET",
                  model_revisio="v1.0.0")

rec_result = iferece_pipelie(iput=("https://www.modelscope.c/api/v1/models/iic/LCB-NET/repo?Revisio=master&FilePath=example/asr_example.wav","https://www.modelscope.c/api/v1/models/iic/LCB-NET/repo?Revisio=master&FilePath=example/ocr.txt"),data_type=("soud", "text"))

复现论文中的结果

pytho -m fuasr.bi.iferece \
        --cofig-path=${file_dir} \
        --cofig-ame="cofig.yaml" \
        ++iit_param=${file_dir}/model.pt \
        ++tokeizer_cof.toke_list=${file_dir}/tokes.txt \
        ++iput=[${_logdir}/wav.scp,${_logdir}/ocr.txt] \
        +data_type='["kaldi_ark", "text"]' \
        ++tokeizer_cof.bpemodel=${file_dir}/bpe.pt \
        ++output_dir="${iferece_dir}/results" \
        ++device="${iferece_device}" \
        ++cpu=1 \
        ++disable_log=true

识别结果输出路径结构如下:

tree output_dir/
output_dir/
└── 1best_recog
    ├── text
    └── toke

toke:语音识别结果文件

可以使用fuasr里面提供的rubwerrecall.sh计算WER、BWER、UWER和Recall。

详细脚本可以参考fuasr里面的demo.sh脚本,需要注意的是你需要修改一下iic/LCB-NET/dev/wav.scp里面ark的路径,修改为你自己本地的路径,然后跑解码。

相关论文以及引用信息

@iproceedigs{yu2024lcbet,
  title={LCB-et: Log-Cotext Biasig for Audio-Visual Speech Recogitio},
  author={Fa Yu, Haoxu Wag, Xia Shi, Shiliag Zhag},
  booktitle={ICASSP},
  year={2024}
}

功能介绍

LCB-NET模型介绍 模型原理介绍 随着在线会议和课程越来越普遍,如何利用视频幻灯片中丰富的文本信息来改善语音识别(Automatic  Speech Recognition, ASR)面临着新的挑

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论