From 7664f364e6ed31b0be12f9107b4bd8b8be34dadd Mon Sep 17 00:00:00 2001
From: 志浩 <neo.dzh@alibaba-inc.com>
Date: 星期三, 02 八月 2023 14:52:28 +0800
Subject: [PATCH] TOLD/SOND: modify data preprocessing
---
egs/callhome/diarization/sond/finetune.sh | 52 +++++++++++++++++++++++++++-------------------------
1 files changed, 27 insertions(+), 25 deletions(-)
diff --git a/egs/callhome/diarization/sond/finetune.sh b/egs/callhome/diarization/sond/finetune.sh
index cd887b8..5a4842d 100644
--- a/egs/callhome/diarization/sond/finetune.sh
+++ b/egs/callhome/diarization/sond/finetune.sh
@@ -30,6 +30,13 @@
ln -s ${kaldi_root}/egs/callhome_diarization/v2/utils ./utils
fi
+# callhome data root like path/to/NIST/LDC2001S97
+callhome_root=
+if [ -z "${kaldi_root}" ]; then
+ echo "We need callhome corpus to prepare data."
+ exit;
+fi
+
# machines configuration
gpu_devices="0,1,2,3" # for V100-16G, need 4 gpus.
gpu_num=4
@@ -41,9 +48,6 @@
# number of jobs for data process
nj=16
sr=8000
-
-# dataset related
-callhome_root=path/to/NIST/LDC2001S97
# experiment configuration
lang=en
@@ -97,15 +101,18 @@
# split ref.rttm
for dset in callhome1 callhome2; do
- rm -rf data/${dset}/ref.rttm
- for name in `awk '{print $1}' data/${dset}/wav.scp`; do
- grep ${name} data/callhome/fullref.rttm >> data/${dset}/ref.rttm;
+ rm -rf ${datadir}/${dset}/ref.rttm
+ for name in `awk '{print $1}' ${datadir}/${dset}/wav.scp`; do
+ grep ${name} ${datadir}/callhome/fullref.rttm >> ${datadir}/${dset}/ref.rttm;
done
# filter out records which don't have rttm labels.
- awk '{print $2}' data/${dset}/ref.rttm | sort | uniq > data/${dset}/uttid
- mv data/${dset}/wav.scp data/${dset}/wav.scp.bak
- awk '{if (NR==FNR){a[$1]=1}else{if (a[$1]==1){print $0}}}' data/${dset}/uttid data/${dset}/wav.scp.bak > data/${dset}/wav.scp
+ awk '{print $2}' ${datadir}/${dset}/ref.rttm | sort | uniq > ${datadir}/${dset}/uttid
+ mv ${datadir}/${dset}/wav.scp ${datadir}/${dset}/wav.scp.bak
+ awk '{if (NR==FNR){a[$1]=1}else{if (a[$1]==1){print $0}}}' ${datadir}/${dset}/uttid ${datadir}/${dset}/wav.scp.bak > ${datadir}/${dset}/wav.scp
+ mkdir ${datadir}/${dset}/raw
+ mv ${datadir}/${dset}/{reco2num_spk,segments,spk2utt,utt2spk,uttid,wav.scp.bak} ${datadir}/${dset}/raw/
+ awk '{print $1,$1}' ${datadir}/${dset}/wav.scp > ${datadir}/${dset}/utt2spk
done
fi
@@ -157,16 +164,9 @@
ln -s ${kaldi_root}/egs/callhome_diarization/v2/steps ./
for dset in callhome1 callhome2; do
- mv ${datadir}/${dset}/segments ${datadir}/${dset}/segs
+ utils/fix_data_dir.sh ${datadir}/${dset}
steps/make_fbank.sh --write-utt2num-frames true --fbank-config conf/fbank.conf --nj ${nj} --cmd "$train_cmd" \
${datadir}/${dset} ${expdir}/make_fbank/${dset} ${dumpdir}/${dset}/fbank
- utils/fix_data_dir.sh ${datadir}/${dset}
- done
-
- for dset in callhome1/nonoverlap_0s callhome2/nonoverlap_0s; do
- steps/make_fbank.sh --write-utt2num-frames true --fbank-config conf/fbank.conf --nj ${nj} --cmd "$train_cmd" \
- ${datadir}/${dset} ${expdir}/make_fbank/${dset} ${dumpdir}/${dset}/fbank
- utils/fix_data_dir.sh ${datadir}/${dset}
done
rm -f steps
@@ -174,14 +174,16 @@
if [ ${stage} -le 4 ] && [ ${stop_stage} -ge 4 ]; then
echo "Stage 4: Extract speaker embeddings."
- git lfs install
- git clone https://www.modelscope.cn/damo/speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch.git
- mv speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch ${expdir}/
-
sv_exp_dir=exp/speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch
- sed "s/input_size: null/input_size: 80/g" ${sv_exp_dir}/sv.yaml > ${sv_exp_dir}/sv_fbank.yaml
+
+ if [ ! -e ${sv_exp_dir} ]; then
+ git lfs install
+ git clone https://www.modelscope.cn/damo/speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch.git
+ mv speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch ${expdir}/
+ fi
+
for dset in callhome1/nonoverlap_0s callhome2/nonoverlap_0s; do
- key_file=${datadir}/${dset}/feats.scp
+ key_file=${datadir}/${dset}/wav.scp
num_scp_file="$(<${key_file} wc -l)"
_nj=$([ $inference_nj -le $num_scp_file ] && echo "$inference_nj" || echo "$num_scp_file")
_logdir=${dumpdir}/${dset}/xvecs
@@ -199,9 +201,9 @@
--njob ${njob} \
--ngpu "${_ngpu}" \
--gpuid_list ${gpuid_list} \
- --data_path_and_name_and_type "${key_file},speech,kaldi_ark" \
+ --data_path_and_name_and_type "${key_file},speech,sound" \
--key_file "${_logdir}"/keys.JOB.scp \
- --sv_train_config ${sv_exp_dir}/sv_fbank.yaml \
+ --sv_train_config ${sv_exp_dir}/sv.yaml \
--sv_model_file ${sv_exp_dir}/sv.pth \
--output_dir "${_logdir}"/output.JOB
cat ${_logdir}/output.*/xvector.scp | sort > ${datadir}/${dset}/utt2xvec
--
Gitblit v1.9.1