Spaces:
Sleeping
Sleeping
| #!/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. | |
| import argparse | |
| import os | |
| def get_parser(): | |
| parser = argparse.ArgumentParser(description="convert audioset labels") | |
| # fmt: off | |
| parser.add_argument('in_file', help='audioset csv file to convert') | |
| parser.add_argument('--manifest', required=True, metavar='PATH', help='wav2vec-like manifest') | |
| parser.add_argument('--descriptors', required=True, metavar='PATH', help='path to label descriptor file') | |
| parser.add_argument('--output', required=True, metavar='PATH', help='where to output converted labels') | |
| # fmt: on | |
| return parser | |
| def main(): | |
| parser = get_parser() | |
| args = parser.parse_args() | |
| label_descriptors = {} | |
| with open(args.descriptors, "r") as ldf: | |
| next(ldf) | |
| for line in ldf: | |
| if line.strip() == "": | |
| continue | |
| items = line.split(",") | |
| assert len(items) > 2, line | |
| idx = items[0] | |
| lbl = items[1] | |
| assert lbl not in label_descriptors, lbl | |
| label_descriptors[lbl] = idx | |
| labels = {} | |
| with open(args.in_file, "r") as ifd: | |
| for line in ifd: | |
| if line.lstrip().startswith("#"): | |
| continue | |
| items = line.rstrip().split(",") | |
| id = items[0].strip() | |
| start = items[1].strip() | |
| end = items[2].strip() | |
| lbls = [label_descriptors[it.strip(' "')] for it in items[3:]] | |
| labels[id] = [start, end, ",".join(lbls)] | |
| with open(args.manifest, "r") as mf, open(args.output, "w") as of: | |
| next(mf) | |
| for line in mf: | |
| path, _ = line.split("\t") | |
| id = os.path.splitext(os.path.basename(path))[0] | |
| lbl = labels[id] | |
| print("\t".join(lbl), file=of) | |
| if __name__ == "__main__": | |
| main() | |