mirror of
https://github.com/FAUSheppy/ths-speech
synced 2025-12-07 20:51:37 +01:00
fixes for samba
This commit is contained in:
@@ -2,22 +2,28 @@ import base64
|
|||||||
import os.path
|
import os.path
|
||||||
import audiosegment_wrapper as AudioSegment
|
import audiosegment_wrapper as AudioSegment
|
||||||
|
|
||||||
|
audiofiles = []
|
||||||
|
FTP_DIR = "/home/ths/"
|
||||||
|
|
||||||
def save_audio(filename, base64_string):
|
def save_audio(filename, base64_string):
|
||||||
|
global audiofiles
|
||||||
|
audiofiles += [filename[:-4]]
|
||||||
decoded = None
|
decoded = None
|
||||||
orig_filename = filename[:-4]+"_orig"
|
orig_filename = filename[:-4]+"_orig"
|
||||||
with open("latestBase64","wb") as f:
|
|
||||||
f.write(base64_string)
|
|
||||||
try:
|
try:
|
||||||
decoded = base64.b64decode(base64_string)
|
decoded = base64.b64decode(base64_string)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
return b"ERROR_INVALID_ENCODING_64"
|
return b"ERROR_INVALID_ENCODING_64"
|
||||||
#if os.path.isfile(filename):
|
if os.path.isfile(filename):
|
||||||
# return b"ERROR_FILE_EXISTS"
|
return b"ERROR_FILE_EXISTS"
|
||||||
with open(orig_filename,"wb") as f:
|
write_file(orig_filename, decoded)
|
||||||
f.write(decoded)
|
|
||||||
seg = AudioSegment.from_file(orig_filename)
|
seg = AudioSegment.from_file(orig_filename)
|
||||||
seg = seg.resample(sample_rate_Hz=32000, sample_width=2, channels=1)
|
seg = seg.resample(sample_rate_Hz=32000, sample_width=2, channels=1)
|
||||||
|
|
||||||
seg.export(filename,format="wav")
|
seg.export(filename,format="wav")
|
||||||
|
seg.export(FTP_DIR + filename,format="wav")
|
||||||
|
|
||||||
return b"SUCCESS"
|
return b"SUCCESS"
|
||||||
|
|
||||||
def save_audio_chain(file_str_tupels):
|
def save_audio_chain(file_str_tupels):
|
||||||
@@ -41,20 +47,31 @@ def save_audio_chain(file_str_tupels):
|
|||||||
else:
|
else:
|
||||||
completeAudio = completeAudio.resample(sample_rate_Hz=32000, sample_width=2, channels=1)
|
completeAudio = completeAudio.resample(sample_rate_Hz=32000, sample_width=2, channels=1)
|
||||||
completeAudio.export(file_str_tupels[0][0],format="wav")
|
completeAudio.export(file_str_tupels[0][0],format="wav")
|
||||||
|
completeAudio.export(FTP_DIR + file_str_tupels[0][0],format="wav")
|
||||||
return b"SUCCESS"
|
return b"SUCCESS"
|
||||||
|
|
||||||
def save_transcript(filename, transcript):
|
def save_transcript(filename, transcript):
|
||||||
|
global audiofiles
|
||||||
|
try:
|
||||||
|
audiofiles.remove(filename[:4])
|
||||||
|
except:
|
||||||
|
print("Audiofile not in working list")
|
||||||
if os.path.isfile(filename):
|
if os.path.isfile(filename):
|
||||||
pass
|
pass
|
||||||
with open(filename + "_transcript","w") as f:
|
with open(filename + "_transcript","w") as f:
|
||||||
f.write(transcript)
|
f.write(transcript)
|
||||||
|
with open(FTP_DIR + filename + "_transcript","w") as f:
|
||||||
|
f.write(transcript)
|
||||||
|
|
||||||
def get_transcript(filename):
|
def get_transcript(filename):
|
||||||
|
global audiofiles
|
||||||
try:
|
try:
|
||||||
with open("data/" + filename + ".wav_transcript","r") as f:
|
with open("data/" + filename + ".wav_transcript","r") as f:
|
||||||
return f.read()
|
return f.read()
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
return "File not found on Server!"
|
if filename in audiofiles:
|
||||||
|
return "ERROR_FILE_STILL_IN_WORK"
|
||||||
|
return "ERROR_FILE_NOT_AVAILIABLE"
|
||||||
|
|
||||||
def filelist():
|
def filelist():
|
||||||
return ""
|
return ""
|
||||||
@@ -64,3 +81,10 @@ def fileinfo(filename):
|
|||||||
|
|
||||||
def copy_to_output(filename):
|
def copy_to_output(filename):
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
def write_file(filename, data):
|
||||||
|
FTP_DIR = "/home/ths/"
|
||||||
|
with open(FTP_DIR + filename,"wb") as f:
|
||||||
|
f.write(data)
|
||||||
|
with open(filename,"wb") as f:
|
||||||
|
f.write(data)
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ def parse_request(data):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
return b"ERROR_MALFORMED_REQUEST"
|
return b"ERROR_MALFORMED_REQUEST"
|
||||||
ret = filesystem.save_audio(filename, base64_string)
|
ret = filesystem.save_audio(filename, base64_string)
|
||||||
|
if b"ERROR" in ret:
|
||||||
|
return ret
|
||||||
speech.async_create_transcript(filename)
|
speech.async_create_transcript(filename)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
@@ -58,6 +60,8 @@ def parse_request(data):
|
|||||||
return bytes("ERROR_INVALID_NUMBER_FILES_{}".format(len(file_str_tuples)),"utf-8")
|
return bytes("ERROR_INVALID_NUMBER_FILES_{}".format(len(file_str_tuples)),"utf-8")
|
||||||
|
|
||||||
ret = filesystem.save_audio_chain(file_str_tuples);
|
ret = filesystem.save_audio_chain(file_str_tuples);
|
||||||
|
if b"ERROR" in ret:
|
||||||
|
return ret
|
||||||
speech.async_create_transcript(file_str_tuples[0][0])
|
speech.async_create_transcript(file_str_tuples[0][0])
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import os.path
|
|||||||
import filesystem
|
import filesystem
|
||||||
import log
|
import log
|
||||||
import transcribe_async
|
import transcribe_async
|
||||||
|
import os
|
||||||
|
|
||||||
USE_FREE=False
|
USE_FREE=False
|
||||||
USE_PAID=True
|
USE_PAID=True
|
||||||
@@ -15,6 +16,7 @@ def async_create_transcript(filename):
|
|||||||
def create_and_save_transcript(filename):
|
def create_and_save_transcript(filename):
|
||||||
transcript = analyse(filename)
|
transcript = analyse(filename)
|
||||||
filesystem.save_transcript(filename, transcript)
|
filesystem.save_transcript(filename, transcript)
|
||||||
|
os.system("../permissions.sh")
|
||||||
|
|
||||||
def analyse(filename):
|
def analyse(filename):
|
||||||
''' returns the transcripted audio, or None if the analysis fails '''
|
''' returns the transcripted audio, or None if the analysis fails '''
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ def transcribe_gcs(gcs_uri):
|
|||||||
ret = ""
|
ret = ""
|
||||||
for result in response.results:
|
for result in response.results:
|
||||||
# The first alternative is the most likely one for this portion.
|
# The first alternative is the most likely one for this portion.
|
||||||
|
if len(result.alternatives) < 1:
|
||||||
|
continue
|
||||||
ret += result.alternatives[0].transcript
|
ret += result.alternatives[0].transcript
|
||||||
print(u'Transcript: {}'.format(result.alternatives[0].transcript))
|
print(u'Transcript: {}'.format(result.alternatives[0].transcript))
|
||||||
print('Confidence: {}'.format(result.alternatives[0].confidence))
|
print('Confidence: {}'.format(result.alternatives[0].confidence))
|
||||||
|
|||||||
Reference in New Issue
Block a user