首页
读书
网课
《人工智能》目录


正文

git地址:https://gitee.com/Tele-AI/TeleSpeech-ASR 


星辰超多方言语音识别大模型v1.0,由30万小时无标注多方言语音数据进行预训练,并利用内部30种有标注数据进行微调,打破单一模型只能识别特定单一方言的困境,可支持理解粤语、上海话、四川话、温州话等30种方言

本次开源三个模型:两个30万小时无标注语音预训练模型和一个KeSpeech数据集8种方言微调模型。发布版本和下载链接见下表

模型版本参数量下载链接字典备注
pretrain_base0.09 BTeleSpeech-ASR1.0-base30万小时无标注语音预训练模型
pretrain_large0.3 BTeleSpeech-ASR1.0-large30万小时无标注语音预训练模型
finetune_large_kespeech0.3 BTeleSpeech-ASR1.0-large-kespeechdict.char7531.txt基于pretrain_large,采用KeSpeech数据集8种方言微调训练
  • finetune模型为已经在特定数据集微调过的模型,可直接使用

  • pretrain模型为无监督预训练模型,无法直接进行ASR任务,需要用少量标注数据进行有监督训练后使用。相比于直接训练的方言识别模型,基于预训练模型可以利用更少的有标注数据获得更好的方言识别性能。我们提供了两种有监督训练框架,用于下游ASR任务:1) 基于fairseq的预训练模型微调; 2) 基于wenet的表征提取(特征提取器)训练下游ASR模型

环境配置

  • PyTorch version >= 1.13.0

  • Python version >= 3.8

  • 数据准备、程序训练需要使用kaldi,请确保已正确安装:https://github.com/kaldi-asr/kaldi

    • 若已有提好的特征,程序运行时可以使用wenet开源框架中kaldi_io.py实现的方法替换kaldiio.load_mat,从而无需安装kaldi

  • 安装fairseq及其依赖

$ git clone https://github.com/pytorch/fairseq$ cd fairseq$ pip install --editable ./
  • 安装fairseq额外依赖以及wenet表征训练任务运行所需依赖

$ pip install -r requirements.txt
  • 若只需要fairseq进行微调、解码,可以不安装完整的requirements.txt,只需保证kaldiio, timm, editdistance, soundfile已正确安装

$ pip install kaldiio timm editdistance soundfile

数据准备

特征提取

  • 模型输入为从16K采样率音频中提取的40维mfcc特征,非原始音频

  • 利用kaldi提取40维mfcc特征,运行脚本参考prepare_kaldi_feats.sh

    • 可将运行脚本prepare_kaldi_feats.sh与参数设置mfcc_hires.conf置于kaldi任一egs目录下(与cmd.sh等脚本平级,例如/path/to/kaldi/egs/aishell/s5/prepare_kaldi_feats.sh),运行prepare_kaldi_feats.sh即可

  • 为各数据集准备训练用文件data.list,可参考make_datalist.py,以\t分隔:

$ cat train/data.listutt:X0000000000_100638174_S00037	feat:/data/raw_nnaudio.test.1.ark:2983479385	feat_shape:363,40	text:不惜在这种试验中毁灭包括自己在内的一切	token:不 惜 在 这 种 试 验 中 毁 灭 包 括 自 己 在 内 的 一 切	tokenid:[TOKENID]	token_shape:19,5537utt:X0000000001_100849618_S00006	feat:/data/raw_nnaudio.test.1.ark:2984296665	feat_shape:345,40	text:在他们收到足够建立大统一模型的数据后	token:在 他 们 收 到 足 够 建 立 大 统 一 模 型 的 数 据 后	tokenid:[TOKENID]	token_shape:18,5537...

字典准备

  • 微调阶段,需要准备fairseq格式的 dict.${label}.txt${label}为建模单元类型,如ltr, bpe等。以dict.ltr.txt为例:

是 2好 3...
  • 预训练模型表征训练ASR任务阶段,需要准备wenet格式的lang_char.txt,相比于dict.${label}.txt额外添加<blank><unk><sos/eos>3个token,例如

<blank> 0<unk> 1是 2好 3...<sos/eos> 5536

微调模型推理流程示例*

  1. fairseq环境准备,修改data2vec_dialect/path.sh文件中/path/to/fairseq为fairseq安装路径

  2. 利用kaldi提取音频特征,并保存为以 .tsv 结尾的文件,格式参考特征提取

  3. 进入data2vec_dialect目录,并修改run_scripts/decode.sh文件,参考推理与解码阶段

  4. 在data2vec_dialect路径下,执行run_scripts/decode.sh

*仅经过微调后的finetune模型支持直接推理,无监督预训练模型pretrain_basepretrain_large需要先在标注数据上训练后,再进行推理,详见预训练模型微调表征训练下游任务

预训练模型微调

微调阶段

  • 准备train.tsvdev.tsv,保存于同一训练目录下

    $ ln -s /path/to/train/data.list /path/to/train/train.tsv$ ln -s /path/to/dev/data.list /path/to/train/dev.tsv
  • 进入data2vec_dialect目录,修改path.sh文件中/path/to/fairseq为fairseq安装路径

  • run_scripts/run_d2v_finetune.sh/path/to相关路径替换

  • 修改task.data为 .tsv 文件保存路径,如task.data=/data/wenetspeech/train

  • 在data2vec_dialect路径下,执行

    $ bash run_scripts/run_d2v_finetune.sh

推理与解码阶段

  • 同样修改run_scripts/decode.sh中的模型路径、测试数据路径等

    • dataset.gen_subset为测试数据路径下 .tsv 文件的名称,可配置多个

  • 执行

    $ bash run_scripts/decode.sh

表征训练下游任务

  • 进入wenet_representation路径,修改path.sh文件中fairseqdata2vec_dialectwenet_representation相关路径

  • 连续表征训练与解码:

    • 配置run_d2v.sh中dataset相关内容,执行

      $ bash run_d2v.sh
  • 离散表征训练与解码:

    • 首先根据data.list,准备离散表征对应训练文件data.list.discrete,修改wenet/discrete_token/kmeans_d2v.yamlmodel_diruser_dir,执行

      $ bash wenet/discrete_token/dump_feat.sh
    • 再配置run_discrete.sh中dataset相关内容,执行

      $ bash run_discrete.sh



上一篇: 没有了
下一篇: 没有了
圣贤书院