k2-fsa / icefall

https://k2-fsa.github.io/icefall/
Apache License 2.0
893 stars 287 forks source link

Troubles with streaming decode #1724

Closed kfmn closed 3 days ago

kfmn commented 4 weeks ago

Hi,

I am trying to apply librispeech streaming recipe for my data (about 4K hours). I train zipformer with --causal 1 for about 30 epochs and tried to run both simulated_streaming (via decode.py) and chunking (via streaming_decode.py) with my testsets. While decode.py shows reasonable results (WER of about 30%), chunking version doesn't work properly showing multiple deletions and WER of over 98%). It is worth noting that at earlier epochs WER is lower (about 80-85%) but later increases up to almost 100%.

Non-streaming version of the model (trained without --causal 1) also works well.

Please suggest what could be the source of such behaviour

Arpit-Codes commented 1 week ago

@csukuangfj

csukuangfj commented 1 week ago

would you mind posting the complete decoding command?

Also, could you share part of the decoding results? We want to know the error patterns, e.g., more deletions or insertions?

kfmn commented 5 days ago

Hi,

The complete decoding command for chunking mode is like as follows: ./zipformer/streaming_decode.py \ --epoch 30 \ --avg 1 \ --exp-dir ./zipformer/exp_500_30ep_medium_causal \ --max-duration 400 \ --decoding-method greedy_search \ --use-transducer True --use-ctc True \ --manifest-dir data/fbank_AR \ --encoder-dim 96,128,192,256,192,128 \ --encoder-unmasked-dim 96,96,128,128,128,96 \ --causal 1 --chunk-size 64 --left-context-frames 256

When I use decode.py instead, the results are quite fine. But with this command the part of decoding results looks like as follows:

%WER = 98.58 Errors: 3 insertions, 13088 deletions, 408 substitutions, over 13693 reference words (197 correct) Search below for sections starting with PER-UTT DETAILS:, SUBSTITUTIONS:, DELETIONS:, INSERTIONS:, PER-WORD STATS:

PER-UTT DETAILS: corr or (ref->hyp) langet_14_18_26_d76f5987-fd47-476b-b6b2-7374692e49d8_1_8000_talk_null-0: (Коля нашел да а у кого позаимствовали что там же были кисти так ясно уже уже радует хорошо понятно ну ясно ладно гоняй если что говори там я я буду разборки->▁) langet_14_18_27_13acbae0-92ca-4cd6-8a71-5483e7969835_1_8000_talk_null-1: (угу угу а что очень грязно было угу угу просто я же вроде когда позавчера мыла->▁) langet_14_18_27_20afc5c8-41df-4017-ad19-e09fe25833a6_1_8000_talk_null-2: (потому что я говорю сейчас каникулы где кого по родителям бегать искать может кто-то куда-то поехал сейчас выходные да пятница кто в цирк кто куда уезжает поэтому я говорю что она сама сегодня в цирке ну поэтому->▁) langet_14_18_27_31c5089c-b3ee-4e14-8161-24550a13aaa2_1_8000_talk_null-3: а у него не узнать что ли (ну давай так->*) langet_14_18_27_7c4ff478-b0b5-4896-9230-28c5e7025a13_1_8000_talk_null-4: (володь мой краскопульт пришел ой одной кистью так и красят->▁) langet_14_18_27_95be8642-f3da-41f6-a514-a1e6d6701611_1_8000_talk_null-5: (да Ванечка ты же знаешь чтобы на работе был очень спокоен знай что я тебя очень жду ладно и ни за что не переживай хорошо на работе ты должен быть спокойным ладно вот ну пока целую Ванечка тебя давай пока->▁) langet_14_18_27_b3ea7c90-6f2b-4c83-b447-9ee3a991db90_1_8000_talk_null-6: (да нормально только замерзла ночью пришлось двумя этими укрываться тулупами угу ну так нормально проснулась я легла кстати часов полдесятого наверное дак а что я там чуть-чуть посидела ушла->▁) langet_14_18_27_c983f207-73c6-43eb-ba74-280587183b51_1_8000_talk_null-7: (да так а Саша так и не приехал ясно ну понятно понятно я разговаривал с ним я почему и спрашиваю одной кисточкой а нашли->▁) langet_14_18_27_eb9e42a8-68b4-424d-b389-3f46c2b5b45d_1_8000_talk_null-8: (а да ты что->▁)

Mostly, the recognition result is empty...

Hope this helps

csukuangfj commented 5 days ago

Could you also show the same info about decode.py?

kfmn commented 5 days ago

This is a result for modified beam search with beam=4, but results of a greedy decoding are quite similar:

%WER = 25.40 Errors: 622 insertions, 745 deletions, 2111 substitutions, over 13693 reference words (10837 correct) Search below for sections starting with PER-UTT DETAILS:, SUBSTITUTIONS:, DELETIONS:, INSERTIONS:, PER-WORD STATS:

PER-UTT DETAILS: corr or (ref->hyp) langet_14_18_26_d76f5987-fd47-476b-b6b2-7374692e49d8_1_8000_talk_null-0: (Коля->коля я) нашел да а у кого позаимствовали что там же были (кисти->какие-то) так ясно уже уже радует хорошо понятно ну ясно ладно гоняй если что говори там я (я-> ) буду разборки ( ->к) langet_14_18_27_13acbae0-92ca-4cd6-8a71-5483e7969835_1_8000_talk_null-1: угу угу а что очень грязно было угу (угу-> ) просто я же вроде когда позавчера мыла langet_14_18_27_20afc5c8-41df-4017-ad19-e09fe25833a6_1_8000_talk_null-2: потому что я говорю сейчас каникулы где кого по родителям бегать искать может кто-то куда-то поехал сейчас выходные да пятница кто в цирк кто куда уезжает поэтому я говорю что она сама сегодня в (цирке->сырке) ну поэтому langet_14_18_27_31c5089c-b3ee-4e14-8161-24550a13aaa2_1_8000_talk_null-3: а у него не (узнать->он знать) что ли ну давай (так-> ) langet_14_18_27_7c4ff478-b0b5-4896-9230-28c5e7025a13_1_8000_talk_null-4: (володь мой краскопульт пришел->алло ну куда с капуль пришёл) ой одной (кистью таки красят->кисти по прекрасят) langet_14_18_27_95be8642-f3da-41f6-a514-a1e6d6701611_1_8000_talk_null-5: да Ванечка ты же знаешь (чтобы->что вы) на работе был очень спокоен (знай->знаешь) что я тебя очень жду ладно (и ни->ну) за что не переживай хорошо на работе ты должен быть (спокойным ладно вот ну пока целую Ванечка тебя->спокойно нужно) давай пока langet_14_18_27_b3ea7c90-6f2b-4c83-b447-9ee3a991db90_1_8000_talk_null-6: да нормально только (замерзла->замёрзла) ночью пришлось двумя этими укрываться тулупами угу ну так нормально проснулась я легла кстати часов полдесятого (наверное дак->наверно так) а что я там чуть-чуть посидела ушла langet_14_18_27_c983f207-73c6-43eb-ba74-280587183b51_1_8000_talk_null-7: (да-> ) так (а->пока) Саша (так->такси) и (не-> ) приехал ясно ну понятно понятно я разговаривал с ним я почему и спрашиваю одной кисточкой а ( *->на) нашли langet_14_18_27_eb9e42a8-68b4-424d-b389-3f46c2b5b45d_1_8000_talk_null-8: (а->угу) да (ты что->то есть да)

csukuangfj commented 5 days ago

Would you mind sharing the complete decoding command?

csukuangfj commented 5 days ago

Please also post the first few lines of decoding logs, both for streaming_decode.py and decode.py

The first few lines contain complete information about your environment and the command you are running.

kfmn commented 5 days ago

This is a log for streaming_decode run:


2024-08-12 09:53:53,440 INFO [streaming_decode.py:722] Decoding started
2024-08-12 09:53:53,440 INFO [streaming_decode.py:728] Device: cuda:0
2024-08-12 09:53:53,448 INFO [streaming_decode.py:738] {'best_train_loss': inf, 'best_valid_loss': inf, 'best_train_epoch': -1, 'best_valid_epoch': -1, 'batch_i
dx_train': 0, 'log_interval': 50, 'reset_interval': 200, 'valid_interval': 3000, 'feature_dim': 80, 'subsampling_factor': 4, 'warm_step': 2000, 'env_info': {'k2-ve
rsion': '1.24.3', 'k2-build-type': 'Release', 'k2-with-cuda': True, 'k2-git-sha1': 'e400fa3b456faf8afe0ee5bfe572946b4921a3db', 'k2-git-date': 'Sat Jul 15 04:21:50
2023', 'lhotse-version': '1.23.0', 'torch-version': '2.0.1+cu117', 'torch-cuda-available': True, 'torch-cuda-version': '11.7', 'python-version': '3.8', 'icefall-gi
t-branch': 'master', 'icefall-git-sha1': '1adf1e44-clean', 'icefall-git-date': 'Tue May 21 13:22:19 2024', 'icefall-path': '/mnt/asr/korenevsky/k2-fsa_220524/icefa
ll', 'k2-path': '/mnt/asr/home/korenevsky/anaconda3/envs/py38_k2new/lib/python3.8/site-packages/k2/__init__.py', 'lhotse-path': '/mnt/asr/home/korenevsky/anaconda3
/envs/py38_k2new/lib/python3.8/site-packages/lhotse/__init__.py', 'hostname': 'nid-sc-27.ad.speechpro.com', 'IP address': '127.0.1.1'}, 'epoch': 30, 'iter': 0, 'av
g': 1, 'use_averaged_model': True, 'exp_dir': PosixPath('zipformer/exp_500_30ep_medium_AR_causal'), 'bpe_model': 'data/lang_bpe_500/bpe.model', 'decoding_method':
'greedy_search', 'num_active_paths': 4, 'beam': 4, 'max_contexts': 4, 'max_states': 32, 'context_size': 2, 'num_decode_streams': 2000, 'num_encoder_layers': '2,2,3
,4,3,2', 'downsampling_factor': '1,2,4,8,4,2', 'feedforward_dim': '512,768,1024,1536,1024,768', 'num_heads': '4,4,4,8,4,4', 'encoder_dim': '96,128,192,256,192,128'
, 'query_head_dim': '32', 'value_head_dim': '12', 'pos_head_dim': '4', 'pos_dim': 48, 'encoder_unmasked_dim': '96,96,128,128,128,96', 'cnn_module_kernel': '31,31,1
5,15,15,31', 'decoder_dim': 512, 'joiner_dim': 512, 'causal': True, 'chunk_size': '64', 'left_context_frames': '256', 'use_transducer': True, 'use_ctc': True, 'ful
l_libri': True, 'mini_libri': False, 'manifest_dir': PosixPath('data/fbank_AR'), 'max_duration': 600, 'bucketing_sampler': True, 'num_buckets': 30, 'concatenate_cu
ts': False, 'duration_factor': 1.0, 'gap': 1.0, 'on_the_fly_feats': False, 'shuffle': True, 'drop_last': True, 'return_cuts': True, 'num_workers': 2, 'enable_spec_
aug': True, 'spec_aug_time_warp_factor': 80, 'enable_musan': True, 'input_strategy': 'PrecomputedFeatures', 'res_dir': PosixPath('zipformer/exp_500_30ep_medium_AR_
causal/streaming/greedy_search'), 'suffix': 'epoch-30-avg-1-chunk-64-left-context-256-use-averaged-model', 'blank_id': 0, 'unk_id': 2, 'vocab_size': 500}
2024-08-12 09:53:53,448 INFO [streaming_decode.py:740] About to create model
2024-08-12 09:53:53,750 INFO [streaming_decode.py:807] Calculating the averaged model over epoch range from 29 (excluded) to 30
2024-08-12 09:54:01,669 INFO [streaming_decode.py:829] Number of model parameters: 28704951
2024-08-12 09:54:01,669 INFO [asr_datamodule_AR.py:431] About to get test_langet cuts
2024-08-12 09:54:05,342 INFO [streaming_decode.py:611] Cuts processed until now is 0.
2024-08-12 09:54:05,794 INFO [streaming_decode.py:611] Cuts processed until now is 100.
2024-08-12 09:54:08,935 INFO [streaming_decode.py:611] Cuts processed until now is 200.
2024-08-12 09:54:11,483 INFO [streaming_decode.py:611] Cuts processed until now is 300.
2024-08-12 09:54:15,238 INFO [streaming_decode.py:611] Cuts processed until now is 400.
2024-08-12 09:54:22,417 INFO [streaming_decode.py:655] The transcripts are stored in zipformer/exp_500_30ep_medium_AR_causal/streaming/greedy_search/recogs-test
_langet-greedy_search-epoch-30-avg-1-chunk-64-left-context-256-use-averaged-model.txt
2024-08-12 09:54:22,437 INFO [utils.py:657] [test_langet-greedy_search] %WER 98.58% [13499 / 13693, 3 ins, 13088 del, 408 sub ]
2024-08-12 09:54:22,487 INFO [streaming_decode.py:668] Wrote detailed error stats to zipformer/exp_500_30ep_medium_AR_causal/streaming/greedy_search/errs-test_l
anget-greedy_search-epoch-30-avg-1-chunk-64-left-context-256-use-averaged-model.txt
2024-08-12 09:54:22,507 INFO [streaming_decode.py:684]
For test_langet, WER of different settings are:
greedy_search   98.58   best for test_langet
kfmn commented 5 days ago

This is a log for decode.py:

2024-08-12 09:31:52,260 INFO [decode.py:834] Decoding started
2024-08-12 09:31:52,261 INFO [decode.py:840] Device: cuda:0
2024-08-12 09:31:52,269 INFO [decode.py:850] {'best_train_loss': inf, 'best_valid_loss': inf, 'best_train_epoch': -1, 'best_valid_epoch': -1, 'batch_idx_train'
: 0, 'log_interval': 50, 'reset_interval': 200, 'valid_interval': 3000, 'feature_dim': 80, 'subsampling_factor': 4, 'warm_step': 2000, 'env_info': {'k2-version': '
1.24.3', 'k2-build-type': 'Release', 'k2-with-cuda': True, 'k2-git-sha1': 'e400fa3b456faf8afe0ee5bfe572946b4921a3db', 'k2-git-date': 'Sat Jul 15 04:21:50 2023', 'l
hotse-version': '1.23.0', 'torch-version': '2.0.1+cu117', 'torch-cuda-available': True, 'torch-cuda-version': '11.7', 'python-version': '3.8', 'icefall-git-branch'
: 'master', 'icefall-git-sha1': '1adf1e44-clean', 'icefall-git-date': 'Tue May 21 13:22:19 2024', 'icefall-path': '/mnt/asr/korenevsky/k2-fsa_220524/icefall', 'k2-
path': '/mnt/asr/home/korenevsky/anaconda3/envs/py38_k2new/lib/python3.8/site-packages/k2/__init__.py', 'lhotse-path': '/mnt/asr/home/korenevsky/anaconda3/envs/py3
8_k2new/lib/python3.8/site-packages/lhotse/__init__.py', 'hostname': 'nid-sc-27.ad.speechpro.com', 'IP address': '127.0.1.1'}, 'epoch': 30, 'iter': 0, 'avg': 1, 'u
se_averaged_model': True, 'exp_dir': PosixPath('zipformer/exp_500_30ep_medium_AR_causal'), 'bpe_model': 'data/lang_bpe_500/bpe.model', 'lang_dir': PosixPath('data/
lang_bpe_500'), 'decoding_method': 'modified_beam_search', 'beam_size': 4, 'beam': 20.0, 'ngram_lm_scale': 0.01, 'max_contexts': 8, 'max_states': 64, 'context_size
': 2, 'max_sym_per_frame': 1, 'num_paths': 200, 'nbest_scale': 0.5, 'use_shallow_fusion': False, 'lm_type': 'rnn', 'lm_scale': 0.3, 'tokens_ngram': 2, 'backoff_id'
: 500, 'context_score': 2, 'context_file': '', 'num_encoder_layers': '2,2,3,4,3,2', 'downsampling_factor': '1,2,4,8,4,2', 'feedforward_dim': '512,768,1024,1536,102
4,768', 'num_heads': '4,4,4,8,4,4', 'encoder_dim': '96,128,192,256,192,128', 'query_head_dim': '32', 'value_head_dim': '12', 'pos_head_dim': '4', 'pos_dim': 48, 'e
ncoder_unmasked_dim': '96,96,128,128,128,96', 'cnn_module_kernel': '31,31,15,15,15,31', 'decoder_dim': 512, 'joiner_dim': 512, 'causal': True, 'chunk_size': '32',
'left_context_frames': '128', 'use_transducer': True, 'use_ctc': True, 'full_libri': True, 'mini_libri': False, 'manifest_dir': PosixPath('data/fbank_AR'), 'max_du
ration': 600, 'bucketing_sampler': True, 'num_buckets': 30, 'concatenate_cuts': False, 'duration_factor': 1.0, 'gap': 1.0, 'on_the_fly_feats': False, 'shuffle': Tr
ue, 'drop_last': True, 'return_cuts': True, 'num_workers': 2, 'enable_spec_aug': True, 'spec_aug_time_warp_factor': 80, 'enable_musan': True, 'input_strategy': 'Pr
ecomputedFeatures', 'lm_vocab_size': 500, 'lm_epoch': 7, 'lm_avg': 1, 'lm_exp_dir': None, 'rnn_lm_embedding_dim': 2048, 'rnn_lm_hidden_dim': 2048, 'rnn_lm_num_laye
rs': 3, 'rnn_lm_tie_weights': True, 'transformer_lm_exp_dir': None, 'transformer_lm_dim_feedforward': 2048, 'transformer_lm_encoder_dim': 768, 'transformer_lm_embe
dding_dim': 768, 'transformer_lm_nhead': 8, 'transformer_lm_num_layers': 16, 'transformer_lm_tie_weights': True, 'res_dir': PosixPath('zipformer/exp_500_30ep_mediu
m_AR_causal/modified_beam_search'), 'has_contexts': False, 'suffix': 'epoch-30-avg-1-chunk-32-left-context-128-modified_beam_search-beam-size-4-use-averaged-model'
, 'blank_id': 0, 'unk_id': 2, 'vocab_size': 500}
2024-08-12 09:31:52,269 INFO [decode.py:852] About to create model
2024-08-12 09:31:52,570 INFO [decode.py:919] Calculating the averaged model over epoch range from 29 (excluded) to 30
2024-08-12 09:32:01,414 INFO [decode.py:1013] Number of model parameters: 28704951
2024-08-12 09:32:01,415 INFO [asr_datamodule_AR.py:431] About to get test_langet cuts
2024-08-12 09:32:11,025 INFO [decode.py:707] batch 0/?, cuts processed until now is 20
2024-08-12 09:33:10,155 INFO [zipformer.py:1858] name=None, attn_weights_entropy = tensor([2.2931, 2.3074, 1.7622, 2.2046, 1.8048, 2.2486, 2.3794, 2.0546],
       device='cuda:0')
2024-08-12 09:33:13,934 INFO [decode.py:707] batch 20/?, cuts processed until now is 388
2024-08-12 09:33:19,038 INFO [decode.py:723] The transcripts are stored in zipformer/exp_500_30ep_medium_AR_causal/modified_beam_search/recogs-test_langet-beam
_size_4-epoch-30-avg-1-chunk-32-left-context-128-modified_beam_search-beam-size-4-use-averaged-model.txt
2024-08-12 09:33:19,060 INFO [utils.py:657] [test_langet-beam_size_4] %WER 25.40% [3478 / 13693, 622 ins, 745 del, 2111 sub ]
2024-08-12 09:33:19,107 INFO [decode.py:736] Wrote detailed error stats to zipformer/exp_500_30ep_medium_AR_causal/modified_beam_search/errs-test_langet-beam_s
ize_4-epoch-30-avg-1-chunk-32-left-context-128-modified_beam_search-beam-size-4-use-averaged-model.txt
2024-08-12 09:33:19,117 INFO [decode.py:752]
For test_langet, WER of different settings are:
beam_size_4     25.4    best for test_langet
csukuangfj commented 5 days ago

Could you change the --chunk-size of streaming_decode.py?

kfmn commented 5 days ago

I tried different values but without any substantial effect. Do you want to compare outputs with different chunk size? Which chunk_size should I set?

csukuangfj commented 5 days ago

One of the values in https://github.com/k2-fsa/icefall/blob/329e34ac204bfedf7d4169ca4ccd295de7ff8aac/egs/librispeech/ASR/zipformer/train.py#L272 except -1

kfmn commented 5 days ago

This is a log of the run with chunk size 32:

2024-09-11 10:20:18,449 INFO [streaming_decode_AR.py:722] Decoding started                                                                                         2024-09-11 10:20:18,450 INFO [streaming_decode_AR.py:728] Device: cuda:0
2024-09-11 10:20:18,511 INFO [streaming_decode_AR.py:738] {'best_train_loss': inf, 'best_valid_loss': inf, 'best_train_epoch': -1, 'best_valid_epoch': -1, 'batch_idx_train': 0, 'log_interval': 50, 'reset_interval': 200, 'valid_interval': 3000, 'feature_dim': 80, 'subsampling_factor': 4, 'warm_step': 2000, 'env_info': {'k2-version': '1.24.3', 'k2-build-type': 'Release', 'k2-with-cuda': True, 'k2-git-sha1': 'e400fa3b456faf8afe0ee5bfe572946b4921a3db', 'k2-git-date': 'Sat Jul 15 04:21:50 2023', 'lhotse-version': '1.23.0', 'torch-version': '2.0.1+cu117', 'torch-cuda-available': True, 'torch-cuda-version': '11.7', 'python-version': '3.8', 'icefall-git-branch': 'master', 'icefall-git-sha1': '1adf1e44-dirty', 'icefall-git-date': 'Tue May 21 13:22:19 2024', 'icefall-path': '/mnt/asr/korenevsky/k2-fsa_220524/icefall', 'k2-path': '/mnt/asr/home/korenevsky/anaconda3/envs/py38_k2new/lib/python3.8/site-packages/k2/__init__.py', 'lhotse-path': '/mnt/asr/home/korenevsky/anaconda3/envs/py38_k2new/lib/python3.8/site-packages/lhotse/__init__.py', 'hostname': 'nid-sc-34.ad.speechpro.com', 'IP address': '127.0.1.1'}, 'epoch': 30, 'iter': 0, 'avg': 1, 'use_averaged_model': True, 'exp_dir': PosixPath('zipformer/exp_500_30ep_medium_AR_causal'), 'bpe_model': 'data/lang_bpe_500/bpe.model', 'decoding_method': 'greedy_search', 'num_active_paths': 4, 'beam': 4, 'max_contexts': 4, 'max_states': 32, 'context_size': 2, 'num_decode_streams': 2000, 'num_encoder_layers': '2,2,3,4,3,2', 'downsampling_factor': '1,2,4,8,4,2', 'feedforward_dim': '512,768,1024,1536,1024,768', 'num_heads': '4,4,4,8,4,4', 'encoder_dim': '96,128,192,256,192,128', 'query_head_dim': '32', 'value_head_dim': '12', 'pos_head_dim': '4', 'pos_dim': 48, 'encoder_unmasked_dim': '96,96,128,128,128,96', 'cnn_module_kernel': '31,31,15,15,15,31', 'decoder_dim': 512, 'joiner_dim': 512, 'causal': True, 'chunk_size': '32', 'left_context_frames': '256', 'use_transducer': True, 'use_ctc': True, 'full_libri': True, 'mini_libri': False, 'manifest_dir': PosixPath('data/fbank_AR'), 'max_duration': 400, 'bucketing_sampler': True, 'num_buckets': 30, 'concatenate_cuts': False, 'duration_factor': 1.0, 'gap': 1.0, 'on_the_fly_feats': False, 'shuffle': True, 'drop_last': True, 'return_cuts': True, 'num_workers': 2, 'enable_spec_aug': True, 'spec_aug_time_warp_factor': 80, 'enable_musan': True, 'input_strategy': 'PrecomputedFeatures', 'res_dir': PosixPath('zipformer/exp_500_30ep_medium_AR_causal/streaming/greedy_search'), 'suffix': 'epoch-30-avg-1-chunk-32-left-context-256-use-averaged-model', 'blank_id': 0, 'unk_id': 2, 'vocab_size': 500}
2024-09-11 10:20:18,512 INFO [streaming_decode_AR.py:740] About to create model
2024-09-11 10:20:19,144 INFO [streaming_decode_AR.py:807] Calculating the averaged model over epoch range from 29 (excluded) to 30
2024-09-11 10:20:34,523 INFO [streaming_decode_AR.py:829] Number of model parameters: 28704951
2024-09-11 10:20:34,523 INFO [asr_datamodule_AR.py:448] About to get test_langet cuts
2024-09-11 10:20:34,526 INFO [asr_datamodule_AR.py:455] About to get test_ffcloud cuts
2024-09-11 10:20:36,323 INFO [streaming_decode_AR.py:611] Cuts processed until now is 0.
2024-09-11 10:20:37,341 INFO [streaming_decode_AR.py:611] Cuts processed until now is 100.
2024-09-11 10:20:38,440 INFO [streaming_decode_AR.py:611] Cuts processed until now is 200.
2024-09-11 10:20:39,509 INFO [streaming_decode_AR.py:611] Cuts processed until now is 300.
2024-09-11 10:20:40,591 INFO [streaming_decode_AR.py:611] Cuts processed until now is 400.
2024-09-11 10:20:58,970 INFO [streaming_decode_AR.py:655] The transcripts are stored in zipformer/exp_500_30ep_medium_AR_causal/streaming/greedy_search/recogs-test
_langet-greedy_search-epoch-30-avg-1-chunk-32-left-context-256-use-averaged-model.txt
2024-09-11 10:20:59,008 INFO [utils.py:657] [test_langet-greedy_search] %WER 98.44% [13480 / 13693, 3 ins, 13090 del, 387 sub ]
2024-09-11 10:20:59,124 INFO [streaming_decode_AR.py:668] Wrote detailed error stats to zipformer/exp_500_30ep_medium_AR_causal/streaming/greedy_search/errs-test_l
anget-greedy_search-epoch-30-avg-1-chunk-32-left-context-256-use-averaged-model.txt
2024-09-11 10:20:59,143 INFO [streaming_decode_AR.py:684]
For test_langet, WER of different settings are:
greedy_search   98.44   best for test_langet
kfmn commented 5 days ago

This is a recognition result:


%WER = 98.44                                                                                                                                                       Errors: 3 insertions, 13090 deletions, 387 substitutions, over 13693 reference words (216 correct)
Search below for sections starting with PER-UTT DETAILS:, SUBSTITUTIONS:, DELETIONS:, INSERTIONS:, PER-WORD STATS:

PER-UTT DETAILS: corr or (ref->hyp)
langet_14_18_26_d76f5987-fd47-476b-b6b2-7374692e49d8_1_8000_talk_null-0:        (Коля нашел да а у кого позаимствовали что там же были кисти так ясно уже уже радует хорошо понятно ну ясно ладно гоняй если что говори там я я буду разборки->▁)
langet_14_18_27_13acbae0-92ca-4cd6-8a71-5483e7969835_1_8000_talk_null-1:        (угу угу а что очень грязно было угу угу просто я же вроде когда позавчера мыла->▁)
langet_14_18_27_20afc5c8-41df-4017-ad19-e09fe25833a6_1_8000_talk_null-2:        (потому что я говорю сейчас->*) каникулы где кого по родителям (бегать искать может кто-то куда-то поехал->егу) сейчас выходные (да пятница кто в цирк кто куда уезжает поэтому я говорю что она сама сегодня в цирке ну поэтому->*)
langet_14_18_27_31c5089c-b3ee-4e14-8161-24550a13aaa2_1_8000_talk_null-3:        а у него не узнать что ли (ну давай так->*)
langet_14_18_27_7c4ff478-b0b5-4896-9230-28c5e7025a13_1_8000_talk_null-4:        (володь мой краскопульт пришел ой одной кистью так и красят->▁)
langet_14_18_27_95be8642-f3da-41f6-a514-a1e6d6701611_1_8000_talk_null-5:        (да Ванечка ты же знаешь чтобы на работе был очень спокоен знай что я тебя очень жду ладно и ни за что не переживай хорошо на работе ты должен быть спокойным ладно вот ну пока целую Ванечка тебя давай пока->▁)
langet_14_18_27_b3ea7c90-6f2b-4c83-b447-9ee3a991db90_1_8000_talk_null-6:        (да нормально только замерзла ночью пришлось двумя этими укрываться тулупами угу ну так нормально проснулась я легла кстати часов полдесятого наверное дак а что я там чуть-чуть посидела ушла->▁)
langet_14_18_27_c983f207-73c6-43eb-ba74-280587183b51_1_8000_talk_null-7:        (да так а Саша так и не приехал ясно ну понятно понятно я разговаривал с ним я почему и спрашиваю одной кисточкой а нашли->▁)
langet_14_18_27_eb9e42a8-68b4-424d-b389-3f46c2b5b45d_1_8000_talk_null-8:        (а да ты что->▁)
kfmn commented 3 days ago

It seems I've found a reason: I use my own fbank features which are slightly different from torchaudio fbanks, but streaming_decode.py loads raw audio and computes fbanks on-the-fly. As a result, on the first epochs when there is large uncertainty in the model it is able to somehow decode torchaudio fbanks but later, when uncertainty reduces, the decoding fails.

I've checked this hypothesis by just replacing fbank computation with a call to cut.load_features() and this worked almost the same as simulated streaming does!

It would be great to add some flag into streaming_decode.py to check if pre-computed features are used in cuts

csukuangfj commented 3 days ago

It's great to hear that you fix it.

By the way, I suggest you follow what we are doing in Icefall to extract features.

It can save you a lot of time when you want to deploy your model with Sherpa.