diff --git a/egs/aishell/ASR/README.md b/egs/aishell/ASR/README.md index 37e72289f..1b3c5a2e3 100644 --- a/egs/aishell/ASR/README.md +++ b/egs/aishell/ASR/README.md @@ -1,4 +1,6 @@ +# Introduction + Please refer to for how to run models in this recipe. @@ -7,11 +9,11 @@ for how to run models in this recipe. There are various folders containing the name `transducer` in this folder. The following table lists the differences among them. -| | Encoder | Decoder | Comment | -|------------------------|-----------|--------------------|-----------------------------------------------------------------------------------| -| `transducer_stateless` | Conformer | Embedding + Conv1d | with `k2.rnnt_loss` | -| `transducer_stateless_modified` | Conformer | Embedding + Conv1d | with modified transducer from `optimized_transducer` | -| `transducer_stateless_modified-2` | Conformer | Embedding + Conv1d | with modified transducer from `optimized_transducer` + extra data | +| | Encoder | Decoder | Comment | +|------------------------------------|-----------|--------------------|-----------------------------------------------------------------------------------| +| `transducer_stateless` | Conformer | Embedding + Conv1d | with `k2.rnnt_loss` | +| `transducer_stateless_modified` | Conformer | Embedding + Conv1d | with modified transducer from `optimized_transducer` | +| `transducer_stateless_modified-2` | Conformer | Embedding + Conv1d | with modified transducer from `optimized_transducer` + extra data | The decoder in `transducer_stateless` is modified from the paper [Rnn-Transducer with Stateless Prediction Network](https://ieeexplore.ieee.org/document/9054419/). diff --git a/egs/aishell/ASR/RESULTS.md b/egs/aishell/ASR/RESULTS.md index f5af3f096..d8e2e5fc4 100644 --- a/egs/aishell/ASR/RESULTS.md +++ b/egs/aishell/ASR/RESULTS.md @@ -1,12 +1,86 @@ ## Results ### Aishell training result(Transducer-stateless) + +#### 2022-03-01 + +[./transducer_stateless_modified-2](./transducer_stateless_modified-2) + +Stateless transducer + modified transducer + using [aidatatang_200zh](http://www.openslr.org/62/) as extra training data. + + +| | test |comment | +|------------------------|------|----------------------------------------------------------------| +| greedy search | 4.94 |--epoch 89, --avg 38, --max-duration 100, --max-sym-per-frame 1 | +| modified beam search | 4.68 |--epoch 89, --avg 38, --max-duration 100 --beam-size 4 | + +The training commands are: + +```bash +cd egs/aishell/ASR +./prepare.sh --stop-stage 6 +./prepare_aidatatang_200zh.sh + +export CUDA_VISIBLE_DEVICES="0,1,2" + +./transducer_stateless_modified-2/train.py \ + --world-size 3 \ + --num-epochs 90 \ + --start-epoch 0 \ + --exp-dir transducer_stateless_modified-2/exp-2 \ + --max-duration 250 \ + --lr-factor 2.0 \ + --context-size 2 \ + --modified-transducer-prob 0.25 \ + --datatang-prob 0.2 +``` + +The tensorboard log is available at + + +The commands for decoding are + +```bash +# greedy search +for epoch in 89; do + for avg in 38; do + ./transducer_stateless_modified-2/decode.py \ + --epoch $epoch \ + --avg $avg \ + --exp-dir transducer_stateless_modified-2/exp-2 \ + --max-duration 100 \ + --context-size 2 \ + --decoding-method greedy_search \ + --max-sym-per-frame 1 + done +done + +# modified beam search +for epoch in 89; do + for avg in 38; do + ./transducer_stateless_modified-2/decode.py \ + --epoch $epoch \ + --avg $avg \ + --exp-dir transducer_stateless_modified-2/exp-2 \ + --max-duration 100 \ + --context-size 2 \ + --decoding-method modified_beam_search \ + --beam-size 4 + done +done +``` + +You can find a pre-trained model and decoding logs and results at + + + + #### 2022-2-19 (Duo Ma): The tensorboard log for training is available at https://tensorboard.dev/experiment/25PmX3MxSVGTdvIdhOwllw/#scalars You can find a pretrained model by visiting https://huggingface.co/shuanguanma/icefall_aishell_transducer_stateless_context_size2_epoch60_2022_2_19 | | test |comment | |---------------------------|------|-----------------------------------------| -| greedy search | 5.4 |--epoch 59, --avg 10, --max-duration 100 | -| beam search | 5.05|--epoch 59, --avg 10, --max-duration 100 | +| greedy search | 5.4 |--epoch 59, --avg 10, --max-duration 100 | +| beam search | 5.05|--epoch 59, --avg 10, --max-duration 100 | You can use the following commands to reproduce our results: diff --git a/egs/aishell/ASR/transducer_stateless_modified-2/decode.py b/egs/aishell/ASR/transducer_stateless_modified-2/decode.py index 886fa2b2f..f34f8d1c6 100755 --- a/egs/aishell/ASR/transducer_stateless_modified-2/decode.py +++ b/egs/aishell/ASR/transducer_stateless_modified-2/decode.py @@ -95,7 +95,7 @@ def get_parser(): parser.add_argument( "--exp-dir", type=str, - default="transducer_stateless_modified/exp", + default="transducer_stateless_modified-2/exp", help="The experiment dir", )