parent
cdd0845127
commit
8f3280af8e
@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Copyright 2019 Kyoto University (Hirofumi Inaguma)
|
||||||
|
# Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
||||||
|
|
||||||
|
export LC_ALL=C
|
||||||
|
|
||||||
|
data_dir=${1}
|
||||||
|
|
||||||
|
for set in train dev test; do
|
||||||
|
# for set in train; do
|
||||||
|
dst=${target_dir}/${set}
|
||||||
|
for lang in en zh; do
|
||||||
|
|
||||||
|
if [ ${lang} = 'en' ]; then
|
||||||
|
echo "remove punctuation $lang"
|
||||||
|
# remove punctuation
|
||||||
|
local/remove_punctuation.pl < ${dst}/${lang}.org > ${dst}/${lang}.raw
|
||||||
|
else
|
||||||
|
cp ${dst}/${lang}.org ${dst}/${lang}.raw
|
||||||
|
fi
|
||||||
|
|
||||||
|
paste -d " " ${dst}/.yaml ${dst}/${lang}.raw | sort > ${dst}/text.${lang}
|
||||||
|
|
||||||
|
|
||||||
|
done
|
||||||
|
# error check
|
||||||
|
n=$(cat ${dst}/.yaml | wc -l)
|
||||||
|
n_en=$(cat ${dst}/en.raw | wc -l)
|
||||||
|
n_tgt=$(cat ${dst}/zh.raw | wc -l)
|
||||||
|
[ ${n} -ne ${n_en} ] && echo "Warning: expected ${n} data data files, found ${n_en}" && exit 1;
|
||||||
|
[ ${n} -ne ${n_tgt} ] && echo "Warning: expected ${n} data data files, found ${n_tgt}" && exit 1;
|
||||||
|
|
||||||
|
echo "done text processing"
|
||||||
|
cat ${dst}/wav.scp.org | uniq | sort -k1,1 -u > ${dst}/wav.scp
|
||||||
|
cat ${dst}/utt2spk.org | uniq | sort -k1,1 -u > ${dst}/utt2spk
|
||||||
|
|
||||||
|
cat ${dst}/utt2spk | utt2spk_to_spk2utt.pl | sort -k1,1 -u > ${dst}/spk2utt
|
||||||
|
rm -rf ${target_dir}/data_prep/${set}.en-zh
|
||||||
|
mkdir -p ${target_dir}/data_prep/${set}.en-zh
|
||||||
|
echo "remove duplicate lines..."
|
||||||
|
cut -d ' ' -f 1 ${dst}/text.en | sort | uniq -c | sort -n -k1 -r | grep -v '1 ted-en-zh' \
|
||||||
|
| sed 's/^[ \t]*//' > ${dst}/duplicate_lines
|
||||||
|
cut -d ' ' -f 1 ${dst}/text.en | sort | uniq -c | sort -n -k1 -r | grep '1 ted-en-zh' \
|
||||||
|
| cut -d '1' -f 2- | sed 's/^[ \t]*//' > ${dst}/reclist
|
||||||
|
reduce_data_dir.sh ${dst} ${dst}/reclist ${target_dir}/data_prep/${set}.en-zh
|
||||||
|
echo "done wav processing"
|
||||||
|
for l in en zh; do
|
||||||
|
cp ${dst}/text.${l} ${target_dir}/data_prep/${set}.en-zh/text.${l}
|
||||||
|
done
|
||||||
|
fix_data_dir.sh --utt_extra_files \
|
||||||
|
"text.en text.zh" \
|
||||||
|
${target_dir}/data_prep/${set}.en-zh
|
||||||
|
done
|
@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Copyright 2019 Kyoto University (Hirofumi Inaguma)
|
||||||
|
# 2021 PaddlePaddle
|
||||||
|
# Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
||||||
|
|
||||||
|
. ./path.sh
|
||||||
|
|
||||||
|
if [ "$#" -ne 2 ]; then
|
||||||
|
echo "Usage: $0 <set> <lang>>"
|
||||||
|
echo "e.g.: $0 dev"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
set=$1
|
||||||
|
lang=$2
|
||||||
|
export LC_ALL=en_US.UTF-8
|
||||||
|
# Copy stuff intoc its final locations [this has been moved from the format_data script]
|
||||||
|
# for En
|
||||||
|
mkdir -p ${set}.en
|
||||||
|
for f in spk2utt utt2spk segments wav.scp feats.scp utt2num_frames; do
|
||||||
|
if [ -f ${set}/${f} ]; then
|
||||||
|
sort ${set}/${f} > ${set}.en/${f}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
sort ${set}/text.en | sed $'s/[^[:print:]]//g' > ${set}.en/text
|
||||||
|
|
||||||
|
utils/fix_data_dir.sh ${set}.en
|
||||||
|
if [ -f ${set}.en/feats.scp ]; then
|
||||||
|
utils/validate_data_dir.sh ${set}.en || exit 1;
|
||||||
|
else
|
||||||
|
utils/validate_data_dir.sh --no-feats --no-wav ${set}.en || exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# for target language
|
||||||
|
mkdir -p ${set}.${lang}
|
||||||
|
for f in spk2utt utt2spk segments wav.scp feats.scp utt2num_frames; do
|
||||||
|
if [ -f ${set}/${f} ]; then
|
||||||
|
sort ${set}/${f} > ${set}.${lang}/${f}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
sort ${set}/text.${lang} | sed $'s/[^[:print:]]//g' > ${set}.${lang}/text
|
||||||
|
utils/fix_data_dir.sh ${set}.${lang}
|
||||||
|
if [ -f ${set}.${lang}/feats.scp ]; then
|
||||||
|
utils/validate_data_dir.sh ${set}.${lang} || exit 1;
|
||||||
|
else
|
||||||
|
utils/validate_data_dir.sh --no-feats --no-wav ${set}.${lang} || exit 1;
|
||||||
|
fi
|
@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
def main(args):
|
||||||
|
with open(args.json_file, 'r') as fin:
|
||||||
|
data_json = json.load(fin)
|
||||||
|
|
||||||
|
with open(args.manifest_file, 'w') as fout:
|
||||||
|
for key, value in data_json['utts'].items():
|
||||||
|
value['utt'] = key
|
||||||
|
fout.write(json.dumps(value, ensure_ascii=False))
|
||||||
|
fout.write("\n")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
parser = argparse.ArgumentParser(description=__doc__)
|
||||||
|
parser.add_argument(
|
||||||
|
'--json-file', type=str, default=None, help="espnet data json file.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--manifest-file',
|
||||||
|
type=str,
|
||||||
|
default='manifest.train',
|
||||||
|
help='manifest data json line file.')
|
||||||
|
args = parser.parse_args()
|
||||||
|
main(args)
|
@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use warnings;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
binmode(STDIN,":utf8");
|
||||||
|
binmode(STDOUT,":utf8");
|
||||||
|
|
||||||
|
while(<STDIN>) {
|
||||||
|
$_ = " $_ ";
|
||||||
|
|
||||||
|
# remove punctuation except apostrophe
|
||||||
|
s/<space>/spacemark/g; # for scoring
|
||||||
|
s/'/apostrophe/g;
|
||||||
|
s/[[:punct:]]//g;
|
||||||
|
s/apostrophe/'/g;
|
||||||
|
s/spacemark/<space>/g; # for scoring
|
||||||
|
|
||||||
|
# remove whitespace
|
||||||
|
s/\s+/ /g;
|
||||||
|
s/^\s+//;
|
||||||
|
s/\s+$//;
|
||||||
|
|
||||||
|
print "$_\n";
|
||||||
|
}
|
Loading…
Reference in new issue