mr2along commited on
Commit
a893e98
1 Parent(s): 7515a2b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -6
app.py CHANGED
@@ -20,7 +20,7 @@ def upfilepath(local_filename):
20
  files = {'files': open(local_filename, 'rb')}
21
 
22
  try:
23
- response = requests.post(upload_url, files=files, timeout=30) # Set timeout (e.g., 30 seconds)
24
 
25
  if response.status_code == 200:
26
  result = response.json()
@@ -41,7 +41,6 @@ def transcribe_audio(audio):
41
 
42
  recognizer = sr.Recognizer()
43
 
44
- # Check if the file exists
45
  if not os.path.isfile(audio):
46
  return "Audio file not found."
47
 
@@ -91,6 +90,7 @@ def compare_texts(reference_text, transcribed_text):
91
  reference_words = reference_text.split()
92
  transcribed_words = transcribed_text.split()
93
  incorrect_words_audios = [] # Store audio paths for incorrect words
 
94
 
95
  sm = difflib.SequenceMatcher(None, reference_text, transcribed_text)
96
  similarity_score = round(sm.ratio() * 100, 2)
@@ -108,24 +108,27 @@ def compare_texts(reference_text, transcribed_text):
108
 
109
  html_output += f"<strong>Quality Score:</strong> {similarity_score}%<br>"
110
  html_output += f"<strong>Transcribed Text:</strong> {transcribed_text}<br>"
111
- html_output += f"<strong>IPA Transcription:</strong> {ipa_transcription(reference_text)}<br>" # Display IPA transcription
112
  html_output += "<strong>Word Score List:</strong><br>"
113
 
114
  # Generate colored word score list
115
  for i, word in enumerate(reference_words):
116
  try:
117
  if word.lower() == transcribed_words[i].lower():
 
118
  html_output += f'<span style="color: green;">{word}</span> ' # Correct words in green
119
  elif difflib.get_close_matches(word, [transcribed_words[i]]):
 
120
  html_output += f'<span style="color: yellow;">{word}</span> ' # Close matches in yellow
121
  else:
122
- # Incorrect words in red
123
- html_output += f'<span style="color: red;">{word}</span> '
124
  # Create pronunciation audio for the incorrect word
125
  audio_file_path = create_pronunciation_audio(word)
126
  incorrect_words_audios.append((word, audio_file_path))
127
  except IndexError:
128
  # Word in reference that was not transcribed
 
129
  html_output += f'<span style="color: red;">{word}</span> '
130
 
131
  # Provide audio for incorrect words
@@ -139,7 +142,8 @@ def compare_texts(reference_text, transcribed_text):
139
  html_output += f'{word}: '
140
  html_output += f'<audio controls><source src="{audio_src}" type="audio/mpeg">Your browser does not support the audio tag.</audio>{suggestion_text}<br>'
141
 
142
- return [html_output]
 
143
 
144
  # Step 4: Text-to-Speech Function
145
  def text_to_speech(paragraph):
 
20
  files = {'files': open(local_filename, 'rb')}
21
 
22
  try:
23
+ response = requests.post(upload_url, files=files, timeout=30)
24
 
25
  if response.status_code == 200:
26
  result = response.json()
 
41
 
42
  recognizer = sr.Recognizer()
43
 
 
44
  if not os.path.isfile(audio):
45
  return "Audio file not found."
46
 
 
90
  reference_words = reference_text.split()
91
  transcribed_words = transcribed_text.split()
92
  incorrect_words_audios = [] # Store audio paths for incorrect words
93
+ word_score_list = [] # To store each word's score
94
 
95
  sm = difflib.SequenceMatcher(None, reference_text, transcribed_text)
96
  similarity_score = round(sm.ratio() * 100, 2)
 
108
 
109
  html_output += f"<strong>Quality Score:</strong> {similarity_score}%<br>"
110
  html_output += f"<strong>Transcribed Text:</strong> {transcribed_text}<br>"
111
+ html_output += f"<strong>IPA Transcription:</strong> {ipa_transcription(reference_text)}<br>"
112
  html_output += "<strong>Word Score List:</strong><br>"
113
 
114
  # Generate colored word score list
115
  for i, word in enumerate(reference_words):
116
  try:
117
  if word.lower() == transcribed_words[i].lower():
118
+ word_score_list.append({"quality_score": 100, "word": word})
119
  html_output += f'<span style="color: green;">{word}</span> ' # Correct words in green
120
  elif difflib.get_close_matches(word, [transcribed_words[i]]):
121
+ word_score_list.append({"quality_score": 80, "word": word}) # Close matches
122
  html_output += f'<span style="color: yellow;">{word}</span> ' # Close matches in yellow
123
  else:
124
+ word_score_list.append({"quality_score": 0, "word": word})
125
+ html_output += f'<span style="color: red;">{word}</span> ' # Incorrect words in red
126
  # Create pronunciation audio for the incorrect word
127
  audio_file_path = create_pronunciation_audio(word)
128
  incorrect_words_audios.append((word, audio_file_path))
129
  except IndexError:
130
  # Word in reference that was not transcribed
131
+ word_score_list.append({"quality_score": 0, "word": word})
132
  html_output += f'<span style="color: red;">{word}</span> '
133
 
134
  # Provide audio for incorrect words
 
142
  html_output += f'{word}: '
143
  html_output += f'<audio controls><source src="{audio_src}" type="audio/mpeg">Your browser does not support the audio tag.</audio>{suggestion_text}<br>'
144
 
145
+ # Return structured data
146
+ return [html_output, word_score_list]
147
 
148
  # Step 4: Text-to-Speech Function
149
  def text_to_speech(paragraph):