diff --git a/python-server/data/.empty b/python-server/data/.empty new file mode 100644 index 0000000..e69de29 diff --git a/python-server/exec_server.py b/python-server/exec_server.py index 59cd8cb..66e7356 100755 --- a/python-server/exec_server.py +++ b/python-server/exec_server.py @@ -20,7 +20,6 @@ class AppRequestHandler(socketserver.BaseRequestHandler): data += tmp[:-len("\nterminate\n")] break data += tmp - print("Request: {}".format(data)) retval = server_interface.parse_request(data) self.request.send(retval) self.request.send(b"terminate\n") diff --git a/python-server/server_interface.py b/python-server/server_interface.py index c9f6b65..b9fba50 100644 --- a/python-server/server_interface.py +++ b/python-server/server_interface.py @@ -1,15 +1,29 @@ +import speech +import filesystem + +MAIN_DIR = b"data/" + def parse_request(data): ''' parse request and call correct function ''' - # echo/test connection + # echo/test connection # cleared_data = is_data_type(b"ECHOREQUEST,",data) if cleared_data: return cleared_data + + # handle audio transmission # cleared_data = is_data_type(b"AUDIO_TRANSMISSION,",data) if cleared_data: - with open("test.wav","wb") as f: - f.write(cleared_data) - return b"SUCCESS" + filename = None + try: + filename, base64_string = cleared_data.split(b',') + filename = MAIN_DIR + filename.split(b"/")[-1] + b".wav" + filename = filename.decode("utf-8") + except ValueError: + return b"ERROR_MALFORMED_REQUEST" + ret = filesystem.save_audio(filename, base64_string) + speech.async_create_transcript(filename) + return ret # other shit return b"UNRECOGNIZED_SERVER_OPTION\n" diff --git a/python-server/speech.py b/python-server/speech.py index bb9f145..753b34a 100644 --- a/python-server/speech.py +++ b/python-server/speech.py @@ -1,8 +1,20 @@ import speech_recognition as spr -def analyse(file_path): +import multiprocessing as mp +import os.path +import filesystem +import log + +def async_create_transcript(filename): + mp.Process(target=create_and_save_transcript,args=(filename,)).start() + +def create_and_save_transcript(filename): + transcript = analyse(filename) + filesystem.save_transcript(transcript) + +def analyse(filename): ''' returns the transcripted audio, or None if the analysis fails ''' recognizer = spr.Recognizer() - with spr.AudioFile(file_path) as source: + with spr.AudioFile(filename) as source: audio = recognizer.record(source) try: