Tele-AI / TeleSpeech-ASR

382 stars 37 forks source link

执行prepare_kaldi_feats.sh后,如何生成 .tsv 结尾的文件? #27

Open ghost opened 4 weeks ago

ghost commented 4 weeks ago

【问题】 按照项目描述操作,运行prepare_kaldi_feats.sh后没有生成.tsv 结尾的文件,请问这个文件怎么生成?

【项目描述如下】 1、利用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即可 2、利用kaldi提取音频特征,并保存为以 .tsv 结尾的文件,格式参考特征提取

【执行prepare_kaldi_feats.sh结果如下】 root@kaldiasr:/data/projects/TeleSpeech-ASR/kaldi/egs/wsj/s5# sh prepare_kaldi_feats.sh
Usage: utils/split_data.sh [--per-utt] E.g.: utils/split_data.sh data/train 50 It creates its output in e.g. data/train/split50/{1,2,3,...50}, or if the --per-utt option was given, in e.g. data/train/split50utt/{1,2,3,...50}.

This script will not split the data-dir if it detects that the output is newer than the input. By default it splits per speaker (so each speaker is in only one split dir), but with the --per-utt option it will ignore the speaker information while splitting. /opt/kaldi/src/featbin/feat-to-len scp,p:/data/projects/TeleSpeech-ASR/input/feat/mfcc.1.scp ark,t:/data/projects/TeleSpeech-ASR/input/feat/feat2len.1.txt

【目录生成的文件如下】 ls /data/projects/TeleSpeech-ASR/input/feat feat2len.1.txt feat2len.txt log mfcc.1.ark mfcc.1.scp mfcc.scp

oslijunw commented 4 weeks ago

kaldiio读取后输出,问gpt

ghost commented 4 weeks ago

【问GPT后把mfcc.scp格式文件转化成train.tsv,数据格式如下,请问这是正确的格式吗?】 root@kaldiasr:/data/projects/TeleSpeech-ASR/kaldi/egs/wsj/s5# head -n 3 /data/projects/TeleSpeech-ASR/input/feat/train.tsv asr_test [ 34.31433 -43.6847 -9.434816 -6.438321 -13.9585 -12.08335 0.2118923 4.034989 11.38309 -3.023423 -0.1831741 -6.485701 7.135592 -2.469304 7.2732120.6923676 -0.4506593 5.475143 -4.914721 -5.454227 -3.934708 -0.6982036 -0.6775489 0.1989089 0.2278999 -0.7399144 -2.728504 -0.5350432 2.640341 -1.41435-7.865545 -0.7401671 0.6569986 2.376232 -0.1293406 -0.8654761 -1.135169 -0.2898748 -2.198947 0.4773395 34.31433 -42.96822 -4.662971 -10.06608 -1.716475 -2.087873 -5.937513 1.96699 4.971458 4.650856 6.254261 8.165431 2.515198 7.495618 -2.605297 0.3778801 5.761924 -2.04345 -7.744732 -1.43625 0.4990892 -1.309693 -0.2049438 -0.29071 -0.570682 -0.5031126 0.2596655 2.532393 -0.5489945 -3.217632.525857 5.964422 2.449999 4.221416 -3.13483 -0.2721386 -0.5463285 -1.429754 0.9634542 -1.157004

【decode.sh代码如下】 . ../path.sh || exit 1

data=/data/projects/TeleSpeech-ASR/input/feat model=/data/download/TeleSpeech-ASR1.0/finetune_large_kespeech.pt result_path=/data/download/TeleSpeech-ASR1.0/decode_result python /data/projects/TeleSpeech-ASR/data2vec_dialect/infer.py --config-dir /data/projects/TeleSpeech-ASR/data2vec_dialect/config/v2_dialect_asr --config-name infer task=spec_finetuning task.data=${data} task.normalize=false common.user_dir=/data/projects/TeleSpeech-ASR/data2vec_dialect common_eval.path=${model} common_eval.results_path=${result_path} common_eval.quiet=false dataset.gen_subset=train

【对应目录如下】

ls /data/projects/TeleSpeech-ASR/input/feat feat2len.1.txt feat2len.txt log mfcc.1.ark mfcc.1.scp mfcc.scp mfcc.tsv train.tsv

ls /data/download/TeleSpeech-ASR1.0/finetune_large_kespeech.pt /data/download/TeleSpeech-ASR1.0/finetune_large_kespeech.pt

ls /data/download/TeleSpeech-ASR1.0/decode_result train

ls /data/download/TeleSpeech-ASR1.0/decode_result/train/ infer.log

【根据上面的train.tsv执行decode.sh,有如下的报错,麻烦看看是什么问题?】 (asr) root@asr:/data/projects/TeleSpeech-ASR/data2vec_dialect/run_scripts# bash decode.sh 2024-06-06 01:29:27 | INFO | main | import user_dir: /data/projects/TeleSpeech-ASR/data2vec_dialect [2024-06-06 01:29:28,404][main][INFO] - /data/download/TeleSpeech-ASR1.0/finetune_large_kespeech.pt [2024-06-06 01:29:31,235][data2vec_dialect.models.data2vec2][INFO] - making target model /root/anaconda3/envs/asr/lib/python3.10/site-packages/torch/nn/modules/module.py:1898: UserWarning: Positional args are being deprecated, use kwargs instead. Refer to https://pytorch.org/docs/master/generated/torch.nn.Module.html#torch.nn.Module.state_dict for details. warnings.warn( [2024-06-06 01:29:34,580][data2vec_dialect.data.spec_dataset][INFO] - loaded 0, skipped 0 samples [2024-06-06 01:29:34,783][fairseq.tasks.fairseq_task][INFO] - can_reuse_epoch_itr = True [2024-06-06 01:29:34,784][fairseq.tasks.fairseq_task][INFO] - reuse_dataloader = True [2024-06-06 01:29:34,784][fairseq.tasks.fairseq_task][INFO] - rebuild_batches = True [2024-06-06 01:29:34,784][fairseq.tasks.fairseq_task][INFO] - batches will be rebuilt for each epoch [2024-06-06 01:29:34,784][fairseq.tasks.fairseq_task][INFO] - creating new batches for epoch 1 [2024-06-06 01:29:34,785][main][INFO] - Processed 0 sentences (0 tokens) in 0.0s 0.00 sentences per second, 1000000.00 tokens per second) Traceback (most recent call last): File "/root/anaconda3/envs/asr/lib/python3.10/site-packages/hydra/_internal/utils.py", line 198, in run_and_report return func() File "/root/anaconda3/envs/asr/lib/python3.10/site-packages/hydra/_internal/utils.py", line 347, in lambda: hydra.run( File "/root/anaconda3/envs/asr/lib/python3.10/site-packages/hydra/_internal/hydra.py", line 107, in run return run_job( File "/root/anaconda3/envs/asr/lib/python3.10/site-packages/hydra/core/utils.py", line 129, in run_job ret.return_value = task_function(task_cfg) File "/data/projects/TeleSpeech-ASR/data2vec_dialect/infer.py", line 464, in hydra_main distributed_utils.call_main(cfg, main) File "/data/projects/TeleSpeech-ASR/fairseq/fairseq/distributed/utils.py", line 404, in call_main main(cfg, *kwargs) File "/data/projects/TeleSpeech-ASR/data2vec_dialect/infer.py", line 430, in main wer = errs_t 100.0 / leng_t ZeroDivisionError: float division by zero

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/data/projects/TeleSpeech-ASR/data2vec_dialect/infer.py", line 518, in cli_main() File "/data/projects/TeleSpeech-ASR/data2vec_dialect/infer.py", line 514, in cli_main hydra_main() # pylint: disable=no-value-for-parameter File "/root/anaconda3/envs/asr/lib/python3.10/site-packages/hydra/main.py", line 32, in decorated_main _run_hydra( File "/root/anaconda3/envs/asr/lib/python3.10/site-packages/hydra/_internal/utils.py", line 346, in _run_hydra run_and_report( File "/root/anaconda3/envs/asr/lib/python3.10/site-packages/hydra/_internal/utils.py", line 267, in run_and_report print_exception(etype=None, value=ex, tb=final_tb) # type: ignore TypeError: print_exception() got an unexpected keyword argument 'etype'

XiaoYu2022 commented 4 weeks ago

同问,有人可以帮忙回答一下吗,我也是不知道如何生成正确格式的tsv文件,然后就出现了ZeroDivisionError: float division by zero的报错,希望可以得到解答

moodeerf commented 4 weeks ago

同问,有人可以帮忙回答一下吗,我也是不知道如何生成正确格式的tsv文件,然后就出现了ZeroDivisionError: float division by zero的报错,希望可以得到解答

prepare_kaldi_feats.sh 之后,执行make_datalist.py,会生成data.list,然后将data.list重命名为data.tsv,我是这样跑通decode.sh的

XiaoYu2022 commented 4 weeks ago

同问,有人可以帮忙回答一下吗,我也是不知道如何生成正确格式的tsv文件,然后就出现了ZeroDivisionError: float division by zero的报错,希望可以得到解答

prepare_kaldi_feats.sh 之后,执行make_datalist.py,会生成data.list,然后将data.list重命名为data.tsv,我是这样跑通decode.sh的

跑通了,谢谢您!祝好!

oslijunw commented 4 weeks ago

@moodeerf

# make_datalist.py
text_file = os.path.join(data_dir, "text") 

麻烦问一下这边的text是什么 没有相关文件

moodeerf commented 4 weeks ago

@moodeerf

# make_datalist.py
text_file = os.path.join(data_dir, "text") 

麻烦问一下这边的text是什么 没有相关文件

测试音频的label列表

ghost commented 4 weeks ago

@moodeerf

# make_datalist.py
text_file = os.path.join(data_dir, "text") 

麻烦问一下这边的text是什么 没有相关文件

这个文件是自己写的格式类似于下面: echo "asryy_test /data/projects/TeleSpeech-ASR/input/asr_example_zh.wav" > /data/projects/TeleSpeech-ASR/input/text

TTTdas commented 4 weeks ago

@moodeerf

# make_datalist.py
text_file = os.path.join(data_dir, "text") 

麻烦问一下这边的text是什么 没有相关文件

text是音频的答案文本,为了统计CER和微调使用的。如果不需要统计CER,只需要跑通推理拿到结果的话,可以随意给。也就是data.list中,token、text的信息只要保证有值就好