我在使用asv-subtools运行cnsrc-sv-scoreSets_sv.sh的时候,报告以下的错误
cat: data/fbank_81/eval_test/trials/trials.lst: No such file or directory
这里报错说我缺少了trials.lst文件。
没有找到生成文件的代码。所以自己学着生成了以下trials.lst
trials.lst的内容就是每一个注册集要和测试集进行比配,并打上标签(同一个说话人,就是target,反之则为nontarget
以下就是代码
#!/bin/bash cat temp.lst | awk -F ' ' '{printf("%s\n",$1)}' | awk -F '-' '{printf("%s\n",$1)}' > enroll_id.lst cat temp.lst | awk -F ' ' '{printf("%s\n",$2)}' | awk -F '/' '{printf("%s\n",$2)}' | sed 's|.wav||' > test_temp.lst paste -d' ' enroll_id.lst test_temp.lst > trials_temp.lst python3 target.py paste -d' ' trials_temp.lst target.lst > trials.lst rm enroll_id.lst rm test_temp.lst rm trials_temp.lst rm target.lst
trials1 = open(r"/ssdhome/jyt522/kaldi/egs/xmuspeech/sre/data/fbank_81/eval_test/trials/trials_temp.lst",'r') trials1_list = list(trials1) str = [] for line in trials1_list: if line.split(' ')[0] == line.split(" ")[1].split('-')[0]: str.append("target") else: str.append("nontarget") with open(r"/ssdhome/jyt522/kaldi/egs/xmuspeech/sre/data/fbank_81/trials/target.lst",'w')as file:#输出文件 file.write("\n".join(str))
shell和python结合起来的小脚本就可以生成对应的trials.lst
注意:写python的时候,要注意输出列表格式,否则就会没有数据