File size: 2,200 Bytes
c9f9492
7fda6bb
c9f9492
974d749
c9f9492
974d749
 
c9f9492
 
974d749
 
c9f9492
 
974d749
c9f9492
 
974d749
 
c9f9492
 
974d749
 
 
2e870f3
 
 
c9f9492
974d749
 
 
c9f9492
f8b7d96
 
 
0fa0230
974d749
 
 
2e870f3
0fa0230
974d749
 
 
0fa0230
 
 
 
c9f9492
974d749
 
c9f9492
 
974d749
2e870f3
f8b7d96
7fda6bb
974d749
2e870f3
c9f9492
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import display_gloss as dg
import synonyms_preprocess as sp
from NLP_Spacy_base_translator import NlpSpacyBaseTranslator 
from flask import Flask, render_template, Response, request

# ---- Initialise Flask App
#
app = Flask(__name__)

# ---- Render the homepage template
#
@app.route('/')
def index():

    return render_template('index.html')

# ---- Translate english input sentence into gloss sentence
#
@app.route('/translate/', methods=['POST'])
def result():

    # ---- Load NLP models and data
    #
    nlp, dict_docs_spacy = sp.load_spacy_values()
    _, list_2000_tokens = dg.load_data()

    if request.method == 'POST':

        # ---- Get the raw sentence and translate it to gloss
        #
        sentence = request.form['inputSentence']
        eng_to_asl_translator = NlpSpacyBaseTranslator(sentence=sentence)
        generated_gloss = eng_to_asl_translator.translate_to_gloss()
        gloss_list_lower = [gloss.lower() for gloss in generated_gloss.split() if gloss.isalnum() ]
        gloss_sentence_before_synonym = " ".join(gloss_list_lower)

        # ---- Substitute gloss tokens with synonyms if not in the common token list
        #
        gloss_list = [sp.find_synonyms(gloss, nlp, dict_docs_spacy, list_2000_tokens) for gloss in gloss_list_lower]
        gloss_sentence_after_synonym  = " ".join(gloss_list)

        # ---- Render the result template with both versions of the gloss sentence
        #
        return render_template('translate.html',\
                                sentence=sentence,\
                                gloss_sentence_before_synonym=gloss_sentence_before_synonym,\
                                gloss_sentence_after_synonym=gloss_sentence_after_synonym)

# ---- Generate video streaming from gloss_sentence
#
@app.route('/video_feed')
def video_feed():

    dataset, list_2000_tokens = dg.load_data()
    sentence = request.args.get('gloss_sentence_to_display', '')
    gloss_list = sentence.split()

    return Response(dg.generate_video(gloss_list, dataset, list_2000_tokens), mimetype='multipart/x-mixed-replace; boundary=frame')

if __name__ == "__main__":
    app.debug = True
    app.run(host="0.0.0.0", port=5000, debug=True)