From ed5ebc91aeb356a0a2318fe32df123b46e9cd2a4 Mon Sep 17 00:00:00 2001 From: Hui Zhang Date: Thu, 4 Feb 2021 11:27:48 +0000 Subject: [PATCH] update cn readme --- README_cn.md | 121 ++++++++++++++++++++++----------------------------- 1 file changed, 51 insertions(+), 70 deletions(-) diff --git a/README_cn.md b/README_cn.md index 176f0cd7..94825cb9 100644 --- a/README_cn.md +++ b/README_cn.md @@ -7,17 +7,14 @@ ## 目录 - [安装](#安装) -- [在 Docker 容器上运行](#在Docker容器上运行) - [开始](#开始) - [数据准备](#数据准备) - [训练模型](#训练模型) -- [数据增强流水线](#数据增强流水线) - [推断和评价](#推断和评价) - [超参数调整](#超参数调整) -- [训练汉语语言](#训练汉语语言) - [用自己的声音尝试现场演示](#用自己的声音尝试现场演示) -- [发布模型](#发布模型) - [试验和基准](#试验和基准) +- [发布模型](#发布模型) - [问题和帮助](#问题和帮助) ## 安装 @@ -102,42 +99,16 @@ python3 -m pip install paddlepaddle-gpu==1.8.0.post107 cd examples/tiny ``` - 注意这仅仅是 LibriSpeech 一个小数据集的例子。如果你想尝试完整的数据集(可能需要花好几天来训练模型),请使用这个路径`examples/librispeech`。 -- 准备数据 - - ```bash - sh run_data.sh - ``` - - 运行`run_data.sh`脚本将会下载数据集,产出 manifests 文件,收集一些归一化需要的统计信息并建立词表。当数据准备完成之后,下载完的数据(仅有 LibriSpeech 一部分)在`dataset/librispeech`中;其对应的 manifest 文件,均值标准差和词表文件在`./data/tiny`中。在第一次执行的时候一定要执行这个脚本,在接下来所有的实验中我们都会用到这个数据集。 -- 训练你自己的 ASR 模型 - - ```bash - sh run_train.sh - ``` - - `run_train.sh`将会启动训练任务,训练日志会打印到终端,并且模型每个 epoch 的 checkpoint 都会保存到`./checkpoints/tiny`目录中。这些 checkpoint 可以用来恢复训练,推断,评价和部署。 -- 用已有的模型进行案例推断 - - ```bash - sh run_infer.sh - ``` - - `run_infer.sh`将会利用训练好的模型展现一些(默认 10 个)样本语音到文本的解码结果。由于当前模型只使用了 LibriSpeech 一部分数据集训练,因此性能可能不会太好。为了看到更好模型上的表现,你可以下载一个已训练好的模型(用完整的 LibriSpeech 训练了好几天)来做推断。 - - ```bash - sh run_infer_golden.sh - ``` -- 评价一个已经存在的模型 + 注意这仅仅是 LibriSpeech 一个小数据集的例子。如果你想尝试完整的数据集(可能需要花好几天来训练模型),请使用这个路径`examples/librispeech`。 +- 设置环境变量 ```bash - sh run_test.sh + source path.sh ``` - - `run_test.sh`能够利用误字率(或字符错误率)来评价模型。类似的,你可以下载一个完全训练好的模型来测试它的性能: +- 入口脚本 ```bash - sh run_test_golden.sh + bash run.sh ``` 更多细节会在接下来的章节中阐述。祝你在*DeepSpeech2*ASR引擎学习中过得愉快! @@ -156,7 +127,7 @@ python3 -m pip install paddlepaddle-gpu==1.8.0.post107 如果你要使用自定义数据,你只需要按照以上格式生成自己的 manifest 文件即可。给定 manifest 文件,训练、推断以及其它所有模块都能够访问到音频数据以及对应的时长和标签数据。 -关于如何生成 manifest 文件,请参考`data/librispeech/librispeech.py`。该脚本将会下载 LibriSpeech 数据集并生成 manifest 文件。 +关于如何生成 manifest 文件,请参考`examples/librispeech/local/librispeech.py`。该脚本将会下载 LibriSpeech 数据集并生成 manifest 文件。 ### 计算均值和标准差用于归一化 @@ -166,11 +137,11 @@ python3 -m pip install paddlepaddle-gpu==1.8.0.post107 python3 tools/compute_mean_std.py \ --num_samples 2000 \ --specgram_type linear \ ---manifest_path data/librispeech/manifest.train \ ---output_path data/librispeech/mean_std.npz +--manifest_path examples/librispeech/data/manifest.train \ +--output_path examples/librispeech/data/mean_std.npz ``` -以上这段代码会计算在`data/librispeech/manifest.train`路径中,2000 个随机采样的语音频谱特征的均值和标准差,并将结果保存在`data/librispeech/mean_std.npz`中,方便以后使用。 +以上这段代码会计算在`examples/librispeech/data/manifest.train`路径中,2000 个随机采样的语音频谱特征的均值和标准差,并将结果保存在`examples/librispeech/data/mean_std.npz`中,方便以后使用。 ### 建立词表 @@ -179,22 +150,24 @@ python3 tools/compute_mean_std.py \ ```bash python3 tools/build_vocab.py \ --count_threshold 0 \ ---vocab_path data/librispeech/eng_vocab.txt \ ---manifest_paths data/librispeech/manifest.train +--vocab_path examples/librispeech/data/eng_vocab.txt \ +--manifest_paths examples/librispeech/data/manifest.train ``` -它将`data/librispeech/manifest.train`目录中的所有录音文本写入词表文件`data/librispeeech/eng_vocab.txt`,并且没有词汇截断(`--count_threshold 0`)。 +它将`examples/librispeech/data/manifest.train`目录中的所有录音文本写入词表文件`examples/librispeeech/data/eng_vocab.txt`,并且没有词汇截断(`--count_threshold 0`)。 ### 更多帮助 获得更多帮助: ```bash -python3 data/librispeech/librispeech.py --help +python3 examples/librispeech/local/librispeech.py --help python3 tools/compute_mean_std.py --help python3 tools/build_vocab.py --help ``` + + ## 训练模型 `train.py`是训练模块的主要调用者。使用示例如下。 @@ -224,10 +197,10 @@ python3 tools/build_vocab.py --help ```bash python3 train.py --help ``` -或参考 `example/librispeech/run_train.sh`. +或参考 `example/librispeech/local/run_train.sh`. -## 数据增强流水线 +### 数据增强流水线 数据增强是用来提升深度学习性能的非常有效的技术。我们通过在原始音频中添加小的随机扰动(标签不变转换)获得新音频来增强我们的语音数据。你不必自己合成,因为数据增强已经嵌入到数据生成器中并且能够即时完成,在训练模型的每个epoch中随机合成音频。 @@ -263,6 +236,12 @@ python3 train.py --help 使用数据增强技术时要小心,由于扩大了训练和测试集的差异,不恰当的增强会对训练模型不利,导致训练和预测的差距增大。 +### 训练普通话语言 + +普通话语言训练与英语训练的关键步骤相同,我们提供了一个使用 Aishell 进行普通话训练的例子```examples/aishell```。如上所述,请执行```sh run_data.sh```, ```sh run_train.sh```, ```sh run_test.sh```和```sh run_infer.sh```做相应的数据准备,训练,测试和推断。我们还准备了一个预训练过的模型(执行./models/aishell/download_model.sh下载)供用户使用```run_infer_golden.sh```和```run_test_golden.sh```来。请注意,与英语语言模型不同,普通话语言模型是基于汉字的,请运行```tools/tune.py```来查找最佳设置。 + + + ## 推断和评价 ### 准备语言模型 @@ -321,7 +300,7 @@ bash download_lm_ch.sh ``` python3 infer.py --help ``` -或参考`example/librispeech/run_infer.sh`. +或参考`example/librispeech/local/run_infer.sh`. ### 评估模型 @@ -346,7 +325,9 @@ python3 infer.py --help ```bash python3 test.py --help ``` -或参考`example/librispeech/run_test.sh`. +或参考`example/librispeech/local/run_test.sh`. + + ## 超参数调整 @@ -386,11 +367,8 @@ python3 test.py --help ```bash python3 tune.py --help ``` -或参考`example/librispeech/run_tune.sh`. - -## 训练普通话语言 +或参考`example/librispeech/local/run_tune.sh`. -普通话语言训练与英语训练的关键步骤相同,我们提供了一个使用 Aishell 进行普通话训练的例子```examples/aishell```。如上所述,请执行```sh run_data.sh```, ```sh run_train.sh```, ```sh run_test.sh```和```sh run_infer.sh```做相应的数据准备,训练,测试和推断。我们还准备了一个预训练过的模型(执行./models/aishell/download_model.sh下载)供用户使用```run_infer_golden.sh```和```run_test_golden.sh```来。请注意,与英语语言模型不同,普通话语言模型是基于汉字的,请运行```tools/tune.py```来查找最佳设置。 ## 用自己的声音尝试现场演示 @@ -428,7 +406,7 @@ python3 -u deploy/demo_client.py \ 请注意,`deploy/demo_client.py`必须在带麦克风设备的机器上运行,而`deploy/demo_server.py`可以在没有任何录音硬件的情况下运行,例如任何远程服务器机器。如果服务器和客户端使用两台独立的机器运行,只需要注意将`host_ip`和`host_port`参数设置为实际可访问的IP地址和端口。如果它们在单台机器上运行,则不用作任何处理。 -请参考`examples/deploy_demo/run_english_demo_server.sh`,它将首先下载一个预先训练过的英语模型(用3000小时的内部语音数据训练),然后用模型启动演示服务器。通过运行`examples/mandarin/run_demo_client.sh`,你可以说英语来测试它。如果您想尝试其他模型,只需更新脚本中的`--model_path`参数即可。 +请参考`examples/deploy_demo/run_english_demo_server.sh`,它将首先下载一个预先训练过的英语模型(用3000小时的内部语音数据训练),然后用模型启动演示服务器。通过运行`examples/deploy_demo/run_demo_client.sh`,你可以说英语来测试它。如果您想尝试其他模型,只需更新脚本中的`--model_path`参数即可。 获得更多帮助: @@ -437,24 +415,6 @@ python3 deploy/demo_server.py --help python3 deploy/demo_client.py --help ``` -## 发布模型 - -#### 语音模型发布 - -语种 | 模型名 | 训练数据 | 语音时长 -:-----------: | :------------: | :----------: | -------: -English | [LibriSpeech Model](https://deepspeech.bj.bcebos.com/eng_models/librispeech_model_fluid.tar.gz) | [LibriSpeech Dataset](http://www.openslr.org/12/) | 960 h -English | [BaiduEN8k Model](https://deepspeech.bj.bcebos.com/demo_models/baidu_en8k_model_fluid.tar.gz) | Baidu Internal English Dataset | 8628 h -Mandarin | [Aishell Model](https://deepspeech.bj.bcebos.com/mandarin_models/aishell_model_fluid.tar.gz) | [Aishell Dataset](http://www.openslr.org/33/) | 151 h -Mandarin | [BaiduCN1.2k Model](https://deepspeech.bj.bcebos.com/demo_models/baidu_cn1.2k_model_fluid.tar.gz) | Baidu Internal Mandarin Dataset | 1204 h - -#### 语言模型发布 - -语言模型 | 训练数据 | 基于的字符 | 大小 | 描述 -:-------------:| :------------:| :-----: | -----: | :----------------- -[English LM](https://deepspeech.bj.bcebos.com/en_lm/common_crawl_00.prune01111.trie.klm) | [CommonCrawl(en.00)](http://web-language-models.s3-website-us-east-1.amazonaws.com/ngrams/en/deduped/en.00.deduped.xz) | Word-based | 8.3 GB | Pruned with 0 1 1 1 1;
About 1.85 billion n-grams;
'trie' binary with '-a 22 -q 8 -b 8' -[Mandarin LM Small](https://deepspeech.bj.bcebos.com/zh_lm/zh_giga.no_cna_cmn.prune01244.klm) | Baidu Internal Corpus | Char-based | 2.8 GB | Pruned with 0 1 2 4 4;
About 0.13 billion n-grams;
'probing' binary with default settings -[Mandarin LM Large](https://deepspeech.bj.bcebos.com/zh_lm/zhidao_giga.klm) | Baidu Internal Corpus | Char-based | 70.4 GB | No Pruning;
About 3.7 billion n-grams;
'probing' binary with default settings ## 实验和baseline @@ -494,6 +454,27 @@ Baidu Internal Testset | 12.64 `tools/profile.sh`提供了上述分析工具. + +## 发布模型 + +#### 语音模型发布 + +语种 | 模型名 | 训练数据 | 语音时长 +:-----------: | :------------: | :----------: | -------: +English | [LibriSpeech Model](https://deepspeech.bj.bcebos.com/eng_models/librispeech_model_fluid.tar.gz) | [LibriSpeech Dataset](http://www.openslr.org/12/) | 960 h +English | [BaiduEN8k Model](https://deepspeech.bj.bcebos.com/demo_models/baidu_en8k_model_fluid.tar.gz) | Baidu Internal English Dataset | 8628 h +Mandarin | [Aishell Model](https://deepspeech.bj.bcebos.com/mandarin_models/aishell_model_fluid.tar.gz) | [Aishell Dataset](http://www.openslr.org/33/) | 151 h +Mandarin | [BaiduCN1.2k Model](https://deepspeech.bj.bcebos.com/demo_models/baidu_cn1.2k_model_fluid.tar.gz) | Baidu Internal Mandarin Dataset | 1204 h + +#### 语言模型发布 + +语言模型 | 训练数据 | 基于的字符 | 大小 | 描述 +:-------------:| :------------:| :-----: | -----: | :----------------- +[English LM](https://deepspeech.bj.bcebos.com/en_lm/common_crawl_00.prune01111.trie.klm) | [CommonCrawl(en.00)](http://web-language-models.s3-website-us-east-1.amazonaws.com/ngrams/en/deduped/en.00.deduped.xz) | Word-based | 8.3 GB | Pruned with 0 1 1 1 1;
About 1.85 billion n-grams;
'trie' binary with '-a 22 -q 8 -b 8' +[Mandarin LM Small](https://deepspeech.bj.bcebos.com/zh_lm/zh_giga.no_cna_cmn.prune01244.klm) | Baidu Internal Corpus | Char-based | 2.8 GB | Pruned with 0 1 2 4 4;
About 0.13 billion n-grams;
'probing' binary with default settings +[Mandarin LM Large](https://deepspeech.bj.bcebos.com/zh_lm/zhidao_giga.klm) | Baidu Internal Corpus | Char-based | 70.4 GB | No Pruning;
About 3.7 billion n-grams;
'probing' binary with default settings + + ## 问题和帮助 欢迎您在[Github问题](https://github.com/PaddlePaddle/models/issues)中提交问题和bug。也欢迎您为这个项目做出贡献。 -- GitLab