Closed qixing-ai closed 1 year ago
请问上传了吗?在哪个目录下呢?
你好,训练配置文件已上传至 espnet
目录下。
没有上游面对huggingface的配置文件吗
请问你的意思是,使用 huggingface 对 wav2vec2 模型进行 CTC finetune 的配置文件么? 我们下游任务都是基于 espnet 跑的,没有用 fairseq 或 huggingface 进行 CTC finetune。
您好: 根据配置文件在终端运行 CUDA_VISIBLE_DEVICES=2 ./run_ssl.sh --ngpu 1 2022-07-22T16:12:42 (asr.sh:252:main) ./asr.sh --ngpu 4 --stage 1 --stop_stage 13 --expdir exp/hubert-base --lang zh --audio_format wav --feats_type raw --token_type char --use_lm true --use_word_lm false --lm_config conf/train_lm_transformer.yaml --asr_config conf/train_asr_conformer_hubert-base.yaml --inference_config conf/decode_asr_rnn.yaml --gpu_inference true --train_set train --valid_set dev --test_sets dev test --speed_perturb_factors 0.9 1.0 1.1 --asr_speech_fold_length 512 --asr_text_fold_length 150 --lm_fold_length 150 --lm_train_text data/train/text --ngpu 1 2022-07-22T16:12:42 (asr.sh:443:main) Stage 1: Data preparation for data/train, data/dev, etc. 2022-07-22T16:12:42 (data.sh:27:main) local/data.sh 2022-07-22T16:12:42 (data.sh:68:main) Data Preparation 2022-07-22T16:12:43 (data.sh:93:main) Preparing data/local/train transcriptions 2022-07-22T16:12:44 (data.sh:93:main) Preparing data/local/dev transcriptions 2022-07-22T16:12:45 (data.sh:93:main) Preparing data/local/test transcriptions 2022-07-22T16:12:45 (data.sh:121:main) Successfully finished. [elapsed=3s] 2022-07-22T16:12:45 (asr.sh:450:main) Stage 2: Speed perturbation: data/train -> data/train_sp text utt2lang scripts/utils/perturb_data_dir_speed.sh: generated speed-perturbed version of data in data/train, in data/train_sp0.9 fix_data_dir.sh: kept all 120098 utterances. fix_data_dir.sh: old files are kept in data/train_sp0.9/.backup utils/validate_data_dir.sh: Successfully validated data-directory data/train_sp0.9 text utt2lang scripts/utils/perturb_data_dir_speed.sh: generated speed-perturbed version of data in data/train, in data/train_sp1.1 fix_data_dir.sh: kept all 120098 utterances. fix_data_dir.sh: old files are kept in data/train_sp1.1/.backup utils/validate_data_dir.sh: Successfully validated data-directory data/train_sp1.1 utils/combine_data.sh data/train_sp data/train_sp0.9 data/train data/train_sp1.1 utils/combine_data.sh: combined utt2uniq utils/combine_data.sh [info]: not combining segments as it does not exist utils/combine_data.sh: combined utt2spk utils/combine_data.sh [info]: not combining utt2lang as it does not exist utils/combine_data.sh [info]: not combining utt2dur as it does not exist utils/combine_data.sh [info]: not combining utt2num_frames as it does not exist utils/combine_data.sh [info]: not combining reco2dur as it does not exist utils/combine_data.sh [info]: not combining feats.scp as it does not exist utils/combine_data.sh: combined text utils/combine_data.sh [info]: not combining cmvn.scp as it does not exist utils/combine_data.sh [info]: not combining vad.scp as it does not exist utils/combine_data.sh [info]: not combining reco2file_and_channel as it does not exist utils/combine_data.sh: combined wav.scp utils/combine_data.sh [info]: not combining spk2gender as it does not exist fix_data_dir.sh: kept all 360294 utterances. fix_data_dir.sh: old files are kept in data/train_sp/.backup 2022-07-22T16:13:07 (asr.sh:472:main) Stage 3: Format wav.scp: data/ -> dump/raw utils/copy_data_dir.sh: copied data from data/train_sp to dump/raw/org/train_sp utils/validate_data_dir.sh: Successfully validated data-directory dump/raw/org/train_sp 2022-07-22T16:13:15 (format_wav_scp.sh:42:main) scripts/audio/format_wav_scp.sh --nj 10 --cmd run.pl --audio-format wav --fs 16k data/train_sp/wav.scp dump/raw/org/train_sp 2022-07-22T16:13:15 (format_wav_scp.sh:110:main) [info]: without segments
到stage 3 就类似没响应,也不会报错。且服务器会变得异常卡顿 在../espnet/egs2/aishell/asr1/dump/raw/org/train_sp/logs:会显示 sox WARN wav: Length in output .wav header will be wrong since can't seek to fix it 请问这是什么问题呢
你好,一般 ESPnet 第三步涉及根据 wav.scp 文件,对 wav 进行处理,比如变速、切分,处理后会存在 dump 目录下。一般情况下,根据数据量大小,这步比较耗时。sox WARN
这个不用管他,不影响训练。
你好,一般 ESPnet 第三步涉及根据 wav.scp 文件,对 wav 进行处理,比如变速、切分,处理后会存在 dump 目录下。一般情况下,根据数据量大小,这步比较耗时。
sox WARN
这个不用管他,不影响训练。
您好,我想请问一下我的代码运行到这一步之后报错是怎么回事?刚开始以为是因为nj太大了,所以把asr.sh里的nj调成了8。但还是报错如下: 查看log文件夹里的文件有部分未报错,另一部分报错显示:
# 2023-07-07 14:49:02,318 (format_wav_scp:68) INFO: /opt/conda/envs/espnet/bin/python3 pyscripts/audio/format_wav_scp.py --fs 16k --audio-format wav dump/raw/org/train_sp/logs/wav.5.scp dump/raw/org/train_sp/data/format.5
0it [00:00, ?it/s]sox WARN wav: Length in output .wav header will be wrong since can't seek to fix it
0it [00:00, ?it/s]
Traceback (most recent call last):
File "pyscripts/audio/format_wav_scp.py", line 289, in
请问您知道这是怎么造成的吗?已经苦恼很久了。
@sst0715 你好,你这个看起来跑的是 librimix 么?麻烦具体说下跑的是什么实验,是 espnet/egs2/librimix 么? 看日志报错中,“soundfile.LibsndfileError: Error opening 'dump/raw/org/train_sp/data/format.5/data_wav/sp0.9-data/LibriMix/libri_mix_single_offset/Libri2Mix/wav16k/max/metadata/mixture_train-360_mix_both.csv:353-128309-0002_4071-39616-0023.wav'”,wav 的路径不是一个合法的路径 “dump/raw/org/train_sp/data/format.5/data_wav/sp0.9-data/LibriMix/libri_mix_single_offset/Libri2Mix/wav16k/max/metadata/mixture_train-360_mix_both.csv:353-128309-0002_4071-39616-0023.wav”,所以 soundfile 无法打开。
@sst0715 你好,你这个看起来跑的是 librimix 么?麻烦具体说下跑的是什么实验,是 espnet/egs2/librimix 么? 看日志报错中,“soundfile.LibsndfileError: Error opening 'dump/raw/org/train_sp/data/format.5/data_wav/sp0.9-data/LibriMix/libri_mix_single_offset/Libri2Mix/wav16k/max/metadata/mixture_train-360_mix_both.csv:353-128309-0002_4071-39616-0023.wav'”,wav 的路径不是一个合法的路径 “dump/raw/org/train_sp/data/format.5/data_wav/sp0.9-data/LibriMix/libri_mix_single_offset/Libri2Mix/wav16k/max/metadata/mixture_train-360_mix_both.csv:353-128309-0002_4071-39616-0023.wav”,所以 soundfile 无法打开。
您好,是的。是espnet/egs2/librimix/sot_asr1。这个路径是有问题,去找的话找不到对应的文件,但我不知道要从哪里下手改😥
okok。
这里原因我理解的是不同 grep 版本或者不同 linux 系统,导致 grep 默认会输出搜索文件名。grep -h
除去文件名。
可以先试试可以么。
okok。
- 首先,看下 data 目录下生成的 train,dev,test 这些目录里的 wav.scp,text 文件格式,正常应该是 "uttid wavpath/transcript";
- 如果 uttid 是上面那种有问题的,可以去 local/data.sh 中,尝试改一下代码,如图所示
这里原因我理解的是不同 grep 版本或者不同 linux 系统,导致 grep 默认会输出搜索文件名。
grep -h
除去文件名。可以先试试可以么。
收到,感谢您!这就去试试!
okok。
- 首先,看下 data/{train, dev, text} 这些目录里的 {wav.scp, text} 文件格式,正常应该是 "uttid wavpath/transcript";
- 如果 uttid 是上面那种有问题的,可以去 local/data.sh 中,尝试改一下代码,如图所示
这里原因我理解的是不同 grep 版本或者不同 linux 系统,导致 grep 默认会输出搜索文件名。
grep -h
除去文件名。可以先试试可以么。
您好!我根据您上次提供的这个办法修改了代码,结果已经成功运行了stage5,非常感谢!在他继续运行的过程中出了一点别的小问题,我修改完成后现在已经运行到stage10了,显示如下。 在文件夹中可以看见生成了log文件夹中内容如下。 我昨天运行过一次了,卡在log8的地方,等了一个晚上今天早上看还是没动,也没有用到GPU资源。于是我修改了asr.sh让它从stage5重新开始运行,但现在在这个地方等了大概6个小时也没有动,点开stats文件夹里train文件夹中的文件大小都为0。想请问您这是正常的吗?还是可能出现了一些问题?感谢您的回复。
@sst0715 你好,
首先保证 stage 1 - stage 5(data preparation、speed perturbation、format data、remove long data、generate dict)没错。然后 stage10 是统计 cmvn,可以从两方面查找你的问题:
--feats_normalize utterance_mvn
或者 --feats_normalize ""
(怎么都行,只要说明不用 global cmvn就行),然后 train config 中加入如下
表示在进行 stage 10 的时候,不需要统计 stats。
你可以先试试看。
@sst0715 你好,
首先保证 stage 1 - stage 5(data preparation、speed perturbation、format data、remove long data、generate dict)没错。然后 stage10 是统计 cmvn,可以从两方面查找你的问题:
- 看看所有的 stats.*.log,看看输出什么日志,程序断掉的原因是不是因为网络问题,wavlm 下载不下来,或者 wavlm 只下载了一半,导致读取的 wavlm 模型有问题;
- 对于使用 wavlm 作为 frontend,其实不需要统计 cmvn。针对这种不需要统计 cmvn 的情况,ESPnet 最近更新了下,你可以在 run.sh 里面写明
--feats_normalize utterance_mvn
或者--feats_normalize ""
(怎么都行,只要说明不用 global cmvn就行),然后 train config 中加入如下表示在进行 stage 10 的时候,不需要统计 stats。 你可以先试试看。
收到,我去排查一下。谢谢您的回复!
@sst0715 你好,
首先保证 stage 1 - stage 5(data preparation、speed perturbation、format data、remove long data、generate dict)没错。然后 stage10 是统计 cmvn,可以从两方面查找你的问题:
- 看看所有的 stats.*.log,看看输出什么日志,程序断掉的原因是不是因为网络问题,wavlm 下载不下来,或者 wavlm 只下载了一半,导致读取的 wavlm 模型有问题;
- 对于使用 wavlm 作为 frontend,其实不需要统计 cmvn。针对这种不需要统计 cmvn 的情况,ESPnet 最近更新了下,你可以在 run.sh 里面写明
--feats_normalize utterance_mvn
或者--feats_normalize ""
(怎么都行,只要说明不用 global cmvn就行),然后 train config 中加入如下表示在进行 stage 10 的时候,不需要统计 stats。 你可以先试试看。
抱歉再次打扰您。在您的帮助下我已经完成了stage11的训练,但现在又遇到了一些问题,我在espnet的issue中搜寻了关键字,只有一个相关问题,与我的问题不尽相同,chatGPT也不能很好地帮助我解决问题。如果您能指点一下的话感激不尽。 代码已经运行到stage12的阶段,以下是报错信息: 再次感谢。
@sst0715 你好,
这个问题我没遇到过,我大部分都是 CPU 解码。通过截图可以看出来你是使用 GPU 解码,问题在于不同 tensor 有的是 CPU 类型有的是 CUDA 类型。我建议可以:
inference_nj=32
多进程;./run.sh --gpu_inference=true --inference_nj=1
;我使用过 GPU 解码得到 1best 没有问题。如果你跑的是解码得到 nbest 而不 1 best,也有可能是代码本身存在 bug,没考虑 nbest 时 index 索引 device type 问题。
@sst0715 你好,
这个问题我没遇到过,我大部分都是 CPU 解码。通过截图可以看出来你是使用 GPU 解码,问题在于不同 tensor 有的是 CPU 类型有的是 CUDA 类型。我建议可以:
- 使用 CPU 解码看看,虽然 CPU 解码慢,但可以通过
inference_nj=32
多进程;- 或者使用一个 job GPU 解码,通过
./run.sh --gpu_inference=true --inference_nj=1
;我使用过 GPU 解码得到 1best 没有问题。如果你跑的是解码得到 nbest 而不 1 best,也有可能是代码本身存在 bug,没考虑 nbest 时 index 索引 device type 问题。
收到。我再调试一下,感谢您的回复。
你好,稍作整理后会上传上去。ESPnet 中已支持将预训练模型作为 frontend 进行特征提取,然后输入 Conformer ASR 模型的训练。可以在 Aishell Conformer 配置文件中添加
然后修改
encoder_conf.input_layer
为conv2d2
,如进行训练。