ESPNet2使用

如何使用pdb逐步调试ESPNet2

pdb不支持分布式训练,所以如果希望利用pdb进行调试,需要将对应数据集下面的enh.sh中的530-536行注释掉

#注释如下几行以运行pdb调试
${python} -m espnet2.bin.launch \
    --cmd "${cuda_cmd} --name ${jobname}" \
    --log "${enh_exp}"/train.log \
    --ngpu "${ngpu}" \
    --num_nodes "${num_nodes}" \
    --init_file_prefix "${enh_exp}"/.dist_init_ \
    --multiprocessing_distributed true -- \

再在想要逐步运行的位置加上pdb.set_trace(),最后可以选择在CPU上调试,或者GPU上调试:

#在CPU上调试
bash run.sh --stage 6 --stop_stage 6 
#在GPU上调试
srun -p 2080ti --gres=gpu:1 run.sh --stage 6 --stop_stage 6

如果希望在测试阶段(stage 7)进行调试,那么可以注释掉enh.sh中的的592行,并修改597行的keys.JOB.scpkeys.1.scp

#注释下面带{_cmd}的一行,并修keys.JOB.scp为keys.1.scp以运行pdb调试
${_cmd} --gpu "${_ngpu}" JOB=1:"${_nj}" "${_logdir}"/enh_inference.JOB.log \                               ${python} -m espnet2.bin.enh_inference \
        --ngpu "${_ngpu}" \
        --fs "${fs}" \
        --data_path_and_name_and_type "${_data}/${_scp},speech_mix,${_type}" \
        #--key_file "${_logdir}"/keys.JOB.scp \
        --key_file "${_logdir}"/keys.1.scp \
        --enh_train_config "${enh_exp}"/config.yaml \
        --enh_model_file "${enh_exp}"/"${inference_model}" \
        --output_dir "${_logdir}"/output.JOB \
        ${_opts} ${inference_args}

为了在CPU上运行调试,还需要修改espnet/espnet2/bin/enh_inference.py,在SeparateSpeech类的初始化函数最开始加上:

    def __init__(
        self,
        enh_train_config: Union[Path, str],
        enh_model_file: Union[Path, str] = None,
        segment_size: Optional[float] = None,
        hop_size: Optional[float] = None,
        normalize_segment_scale: bool = False,
        show_progressbar: bool = False,
        ref_channel: Optional[int] = None,
        normalize_output_wav: bool = False,
        device: str = "cpu",
        dtype: str = "float32",
    ):  
        assert check_argument_types()
        #pdb.set_trace()
        #加上下面两句以在CPU上运行调试    
        if device == 'cuda':
            device = 'cpu'

        # 1. Build Enh model
        enh_model, enh_train_args = EnhancementInformedTask.build_model_from_file(
            enh_train_config, enh_model_file, device
        )   
        enh_model.to(dtype=getattr(torch, dtype)).eval()

之后便可以通过下面的命令运行调试:

bash ./run.sh --stage 7 --stop-stage 7

如何为ESPNet新增一个Task

在ESPNet2框架下新增加一个任务,可以参考官方文档中有关task的说明。举例来说,若想要新增加一个增强任务,需要:

  • espnet/espnet2/enh目录下,仿照espnet_model.py创建一个与任务相关的新模型
  • espnet/espnet2/enh目录下的encoder,decoder,separator目录下创建新模型需要的模块:abs_needed_module.py, needed_module.py
  • espnet/espnet2/bin目录下,仿照enh_train.py, enh_inference.py, enh_scoring.py创建与新模型相关的文件
  • espnet/espnet2/task目录下,仿照enh.py创建与新任务相关的任务

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容

  • 在程序运行过程中,总会遇到各种各样的错误。 有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,...
    jbb_43b0阅读 840评论 0 0
  • 本文为最好用的免费ERP系统Odoo 12开发手册系列文章第八篇。 在前面的文章中,我们学习了模型层、如何创建应用...
    AlanHou阅读 1,064评论 0 2
  • 基本语法 输入输出 print / input 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Py...
    bitzoo阅读 1,658评论 0 0
  • 1. 通过python -m pytest调用pytest 你可以通过python的解释器来执行测试: 但是,这和...
    luizyao阅读 336评论 0 0
  • 高阶函数:将函数作为参数 sortted()它还可以接收一个key函数来实现自定义的排序,reversec参数可反...
    royal_47a2阅读 682评论 0 0