agent_gsm/src/bt_loop_answerer.py

60 lines
1.6 KiB
Python

#!/usr/bin/python3
# This file runs the call script N times.
# The idea is to make long test and collect some statistics about reliability.
import os
import argparse
import typing
import time
import soundfile
# Used audio files to testing
PLAY_FILE = 'audio/reference_answerer.wav'
DIR_RECORD = '/dev/shm'
def run_test():
# Find duration of play audio
sf = soundfile.SoundFile(PLAY_FILE)
duration = int(sf.frames / sf.samplerate + 0.5)
# Remove old recordings
os.system(f'rm -f {DIR_RECORD}/bt_record*.wav')
# Tests
test_idx = 0
while True:
try:
# Recording file name
record_file = f'{DIR_RECORD}/bt_record_{test_idx:05d}.wav'
# Answer the call
cmd = f'/usr/bin/python3 call_controller.py --play-file {PLAY_FILE} --record-file {record_file} --timelimit {duration}'
retcode = os.system(cmd)
if retcode == 2:
print('Call finished in strange way, probably Ctrl-C. Exiting.')
exit(retcode)
else:
print(f'Call finished with return code {retcode}. Preparing to next one...')
test_idx += 1
except Exception as e:
print(e)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Test answerer.')
args = vars(parser.parse_args())
# Check if input audio file exists
if not os.path.exists('audio/example_1.wav'):
print(f'Problem: file to play ({args["play_file"]}) doesn\'t exists.')
exit(os.EX_DATAERR)
run_test()