57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
# Copyright (c) Facebook, Inc. and its affiliates.
|
|
#
|
|
# This source code is licensed under the MIT license found in the
|
|
# LICENSE file in the root directory of this source tree.
|
|
|
|
"""
|
|
Helper script to pre-compute embeddings for a flashlight (previously called wav2letter++) dataset
|
|
"""
|
|
|
|
import argparse
|
|
import os
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("tsv")
|
|
parser.add_argument("--output-dir", required=True)
|
|
parser.add_argument("--output-name", required=True)
|
|
args = parser.parse_args()
|
|
|
|
os.makedirs(args.output_dir, exist_ok=True)
|
|
|
|
transcriptions = {}
|
|
|
|
with open(args.tsv, "r") as tsv, open(
|
|
os.path.join(args.output_dir, args.output_name + ".ltr"), "w"
|
|
) as ltr_out, open(
|
|
os.path.join(args.output_dir, args.output_name + ".wrd"), "w"
|
|
) as wrd_out:
|
|
root = next(tsv).strip()
|
|
for line in tsv:
|
|
line = line.strip()
|
|
dir = os.path.dirname(line)
|
|
if dir not in transcriptions:
|
|
parts = dir.split(os.path.sep)
|
|
trans_path = f"{parts[-2]}-{parts[-1]}.trans.txt"
|
|
path = os.path.join(root, dir, trans_path)
|
|
assert os.path.exists(path)
|
|
texts = {}
|
|
with open(path, "r") as trans_f:
|
|
for tline in trans_f:
|
|
items = tline.strip().split()
|
|
texts[items[0]] = " ".join(items[1:])
|
|
transcriptions[dir] = texts
|
|
part = os.path.basename(line).split(".")[0]
|
|
assert part in transcriptions[dir]
|
|
print(transcriptions[dir][part], file=wrd_out)
|
|
print(
|
|
" ".join(list(transcriptions[dir][part].replace(" ", "|"))) + " |",
|
|
file=ltr_out,
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|