Update spoken_module.py
Browse files- spoken_module.py +13 -8
spoken_module.py
CHANGED
|
@@ -40,7 +40,6 @@ Transcript:
|
|
| 40 |
)
|
| 41 |
feedback = response.choices[0].message.content
|
| 42 |
|
| 43 |
-
# Strip the JSON block from the feedback before returning to user
|
| 44 |
try:
|
| 45 |
split_idx = feedback.index('}') + 1
|
| 46 |
feedback_clean = feedback[split_idx:].strip()
|
|
@@ -85,6 +84,12 @@ def spoken_dashboard(nickname_input):
|
|
| 85 |
goal_dropdown = gr.Dropdown(label="π― Goal", choices=["Interview preparation", "Public speaking", "Class presentation", "General improvement"], value="General improvement")
|
| 86 |
focus_checkboxes = gr.CheckboxGroup(label="π§ Focus Areas", choices=["Clarity", "Structure", "Fluency", "Tone", "Content Relevance"], value=["Clarity", "Structure", "Fluency", "Tone", "Content Relevance"])
|
| 87 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 88 |
with gr.Row():
|
| 89 |
audio_input = gr.Audio(type="filepath", label="π Speak or Upload Audio")
|
| 90 |
audio_output = gr.Audio(label="π Chatter's Response", type="filepath")
|
|
@@ -102,13 +107,13 @@ def spoken_dashboard(nickname_input):
|
|
| 102 |
|
| 103 |
with gr.Row():
|
| 104 |
score_chart = gr.Plot(label="π Score Comparison")
|
| 105 |
-
trend_chart = gr.Plot(label="π
|
| 106 |
|
| 107 |
milestone_box = gr.Markdown(visible=False)
|
| 108 |
|
| 109 |
-
def tutor_feedback(audio_file, language, goal, focus_areas, nickname):
|
| 110 |
if not audio_file:
|
| 111 |
-
return "", "No audio received.", None, "", [], render_empty_chart("π Score Comparison"), render_empty_chart("π
|
| 112 |
|
| 113 |
if hasattr(nickname, "value"):
|
| 114 |
nickname = nickname.value
|
|
@@ -140,19 +145,19 @@ def spoken_dashboard(nickname_input):
|
|
| 140 |
session_table = [[s.timestamp, s.language, s.transcript[:40], s.feedback[:40]] for s in sessions]
|
| 141 |
|
| 142 |
score_plot = render_score_chart(build_score_comparison_data(full_feedback, previous_feedback)) if previous_feedback else render_empty_chart("π Score Comparison")
|
| 143 |
-
dates,
|
| 144 |
-
trend_plot = render_trend_chart(dates,
|
| 145 |
|
| 146 |
return transcript, feedback_clean, mp3_path, transcript, session_table, score_plot, trend_plot, gr.update(visible=bool(milestone), value=milestone)
|
| 147 |
|
| 148 |
audio_input.change(
|
| 149 |
fn=tutor_feedback,
|
| 150 |
-
inputs=[audio_input, language_dropdown, goal_dropdown, focus_checkboxes, nickname_input],
|
| 151 |
outputs=[transcript_box, feedback_box, audio_output, hidden_transcript, history_table, score_chart, trend_chart, milestone_box],
|
| 152 |
show_progress="minimal"
|
| 153 |
)
|
| 154 |
|
| 155 |
-
try_again.click(fn=lambda: ("", "", None, "", "", render_empty_chart("π Score Comparison"), render_empty_chart("π
|
| 156 |
inputs=None,
|
| 157 |
outputs=[transcript_box, feedback_box, audio_output, hidden_transcript, example_box, score_chart, trend_chart, milestone_box])
|
| 158 |
|
|
|
|
| 40 |
)
|
| 41 |
feedback = response.choices[0].message.content
|
| 42 |
|
|
|
|
| 43 |
try:
|
| 44 |
split_idx = feedback.index('}') + 1
|
| 45 |
feedback_clean = feedback[split_idx:].strip()
|
|
|
|
| 84 |
goal_dropdown = gr.Dropdown(label="π― Goal", choices=["Interview preparation", "Public speaking", "Class presentation", "General improvement"], value="General improvement")
|
| 85 |
focus_checkboxes = gr.CheckboxGroup(label="π§ Focus Areas", choices=["Clarity", "Structure", "Fluency", "Tone", "Content Relevance"], value=["Clarity", "Structure", "Fluency", "Tone", "Content Relevance"])
|
| 86 |
|
| 87 |
+
trend_category_dropdown = gr.Dropdown(
|
| 88 |
+
label="π Track Progress In",
|
| 89 |
+
choices=["Clarity", "Structure", "Fluency", "Tone", "Content Relevance"],
|
| 90 |
+
value="Tone"
|
| 91 |
+
)
|
| 92 |
+
|
| 93 |
with gr.Row():
|
| 94 |
audio_input = gr.Audio(type="filepath", label="π Speak or Upload Audio")
|
| 95 |
audio_output = gr.Audio(label="π Chatter's Response", type="filepath")
|
|
|
|
| 107 |
|
| 108 |
with gr.Row():
|
| 109 |
score_chart = gr.Plot(label="π Score Comparison")
|
| 110 |
+
trend_chart = gr.Plot(label="π Progress Over Time")
|
| 111 |
|
| 112 |
milestone_box = gr.Markdown(visible=False)
|
| 113 |
|
| 114 |
+
def tutor_feedback(audio_file, language, goal, focus_areas, trend_category, nickname):
|
| 115 |
if not audio_file:
|
| 116 |
+
return "", "No audio received.", None, "", [], render_empty_chart("π Score Comparison"), render_empty_chart("π Progress Over Time"), gr.update(visible=False)
|
| 117 |
|
| 118 |
if hasattr(nickname, "value"):
|
| 119 |
nickname = nickname.value
|
|
|
|
| 145 |
session_table = [[s.timestamp, s.language, s.transcript[:40], s.feedback[:40]] for s in sessions]
|
| 146 |
|
| 147 |
score_plot = render_score_chart(build_score_comparison_data(full_feedback, previous_feedback)) if previous_feedback else render_empty_chart("π Score Comparison")
|
| 148 |
+
dates, trend_scores = build_trend_data(sessions, trend_category)
|
| 149 |
+
trend_plot = render_trend_chart(dates, trend_scores, trend_category) if trend_scores else render_empty_chart(f"π {trend_category} Progress")
|
| 150 |
|
| 151 |
return transcript, feedback_clean, mp3_path, transcript, session_table, score_plot, trend_plot, gr.update(visible=bool(milestone), value=milestone)
|
| 152 |
|
| 153 |
audio_input.change(
|
| 154 |
fn=tutor_feedback,
|
| 155 |
+
inputs=[audio_input, language_dropdown, goal_dropdown, focus_checkboxes, trend_category_dropdown, nickname_input],
|
| 156 |
outputs=[transcript_box, feedback_box, audio_output, hidden_transcript, history_table, score_chart, trend_chart, milestone_box],
|
| 157 |
show_progress="minimal"
|
| 158 |
)
|
| 159 |
|
| 160 |
+
try_again.click(fn=lambda: ("", "", None, "", "", render_empty_chart("π Score Comparison"), render_empty_chart("π Progress Over Time"), gr.update(visible=False)),
|
| 161 |
inputs=None,
|
| 162 |
outputs=[transcript_box, feedback_box, audio_output, hidden_transcript, example_box, score_chart, trend_chart, milestone_box])
|
| 163 |
|