Blame view

volia/data.py 2.69 KB
65cfb375f   Quillot Mathias   Structure du pars...
1
2
  import argparse
  import sys
e200c0b6f   Quillot Mathias   Now we can import...
3
  from utils import SubCommandRunner
65cfb375f   Quillot Mathias   Structure du pars...
4

37c010cba   Quillot Mathias   Filter works well...
5
  import core.data
65cfb375f   Quillot Mathias   Structure du pars...
6

65cfb375f   Quillot Mathias   Structure du pars...
7

37c010cba   Quillot Mathias   Filter works well...
8
9
10
11
  def filter_file(file, filter, outfile):
      file_path = file
      filter_path = filter
      file_data = core.data.read_id_values(file_path)
08996e0a9   quillotm   Little modificati...
12
      filter_data = core.data.read_id_values(filter_path)
37c010cba   Quillot Mathias   Filter works well...
13
14
15
16
17
18
  
      with open(outfile, "w") as out:
          for id_ in filter_data:
              core.data.write_line(id_, file_data[id_], out)
          
      
65cfb375f   Quillot Mathias   Structure du pars...
19

37c010cba   Quillot Mathias   Filter works well...
20
      
65cfb375f   Quillot Mathias   Structure du pars...
21
22
  
  def convert(file, type_from, type):
88260de93   Quillot Mathias   add utt2dur gener...
23

65cfb375f   Quillot Mathias   Structure du pars...
24
      pass
88260de93   Quillot Mathias   add utt2dur gener...
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
  def utt2dur(wavscp: str, outfile: str):
      
      import wave
      import contextlib
  
      with open(wavscp, "r") as f, open(outfile, "w") as of:
          for line in f:
              splited = line.replace("
  ", "").split(" ")
              id_ = splited[0]
              wav_ = splited[1]
              duration = 0
              
              with contextlib.closing(wave.open(wav_,'r')) as wav_f:
                  frames = wav_f.getnframes()
                  rate = wav_f.getframerate()
                  duration = frames / float(rate)
              
              of.write(f"{id_} {duration}
  ")
65cfb375f   Quillot Mathias   Structure du pars...
45
46
  
  if __name__ == "__main__":
0baf1624a   Quillot Mathias   Better main organ...
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
      # Main parser
      parser = argparse.ArgumentParser(description="manage files")
      subparsers = parser.add_subparsers(title="actions")
  
      # Filter ids
      parser_filter = subparsers.add_parser("filter", help="filter a file")
      parser_filter.add_argument("--file", type=str, help="path of the file to filter", required=True)
      parser_filter.add_argument("--filter", type=str, help="filter file [id_from] [id_to]", required=True)
      parser_filter.add_argument("--outfile", type=str, help="output file", required=True)
      parser_filter.set_defaults(which="filter")
  
      # Convert
      parser_convert = subparsers.add_parser("convert", help="convert a file")
      parser_convert.add_argument("--file", type=str, help="...", required=True)
      parser_convert.add_argument("--type-from", type=str, choices=["old-masseffect", "new-masseffect"], help="...", required=True)
      parser_convert.add_argument("--type", choices=["old-masseffect", "new-masseffect"], required=True)
      parser_convert.set_defaults(which="convert")
88260de93   Quillot Mathias   add utt2dur gener...
64
65
66
67
68
69
70
71
72
      # utt2dur
      parser_utt2dur = subparsers.add_parser("utt2dur", help="generate utt2dur file")
      parser_utt2dur.add_argument("--wavscp", type=str, help="wav file", required=True)
      parser_utt2dur.add_argument("--outfile", type=str, default="utt2dur", help="output file")
      parser_utt2dur.set_defaults(which="utt2dur")
  
      # TODO: utt2label_to_label2utt
  
      # TODO: label2utt_to_utt2label
0baf1624a   Quillot Mathias   Better main organ...
73
74
75
76
      # Parse
      args = parser.parse_args()
  
      # Run commands
65cfb375f   Quillot Mathias   Structure du pars...
77
78
79
      runner = SubCommandRunner({
          "convert" : convert,
          "filter": filter_file,
88260de93   Quillot Mathias   add utt2dur gener...
80
          "utt2dur": utt2dur
65cfb375f   Quillot Mathias   Structure du pars...
81
82
83
      })
  
      runner.run(args.which, args.__dict__, remove="which")