You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.1 KiB
42 lines
1.1 KiB
#!/usr/bin/env python3
|
|
import argparse
|
|
|
|
if __name__ == '__main__':
|
|
parser = argparse.ArgumentParser(prog=__doc__)
|
|
parser.add_argument(
|
|
'--logfile', type=str, required=True, help='ws client log file')
|
|
|
|
args = parser.parse_args()
|
|
|
|
rtfs = []
|
|
with open(args.logfile, 'r') as f:
|
|
for line in f:
|
|
if 'RTF=' in line:
|
|
# udio duration: 6.126, elapsed time: 3.471978187561035, RTF=0.5667610492264177
|
|
line = line.strip()
|
|
beg = line.index("audio")
|
|
line = line[beg:]
|
|
|
|
items = line.split(',')
|
|
vals = []
|
|
for elem in items:
|
|
if "RTF=" in elem:
|
|
continue
|
|
_, val = elem.split(":")
|
|
vals.append(eval(val))
|
|
keys = ['T', 'P']
|
|
meta = dict(zip(keys, vals))
|
|
|
|
rtfs.append(meta)
|
|
|
|
T = 0.0
|
|
P = 0.0
|
|
n = 0
|
|
for m in rtfs:
|
|
# not accurate, may have duplicate log
|
|
n += 1
|
|
T += m['T']
|
|
P += m['P']
|
|
|
|
print(f"RTF: {P/T}")
|