Spaces:
Sleeping
Sleeping
Mostafa Shahin
commited on
Commit
•
b5336bb
1
Parent(s):
1bd17d3
Only Attribute error in Assessment
Browse files
app.py
CHANGED
@@ -35,25 +35,22 @@ def diff_fn():
|
|
35 |
return [('H','+'),('E','-'),('N',None),('\n', None),('F','-'),('Fgo','-'),('M','+')]
|
36 |
|
37 |
def recognizeAudio(audio_file, attributes, is_ipa=False):
|
38 |
-
#print(','.join(attributes))
|
39 |
global df_output
|
40 |
if is_ipa:
|
41 |
p2att_matrix = 'data/p2att_en_us-ipa.csv'
|
42 |
else:
|
43 |
p2att_matrix = 'data/p2att_en_us-arpa.csv'
|
44 |
-
output = engine.transcribe(audio_file, attributes=
|
45 |
records = []
|
46 |
d = json.loads(output)
|
47 |
phonemes = d['Phoneme']['symbols']
|
48 |
-
#if is_ipa:
|
49 |
-
# phonemes = [arpa2ipa[arpa2ipa.arpa==ph].ipa.values[0] for ph in phonemes]
|
50 |
records.append(['Phoneme']+phonemes)
|
51 |
for att in d['Attributes']:
|
52 |
records.append([att['Name']]+att['Pattern'])
|
53 |
df = pd.DataFrame.from_records(records)
|
54 |
df.fillna('', inplace=True)
|
55 |
df_output = df
|
56 |
-
return df.to_html(header=False, index=False)
|
57 |
|
58 |
|
59 |
#Get error by matching the expected sequence with the recognized one and return the output in a format that can be visualized by the gradio HighlightedText box
|
@@ -159,8 +156,6 @@ with gr.Blocks() as gui:
|
|
159 |
|
160 |
process.click(fn=recognizeAudio, inputs=[record_audio,att_list, is_ipa], outputs=recognition)
|
161 |
|
162 |
-
|
163 |
-
|
164 |
with gr.Tab("Assessment"):
|
165 |
assess = gr.Button("Assessment")
|
166 |
diff = []
|
@@ -171,24 +166,26 @@ with gr.Blocks() as gui:
|
|
171 |
color_map={"S": "red", "I": "green", "D":"blue"}, visible=False))
|
172 |
|
173 |
def get_assessment(prompt_phonemes):#, recognized_phonemes, recognized_attributes):
|
174 |
-
outputs = [gr.HighlightedText(visible=False)]*(
|
175 |
outputs[0] = gr.HighlightedText(label=f"Phoneme Assessment",
|
176 |
value=get_error(prompt_phonemes.split(), df_output.iloc[0].values[1:]),
|
177 |
visible=True)
|
178 |
i = 1
|
179 |
-
for
|
180 |
convert = lambda ph: '-' if f'n_{att}' in engine.p2att_map[ph] else '+'
|
181 |
att = r.iloc[0]
|
182 |
exp_att = [convert(ph) for ph in prompt_phonemes.split()]
|
183 |
rec_att = r.iloc[1:].values
|
184 |
-
|
|
|
185 |
value=get_error(exp_att, rec_att),
|
186 |
visible=True)
|
187 |
-
|
188 |
|
189 |
return outputs
|
190 |
|
191 |
-
assess.click(fn=get_assessment, inputs= [prompt_phonemes], outputs=diff)
|
|
|
192 |
|
193 |
with gr.Tab("Analysis"):
|
194 |
selected_att = gr.Dropdown( sorted(Attributes), label="Select an Attribute to plot", value='voiced', interactive=True)
|
|
|
35 |
return [('H','+'),('E','-'),('N',None),('\n', None),('F','-'),('Fgo','-'),('M','+')]
|
36 |
|
37 |
def recognizeAudio(audio_file, attributes, is_ipa=False):
|
|
|
38 |
global df_output
|
39 |
if is_ipa:
|
40 |
p2att_matrix = 'data/p2att_en_us-ipa.csv'
|
41 |
else:
|
42 |
p2att_matrix = 'data/p2att_en_us-arpa.csv'
|
43 |
+
output = engine.transcribe(audio_file, attributes= 'all', phonological_matrix_file=p2att_matrix, human_readable=False)
|
44 |
records = []
|
45 |
d = json.loads(output)
|
46 |
phonemes = d['Phoneme']['symbols']
|
|
|
|
|
47 |
records.append(['Phoneme']+phonemes)
|
48 |
for att in d['Attributes']:
|
49 |
records.append([att['Name']]+att['Pattern'])
|
50 |
df = pd.DataFrame.from_records(records)
|
51 |
df.fillna('', inplace=True)
|
52 |
df_output = df
|
53 |
+
return df[df[0].isin(['Phoneme']+list(attributes))].to_html(header=False, index=False)
|
54 |
|
55 |
|
56 |
#Get error by matching the expected sequence with the recognized one and return the output in a format that can be visualized by the gradio HighlightedText box
|
|
|
156 |
|
157 |
process.click(fn=recognizeAudio, inputs=[record_audio,att_list, is_ipa], outputs=recognition)
|
158 |
|
|
|
|
|
159 |
with gr.Tab("Assessment"):
|
160 |
assess = gr.Button("Assessment")
|
161 |
diff = []
|
|
|
166 |
color_map={"S": "red", "I": "green", "D":"blue"}, visible=False))
|
167 |
|
168 |
def get_assessment(prompt_phonemes):#, recognized_phonemes, recognized_attributes):
|
169 |
+
outputs = [gr.HighlightedText(visible=False)]*(df_output.shape[0])
|
170 |
outputs[0] = gr.HighlightedText(label=f"Phoneme Assessment",
|
171 |
value=get_error(prompt_phonemes.split(), df_output.iloc[0].values[1:]),
|
172 |
visible=True)
|
173 |
i = 1
|
174 |
+
for j,r in df_output.iloc[1:].iterrows():
|
175 |
convert = lambda ph: '-' if f'n_{att}' in engine.p2att_map[ph] else '+'
|
176 |
att = r.iloc[0]
|
177 |
exp_att = [convert(ph) for ph in prompt_phonemes.split()]
|
178 |
rec_att = r.iloc[1:].values
|
179 |
+
if ''.join(exp_att) != ''.join(rec_att):
|
180 |
+
outputs[i] = gr.HighlightedText(label=f"{att} Assessment",
|
181 |
value=get_error(exp_att, rec_att),
|
182 |
visible=True)
|
183 |
+
i += 1
|
184 |
|
185 |
return outputs
|
186 |
|
187 |
+
assess.click(fn=get_assessment, inputs= [prompt_phonemes], outputs=diff)
|
188 |
+
|
189 |
|
190 |
with gr.Tab("Analysis"):
|
191 |
selected_att = gr.Dropdown( sorted(Attributes), label="Select an Attribute to plot", value='voiced', interactive=True)
|