]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - processor-sdk/kaldi.git/blob - egs/sre16/v1/local/make_swbd2_phase3.pl
[src,scripts,egs] Xvectors: DNN Embeddings for Speaker Recognition (#1896)
[processor-sdk/kaldi.git] / egs / sre16 / v1 / local / make_swbd2_phase3.pl
1 #!/usr/bin/perl
2 use warnings; #sed replacement for -w perl parameter
3 #
4 # Copyright   2013   Daniel Povey
5 # Apache 2.0
7 if (@ARGV != 2) {
8   print STDERR "Usage: $0 <path-to-LDC2002S06> <path-to-output>\n";
9   print STDERR "e.g. $0 /export/corpora5/LDC/LDC2002S06 data/swbd2_phase3_train\n";
10   exit(1);
11 }
12 ($db_base, $out_dir) = @ARGV;
14 if (system("mkdir -p $out_dir")) {
15   die "Error making directory $out_dir";
16 }
18 open(CS, "<$db_base/DISC1/docs/callstat.tbl") || die  "Could not open $db_base/DISC1/docs/callstat.tbl";
19 open(GNDR, ">$out_dir/spk2gender") || die "Could not open the output file $out_dir/spk2gender";
20 open(SPKR, ">$out_dir/utt2spk") || die "Could not open the output file $out_dir/utt2spk";
21 open(WAV, ">$out_dir/wav.scp") || die "Could not open the output file $out_dir/wav.scp";
23 @badAudio = ("3", "4");
25 $tmp_dir = "$out_base/tmp";
26 if (system("mkdir -p $tmp_dir") != 0) {
27   die "Error making directory $tmp_dir";
28 }
30 if (system("find $db_base -name '*.sph' > $tmp_dir/sph.list") != 0) {
31   die "Error getting list of sph files";
32 }
34 open(WAVLIST, "<$tmp_dir/sph.list") or die "cannot open wav list";
35 while(<WAVLIST>) {
36   chomp;
37   $sph = $_;
38   @t = split("/",$sph);
39   @t1 = split("[./]",$t[$#t]);
40   $uttId=$t1[0];
41   $wav{$uttId} = $sph;
42 }
44 while (<CS>) {
45   $line = $_ ;
46   @A = split(",", $line);
47   $wav = "sw_" . $A[0] ;
48   if (/$wav/i ~~ @badAudio) {
49     # do nothing
50   } else {
51     $spkr1= "sw_" . $A[3];
52     $spkr2= "sw_" . $A[4];
53     $gender1 = $A[5];
54     $gender2 = $A[6];
55     if ($gender1 eq "M") {
56       $gender1 = "m";
57     } elsif ($gender1 eq "F") {
58       $gender1 = "f";
59     } else {
60       die "Unknown Gender in $line";
61     }
62     if ($gender2 eq "M") {
63       $gender2 = "m";
64     } elsif ($gender2 eq "F") {
65       $gender2 = "f";
66     } else {
67       die "Unknown Gender in $line";
68     }
69     if (-e "$wav{$wav}") {
70       $uttId = $spkr1 ."_" . $wav ."_1";
71       if (!$spk2gender{$spkr1}) {
72         $spk2gender{$spkr1} = $gender1;
73         print GNDR "$spkr1"," $gender1\n";
74       }
75       print WAV "$uttId"," sph2pipe -f wav -p -c 1 $wav{$wav} |\n";
76       print SPKR "$uttId"," $spkr1","\n";
78       $uttId = $spkr2 . "_" . $wav ."_2";
79       if (!$spk2gender{$spkr2}) {
80         $spk2gender{$spkr2} = $gender2;
81         print GNDR "$spkr2"," $gender2\n";
82       }
83       print WAV "$uttId"," sph2pipe -f wav -p -c 2 $wav{$wav} |\n";
84       print SPKR "$uttId"," $spkr2","\n";
85     } else {
86       print STDERR "Missing $wav{$wav} for $wav\n";
87     }
88   }
89 }
91 close(WAV) || die;
92 close(SPKR) || die;
93 close(GNDR) || die;
94 if (system("utils/utt2spk_to_spk2utt.pl $out_dir/utt2spk >$out_dir/spk2utt") != 0) {
95   die "Error creating spk2utt file in directory $out_dir";
96 }
97 if (system("utils/fix_data_dir.sh $out_dir") != 0) {
98   die "Error fixing data dir $out_dir";
99 }
100 if (system("utils/validate_data_dir.sh --no-text --no-feats $out_dir") != 0) {
101   die "Error validating directory $out_dir";