예제 #1
0
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)
예제 #3
0
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)
예제 #4
0
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
예제 #6
0
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
예제 #7
0
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)