-
Notifications
You must be signed in to change notification settings - Fork 1
/
auto_mom_app.py
155 lines (109 loc) · 4.86 KB
/
auto_mom_app.py
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
import os
from flask import Flask, render_template, request, redirect, url_for, send_from_directory
from werkzeug.utils import secure_filename
from aws_transcribe import transcribe_audio, create_custom_vocabulary
from text_summarizer import summarize_text
from gensim.summarization.textcleaner import get_sentences
import datetime
import sys
UPLOAD_FOLDER = './uploads'
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/preview/<filename>', methods=['GET'])
def preview(filename):
if filename == None or filename == '':
return 'No preview available.'
return send_from_directory(app.config['UPLOAD_FOLDER'], filename)
app_data = {
'file_address': '',
'file_type' : 'mp3',
'vocab': '',
'vocab_status': '',
'summary': '',
'num_speaker': '',
'ratio' : 50,
'error' : False,
'error_msg' : '',
'preview' : preview,
'loading' : True
}
transcription = ''
@app.route('/', methods=['GET'])
def launch_app():
global app_data
return render_template('app_index1.html', app_data=app_data)
#return 'This is the homepage!'
@app.route('/submit', methods=['GET', 'POST'])
def send_for_transcription():
global transcription
global app_data
if request.method == 'POST':
if request.form['process_btn'] == "Start":
print(request.form['file_type'])
print(app_data['file_type'])
app_data['loading'] = False
app_data['file_type'] = request.form['file_type']
if 'file_address' not in request.files:
print('No files found.')
return 'No files'
file = request.files['file_address']
app_data['file_address'] = file
#print(file)
#print(file.filename)
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
# upload the file to s3 bucket - to be done
# create vocab if any
custom_vocab_name = 'default_custom_vocab'
app_data['vocab'] = str(request.form['vocab']).strip()
print(app_data['vocab'])
if app_data['vocab']:
custom_vocab_name = str("custom_vocab_" + str(datetime.datetime.now().strftime("%y-%m-%d-%H.%M.%S")) )
custom_vocab_status = create_custom_vocabulary(custom_vocab_name, app_data['vocab'])
if custom_vocab_status == 'READY':
app_data['vocab_status'] = 'Custom Vocabulary Ready'
else :
app_data['vocab_status'] = 'Custom Vocabulary Creation Failed'
# get transcription
transciption_job_name = str("transcribe-job-" + str(datetime.datetime.now().strftime("%y-%m-%d-%H.%M.%S")) )
#print(transciption_job_name)
#print(app_data['file_type'])
if app_data['file_type'] == None or app_data['file_type'] == '':
print('no file type')
else:
transcription_result = transcribe_audio(transciption_job_name, '', app_data['file_type'], custom_vocab_name, file.filename)
transcription = transcription_result['transcription']
transcription_sent_count = len(list(get_sentences(transcription)))
threshold_sent_count = min(10, transcription_sent_count)
ratio = threshold_sent_count / transcription_sent_count
app_data['ratio'] = int(round(((1 - ratio) * 100)))
text_summary = summarize_text(transcription, ratio)
app_data['summary'] = text_summary
app_data['num_speaker'] = transcription_result['num_speaker']
if request.form['process_btn'] == "Go":
app_data['ratio'] = request.form['ratio']
summ_ratio = (100 - float(request.form['ratio']))/100
if summ_ratio < 0.05:
summ_ratio = 0.1
app_data['summary'] = summarize_text(transcription, summ_ratio)
print(app_data['vocab'])
return redirect(url_for('launch_app'))
#return render_template('app_index.html')
@app.route('/uploads/<filename>')
def uploaded_file(filename):
return send_from_directory(app.config['UPLOAD_FOLDER'], filename)
@app.route('/summary', methods=['GET', 'POST'])
def summarize_with_ratio():
if request.method == 'POST':
app_data['ratio'] = request.form['ratio']
summ_ratio = (100 - float(request.form['ratio']))/100
if summ_ratio < 0.05:
summ_ratio = 0.1
app_data['summary'] = summarize_text(transcription, summ_ratio)
return render_template('app_index.html', app_data=app_data)
if __name__ == "__main__":
args = sys.argv
port = 5000
if len(args) > 1:
port = int(args[1])
app.run(debug=True, port=port)