Update spoken_module.py
Browse files- spoken_module.py +22 -14
spoken_module.py
CHANGED
|
@@ -27,7 +27,6 @@ Then provide:
|
|
| 27 |
- A detailed summary of strengths and improvement areas.
|
| 28 |
- One motivational line to end with. Do not specifically add motivational keyword, just add the line.
|
| 29 |
Transcript:
|
| 30 |
-
{transcript}
|
| 31 |
{history_section}
|
| 32 |
""".strip()
|
| 33 |
|
|
@@ -39,7 +38,16 @@ Transcript:
|
|
| 39 |
],
|
| 40 |
temperature=0.7
|
| 41 |
)
|
| 42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
|
| 44 |
def generate_example_response(transcript, language):
|
| 45 |
prompt = f"""Rewrite this speech to make it more polished, fluent, and confident.
|
|
@@ -91,8 +99,11 @@ def spoken_dashboard(nickname_input):
|
|
| 91 |
|
| 92 |
example_box = gr.Textbox(label="π£ Suggested Improvement", visible=True)
|
| 93 |
history_table = gr.Dataframe(headers=["π Timestamp", "π Language", "π Transcript", "π¬ Feedback"])
|
| 94 |
-
|
| 95 |
-
|
|
|
|
|
|
|
|
|
|
| 96 |
milestone_box = gr.Markdown(visible=False)
|
| 97 |
|
| 98 |
def tutor_feedback(audio_file, language, goal, focus_areas, nickname):
|
|
@@ -108,34 +119,31 @@ def spoken_dashboard(nickname_input):
|
|
| 108 |
previous_transcript = previous_sessions[-1].transcript if previous_sessions else None
|
| 109 |
previous_feedback = previous_sessions[-1].feedback if previous_sessions else None
|
| 110 |
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
print("GPT FEEDBACK:\n", feedback_text)
|
| 114 |
-
print("PARSED SCORES:\n", parse_scores_from_feedback(feedback_text))
|
| 115 |
|
| 116 |
if previous_feedback:
|
| 117 |
-
|
| 118 |
|
| 119 |
milestone = ""
|
| 120 |
session_count = len(previous_sessions) + 1
|
| 121 |
if session_count in [3, 5, 10]:
|
| 122 |
milestone = f"π Congrats on completing **{session_count} sessions**!"
|
| 123 |
-
|
| 124 |
|
| 125 |
lang_code = LANG_CODES.get(language, "en")
|
| 126 |
-
tts = gTTS(
|
| 127 |
mp3_path = f"/tmp/{uuid.uuid4()}.mp3"
|
| 128 |
tts.save(mp3_path)
|
| 129 |
|
| 130 |
-
save_to_db(nickname, transcript,
|
| 131 |
sessions = fetch_user_sessions(nickname)
|
| 132 |
session_table = [[s.timestamp, s.language, s.transcript[:40], s.feedback[:40]] for s in sessions]
|
| 133 |
|
| 134 |
-
score_plot = render_score_chart(build_score_comparison_data(
|
| 135 |
dates, tone_scores = build_trend_data(sessions, "Tone")
|
| 136 |
trend_plot = render_trend_chart(dates, tone_scores, "Tone") if tone_scores else render_empty_chart("π Tone Progress")
|
| 137 |
|
| 138 |
-
return transcript,
|
| 139 |
|
| 140 |
audio_input.change(
|
| 141 |
fn=tutor_feedback,
|
|
|
|
| 27 |
- A detailed summary of strengths and improvement areas.
|
| 28 |
- One motivational line to end with. Do not specifically add motivational keyword, just add the line.
|
| 29 |
Transcript:
|
|
|
|
| 30 |
{history_section}
|
| 31 |
""".strip()
|
| 32 |
|
|
|
|
| 38 |
],
|
| 39 |
temperature=0.7
|
| 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()
|
| 47 |
+
except:
|
| 48 |
+
feedback_clean = feedback
|
| 49 |
+
|
| 50 |
+
return feedback, feedback_clean
|
| 51 |
|
| 52 |
def generate_example_response(transcript, language):
|
| 53 |
prompt = f"""Rewrite this speech to make it more polished, fluent, and confident.
|
|
|
|
| 99 |
|
| 100 |
example_box = gr.Textbox(label="π£ Suggested Improvement", visible=True)
|
| 101 |
history_table = gr.Dataframe(headers=["π Timestamp", "π Language", "π Transcript", "π¬ Feedback"])
|
| 102 |
+
|
| 103 |
+
with gr.Row():
|
| 104 |
+
score_chart = gr.Plot(label="π Score Comparison")
|
| 105 |
+
trend_chart = gr.Plot(label="π Tone Progress")
|
| 106 |
+
|
| 107 |
milestone_box = gr.Markdown(visible=False)
|
| 108 |
|
| 109 |
def tutor_feedback(audio_file, language, goal, focus_areas, nickname):
|
|
|
|
| 119 |
previous_transcript = previous_sessions[-1].transcript if previous_sessions else None
|
| 120 |
previous_feedback = previous_sessions[-1].feedback if previous_sessions else None
|
| 121 |
|
| 122 |
+
full_feedback, feedback_clean = generate_feedback(transcript, language, goal, focus_areas, previous_transcript)
|
|
|
|
|
|
|
|
|
|
| 123 |
|
| 124 |
if previous_feedback:
|
| 125 |
+
feedback_clean += generate_progress_summary(full_feedback, previous_feedback)
|
| 126 |
|
| 127 |
milestone = ""
|
| 128 |
session_count = len(previous_sessions) + 1
|
| 129 |
if session_count in [3, 5, 10]:
|
| 130 |
milestone = f"π Congrats on completing **{session_count} sessions**!"
|
| 131 |
+
feedback_clean += f"\n\n{milestone}"
|
| 132 |
|
| 133 |
lang_code = LANG_CODES.get(language, "en")
|
| 134 |
+
tts = gTTS(feedback_clean, lang=lang_code)
|
| 135 |
mp3_path = f"/tmp/{uuid.uuid4()}.mp3"
|
| 136 |
tts.save(mp3_path)
|
| 137 |
|
| 138 |
+
save_to_db(nickname, transcript, full_feedback, language)
|
| 139 |
sessions = fetch_user_sessions(nickname)
|
| 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, tone_scores = build_trend_data(sessions, "Tone")
|
| 144 |
trend_plot = render_trend_chart(dates, tone_scores, "Tone") if tone_scores else render_empty_chart("π Tone Progress")
|
| 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,
|