def translate_api(): start_time = datetime.datetime.now() text = request.json['text'] languages = request.json['languages'] savetext = 'savetext' in request.json and request.json['savetext'] == True if languages == 'eng-cat': openNMT = openNMT_engcat else: openNMT = openNMT_cateng # print("Input:" + text) tokenizer = TextTokenizer() sentences, translate = tokenizer.tokenize(text) results = _launch_translate_threads(openNMT, text, sentences, translate) translated = tokenizer.sentence_from_tokens(sentences, translate, results) if savetext: saved_filename = os.path.join(SAVED_TEXTS, "source.txt") with open(saved_filename, "a") as text_file: t = text.replace('\n', '') text_file.write(f'{languages}\t{t}\n') time_used = datetime.datetime.now() - start_time words = len(text.split(' ')) usage = Usage() usage.log(languages, words, time_used) result = {} result['text'] = text result['translated'] = translated result['time'] = str(time_used) return json_answer(result)
def upload_file(): file = request.files['file'] email = request.values['email'] model_name = request.values['model_name'] if file.filename == '': result = {} result['error'] = "No s'ha especificat el fitxer" return json_answer(result, 404) if email == '': result = {} result['error'] = "No s'ha especificat el correu" return json_answer(result, 404) if file and _allowed_file(file.filename): filename = uuid.uuid4().hex fullname = os.path.join(UPLOAD_FOLDER, filename) file.save(fullname) save_file_to_process(fullname, email, model_name) logging.debug("Saved file {0}".format(fullname)) result = [] usage = Usage() usage.log(model_name, 0, datetime.timedelta(), 'file') return json_answer(result) result = {} result['error'] = "Error desconegut" return json_answer(result, 500)
def recognize_api(): if 'file' not in request.files: return 'No file part' file = request.files['file'] if file.filename == '': return 'No filename' time = datetime.datetime.now() try: with tempfile.NamedTemporaryFile() as temp_file: recognizer = Recognizer() filename = temp_file.name file.save(filename) text = recognizer.get_text(filename) used = datetime.datetime.now() - time usage = Usage() usage.log() return "Text reconegut: [{0}] - temps usat {1}".format(text, used) except ValueError as e: return ( "No és un fitxer d'àudio en format PCM WAV, AIFF/AIFF-C o FLAC ", 400)
def search_request(): source = request.args.get('source') target = request.args.get('target') project = ','.join(request.args.getlist('project')) search = Search(source, target, project) View = WebView() result = View.do(search) usage = Usage() usage.log() return result
def search_request(): source = request.args.get('source') target = request.args.get('target') project = ','.join(request.args.getlist('project')) search = Search(source, target, project) View = WebView() result = View.do(search) usage = Usage() usage.log() return result
def search_api(): source = request.args.get('source') target = request.args.get('target') page = request.args.get('page') project = ','.join(request.args.getlist('project')) search = Search(source, target, project) results = SearchAPIResults() json = results.do(search, page) usage = Usage() usage.log() return json
def voice_api(): text = request.args.get('text') token = request.args.get('token') voice = request.args.get('voice') or "ona" if voice not in ["ona", "pau"]: return ("Bad Request", 400) if token is None or getMD5(text) != token.lower(): return ("Forbidden", 403) txt2wave = '/usr/bin/text2wave' lame = '/usr/bin/lame' with tempfile.NamedTemporaryFile() as encoded_file,\ tempfile.NamedTemporaryFile() as wave_file,\ tempfile.NamedTemporaryFile() as mp3_file: text = _normalize(text) f = open(encoded_file.name, 'wb') f.write(text.encode('ISO-8859-15', 'ignore')) f.close() cmd = '{0} -o {1} {2} -eval "({3})"'.\ format(txt2wave, wave_file.name, encoded_file.name, festival_voices[voice]) p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) p.wait() cmd = '{0} -f {1} {2}'.\ format(lame, wave_file.name, mp3_file.name) p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) p.wait() usage = Usage() usage.log() return send_file(mp3_file.name, mimetype="audio/mp3", as_attachment=False, attachment_filename=mp3_file.name)
def apertium_translate_process(values): global translate_calls, translate_chars translate_calls += 1 start_time = datetime.datetime.now() text = None text = values['q'] translate_chars += len(text) langpair = values['langpair'] savetext = 'savetext' in values and values['savetext'] == True languages = _convert_apertium_languages_aliases_to_iso639_3(langpair) if savetext: saved_filename = os.path.join(SAVED_TEXTS, "source.txt") with open(saved_filename, "a") as text_file: t = text.replace('\n', '') text_file.write(f'{languages}\t{t}\n') openNMT = openNMTs[languages] translated = openNMT.translate_parallel(text) result = {} result = _get_bias_message_if_needed(languages, text, result) time_used = datetime.datetime.now() - start_time words = len(text.split(' ')) usage = Usage() usage.log(languages, words, time_used, 'form') responseData = {} responseData['translatedText'] = translated result['responseStatus'] = 200 result['responseData'] = responseData result['time'] = str(time_used) return json_answer(result)