Update README.md
Browse files
README.md
CHANGED
|
@@ -1,3 +1,150 @@
|
|
| 1 |
-
---
|
| 2 |
-
license: apache-2.0
|
| 3 |
-
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
---
|
| 4 |
+
|
| 5 |
+
<div align="center">
|
| 6 |
+
<h1>
|
| 7 |
+
星辰语音大模型-超多方言ASR
|
| 8 |
+
</h1>
|
| 9 |
+
</div>
|
| 10 |
+
|
| 11 |
+
星辰超多方言语音识别大模型v1.0,由30w小时无标注多方言语音数据进行训练,打破单一模型只能识别特定单一方言的困境,可支持理解粤语、上海话、四川话、温州话等30多种方言
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
本次发布版本和下载链接见下表
|
| 15 |
+
|
| 16 |
+
| 模型版本 | 参数量 | 下载链接 |
|
| 17 |
+
|---------------------|-------|---------------------|
|
| 18 |
+
| pretrain_base | 0.09 B | [TeleSpeech-ASR1.0-base](https://huggingface.co/Tele-AI/TeleSpeech-ASR1.0/blob/main/base.pt) |
|
| 19 |
+
| pretrain_large | 0.3 B | [TeleSpeech-ASR1.0-large](https://huggingface.co/Tele-AI/TeleSpeech-ASR1.0/blob/main/large.pt) |
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
# 环境配置
|
| 23 |
+
环境依赖
|
| 24 |
+
* PyTorch version >= 1.13.0
|
| 25 |
+
* Python version >= 3.8
|
| 26 |
+
* 数据准备、程序训练需要使用kaldi,请确保已正确安装:https://github.com/kaldi-asr/kaldi
|
| 27 |
+
* 若已有提好的特征,程序运行时可以使用wenet开源框架中kaldi_io.py实现的方法替换kaldiio.load_mat,从而无需安装kaldi
|
| 28 |
+
|
| 29 |
+
## 微调
|
| 30 |
+
|
| 31 |
+
<a id="fairseq安装"></a>
|
| 32 |
+
* 安装fairseq及其依赖
|
| 33 |
+
```shell script
|
| 34 |
+
$ git clone https://github.com/pytorch/fairseq
|
| 35 |
+
$ cd fairseq
|
| 36 |
+
$ pip install --editable ./
|
| 37 |
+
```
|
| 38 |
+
|
| 39 |
+
* 安装kaldiio
|
| 40 |
+
```shell script
|
| 41 |
+
$ pip install kaldiio
|
| 42 |
+
```
|
| 43 |
+
|
| 44 |
+
## 表征训练下游任务
|
| 45 |
+
|
| 46 |
+
* 确保fairseq已正确[安装](#fairseq安装)
|
| 47 |
+
|
| 48 |
+
* 安装表征训练任务运行所需依赖
|
| 49 |
+
```shell script
|
| 50 |
+
$ cd wenet_representation
|
| 51 |
+
$ pip install -r requirements.txt
|
| 52 |
+
```
|
| 53 |
+
|
| 54 |
+
# 数据准备
|
| 55 |
+
## 特征提取
|
| 56 |
+
|
| 57 |
+
* 利用kaldi提取40维mfcc特征,参数设置参考`mfcc_hires.conf`
|
| 58 |
+
* 为各数据集准备训练用文件`data.list`,以`\t`分隔:
|
| 59 |
+
```
|
| 60 |
+
$ cat train/data.list
|
| 61 |
+
utt:X0000000000_100638174_S00037 feat:/data/raw_nnaudio.test.1.ark:2983479385 feat_shape:363,40 text:不惜在这种试验中毁灭包括自己在内的一切 token:不 惜 在 这 种 试 验 中 毁 灭 包 括 自 己 在 内 的 一 切 tokenid:[TOKENID] token_shape:19,5537
|
| 62 |
+
utt:X0000000001_100849618_S00006 feat:/data/raw_nnaudio.test.1.ark:2984296665 feat_shape:345,40 text:在他们收到足够建立大统一模型的数据后 token:在 他 们 收 到 足 够 建 立 大 统 一 模 型 的 数 据 后 tokenid:[TOKENID] token_shape:18,5537
|
| 63 |
+
...
|
| 64 |
+
```
|
| 65 |
+
|
| 66 |
+
## 字典准备
|
| 67 |
+
|
| 68 |
+
* 微调阶段,需要准备fairseq格式的 `dict.${label}.txt`,例如
|
| 69 |
+
```
|
| 70 |
+
是 2
|
| 71 |
+
好 3
|
| 72 |
+
...
|
| 73 |
+
```
|
| 74 |
+
|
| 75 |
+
* 预训练模型表征训练ASR任务阶段,需要准备wenet格式的`lang_char.txt`,相比于`dict.${label}.txt`额外添加`<blank>`, `<unk>`, `<sos/eos>`3个token,例如
|
| 76 |
+
```
|
| 77 |
+
<blank> 0
|
| 78 |
+
<unk> 1
|
| 79 |
+
是 2
|
| 80 |
+
好 3
|
| 81 |
+
...
|
| 82 |
+
<sos/eos> 5536
|
| 83 |
+
```
|
| 84 |
+
|
| 85 |
+
# 预训练模型微调
|
| 86 |
+
|
| 87 |
+
## 微调
|
| 88 |
+
* 准备`train.tsv`和`dev.tsv`,保存于同一训练目录下
|
| 89 |
+
```
|
| 90 |
+
$ ln -s /path/to/train/data.list /path/to/train/train.tsv
|
| 91 |
+
$ ln -s /path/to/dev/data.list /path/to/train/dev.tsv
|
| 92 |
+
```
|
| 93 |
+
* 进入data2vec_dialect路径,修改`path.sh`文件中`/path/to/fairseq`为fairseq安装路径
|
| 94 |
+
* 将`run_scripts/run_d2v_finetune.sh`中`/path/to/fairseq`和`/path/to/data2vec_dialect`路径替换;修改`task.data`为`.tsv`保存路径,如`task.data=/data/wenetspeech/train`
|
| 95 |
+
* 执行
|
| 96 |
+
```shell script
|
| 97 |
+
$ bash run_scripts/run_d2v_finetune.sh
|
| 98 |
+
```
|
| 99 |
+
|
| 100 |
+
## 解码
|
| 101 |
+
* 同样修改`run_scripts/decode.sh`中的模型路径、测试数据路径等
|
| 102 |
+
* `dataset.gen_subset`为测试数据路径下`tsv`文件的名称,可配置多个
|
| 103 |
+
* 执行
|
| 104 |
+
```shell script
|
| 105 |
+
$ bash run_scripts/decode.sh
|
| 106 |
+
```
|
| 107 |
+
|
| 108 |
+
# 表征训练下游任务
|
| 109 |
+
|
| 110 |
+
* 进入wenet_representation路径,修改`path.sh`文件中`fairseq`, `data2vec_dialect`, `wenet_representation`相关路径
|
| 111 |
+
|
| 112 |
+
* 连续表征训练与解码:
|
| 113 |
+
* 配置`run_d2v.sh`中dataset相关内容,执行
|
| 114 |
+
```shell script
|
| 115 |
+
$ bash run_d2v.sh
|
| 116 |
+
```
|
| 117 |
+
|
| 118 |
+
* 离散表征训练与解码:
|
| 119 |
+
* 首先根据`data.list`,准备离散表征对应训练文件`data.list.discrete`,修改`wenet/discrete_token/kmeans_d2v.yaml`中`model_dir`和`user_dir`,执行
|
| 120 |
+
```
|
| 121 |
+
$ bash wenet/discrete_token/dump_feat.sh
|
| 122 |
+
```
|
| 123 |
+
* 再配置`run_discrete.sh`中dataset相关内容,执行
|
| 124 |
+
```
|
| 125 |
+
$ bash run_discrete.sh
|
| 126 |
+
```
|
| 127 |
+
# 开源数据集结果
|
| 128 |
+
* 我们选择了多个开源中文数据集进行验证,以测试集上的字错误率 (Character Error Rate, CER) 结果作为衡量标准
|
| 129 |
+
* 在Aishell-1上我们选择其Train集作为有监督数据进行训练,在Test集上统计CER
|
| 130 |
+
* 在WenetSpeech上,我们分别使用100小时训练集Train_s和1000小时训练集Train_m分别作为有监督数据进行训练,在Test_Meeting测试集上统计CER
|
| 131 |
+
* Babel为NIST(美国国家标准与技术研究院)举办的低资源粤语电话识别任务数据集,我们使用其提供的训练集与测试集统计CER
|
| 132 |
+
* KeSpeech为中文多方言测试集,我们使用1396小时训练集作为有监督数据进行训练,选择提供的Test测试集统计CER
|
| 133 |
+
|
| 134 |
+
| | Aishell-1 | WenetSpeech*| Babel | KeSpeech |
|
| 135 |
+
| ----------| -------- | ------- | ---- | ---- |
|
| 136 |
+
| base_300k | 4.7 | 18.3 / 16.4 | 22.1 | 10.9 |
|
| 137 |
+
| large_300k | 4.0 | 14.3 / 13.0 | 19.1 | 8.1 |
|
| 138 |
+
|
| 139 |
+
*WenetSpeech中的结果为分别使用 `train_s/train_m`,在Test_Meeting上的CER
|
| 140 |
+
|
| 141 |
+
# 声明与协议
|
| 142 |
+
## 声明
|
| 143 |
+
我们在此声明,不要使用TeleSpeech模型及其衍生模型进行任何危害国家社会安全或违法的活动。同时,我们也要求使用者不要将TeleSpeech模型用于没有安全审查和备案的互联网服务。我们希望所有使用者遵守上述原则,确保科技发展在合法合规的环境下进行。
|
| 144 |
+
|
| 145 |
+
我们已经尽我们所能,来确保模型训练过程中使用的数据的合规性。然而,尽管我们已经做出了巨大的努力,但由于模型和数据的复杂性,仍有可能存在一些无法预见的问题。因此,如果由于使用TeleSpeech开源模型而导致的任何问题,包括但不限于数据安全问题、公共舆论风险,或模型被误导、滥用、传播或不当利用所带来的任何风险和问题,我们将不承担任何责任。
|
| 146 |
+
|
| 147 |
+
## 协议
|
| 148 |
+
社区使用TeleSpeech模型需要遵循《[TeleSpeech模型社区许可协议](./TeleSpeech模型社区许可协议.pdf)》。TeleSpeech模型支持商业用途,如果您计划将TeleSpeech模型或其衍生品用于商业目的,您需要通过以下联系邮箱 tele_ai@chinatelecom.cn,提交《TeleSpeech模型社区许可协议》要求的申请材料。审核通过后,将特此授予您一个非排他性、全球性、不可转让、不可再许可、可撤销的商用版权许可。
|
| 149 |
+
|
| 150 |
+
---
|