abreza commited on
Commit
2161d50
·
1 Parent(s): a4e2823

Enhance language selection and error handling in transcribe_audio function

Browse files
Files changed (1) hide show
  1. app.py +24 -9
app.py CHANGED
@@ -12,6 +12,7 @@ os.makedirs(MODEL_DIR, exist_ok=True)
12
  language_options = [(f"{code}: {name[0]}", code)
13
  for code, name in LANGUAGE_CODES.items()]
14
  language_options.sort(key=lambda x: x[0])
 
15
 
16
  MODELS = {
17
  "base (140M)": "base",
@@ -69,16 +70,22 @@ def ensure_model_downloaded(model_key):
69
 
70
 
71
  def update_regions(language):
72
- if language and language in language_to_regions:
 
 
 
73
  regions = language_to_regions[language]
74
  regions.sort(key=lambda x: x[0])
75
- return regions, regions[0][1], True
 
76
  return [], None, False
77
 
78
 
79
  @spaces.GPU
80
  def transcribe_audio(audio_file, model_name, language, region, predict_timestamps, padding_speech):
81
  try:
 
 
82
  ensure_assets_downloaded()
83
 
84
  model_key = MODELS[model_name]
@@ -108,6 +115,7 @@ def transcribe_audio(audio_file, model_name, language, region, predict_timestamp
108
  f", region: {result.region}" if result.region else "")
109
  return output_text, detected_info
110
  except Exception as e:
 
111
  return f"Error: {str(e)}", "Transcription failed"
112
 
113
 
@@ -128,21 +136,21 @@ with gr.Blocks(title="Dolphin Speech Recognition") as demo:
128
  with gr.Row():
129
  model_dropdown = gr.Dropdown(
130
  choices=list(MODELS.keys()),
131
- value=list(MODELS.keys())[1],
132
  label="Model Size"
133
  )
134
 
135
  with gr.Row():
136
  language_dropdown = gr.Dropdown(
137
  choices=language_options,
138
- value=None,
139
- label="Language (Optional)",
140
- info="If not selected, the model will auto-detect language"
141
  )
142
  region_dropdown = gr.Dropdown(
143
  choices=[],
144
  value=None,
145
- label="Region (Optional)",
146
  visible=False
147
  )
148
 
@@ -162,10 +170,17 @@ with gr.Blocks(title="Dolphin Speech Recognition") as demo:
162
  output_text = gr.Textbox(label="Transcription", lines=10)
163
  language_info = gr.Textbox(label="Detected Language", lines=1)
164
 
 
 
 
 
 
 
 
165
  language_dropdown.change(
166
- fn=update_regions,
167
  inputs=[language_dropdown],
168
- outputs=[region_dropdown, region_dropdown, region_dropdown]
169
  )
170
 
171
  transcribe_button.click(
 
12
  language_options = [(f"{code}: {name[0]}", code)
13
  for code, name in LANGUAGE_CODES.items()]
14
  language_options.sort(key=lambda x: x[0])
15
+ language_options = [("Auto-detect", None)] + language_options
16
 
17
  MODELS = {
18
  "base (140M)": "base",
 
70
 
71
 
72
  def update_regions(language):
73
+ if not language:
74
+ return [], None, False
75
+
76
+ if language in language_to_regions:
77
  regions = language_to_regions[language]
78
  regions.sort(key=lambda x: x[0])
79
+ default_value = regions[0][1] if regions else None
80
+ return regions, default_value, True
81
  return [], None, False
82
 
83
 
84
  @spaces.GPU
85
  def transcribe_audio(audio_file, model_name, language, region, predict_timestamps, padding_speech):
86
  try:
87
+ if not audio_file:
88
+ return "Please upload or record audio first", ""
89
  ensure_assets_downloaded()
90
 
91
  model_key = MODELS[model_name]
 
115
  f", region: {result.region}" if result.region else "")
116
  return output_text, detected_info
117
  except Exception as e:
118
+ print(f"Error in transcribe_audio: {str(e)}")
119
  return f"Error: {str(e)}", "Transcription failed"
120
 
121
 
 
136
  with gr.Row():
137
  model_dropdown = gr.Dropdown(
138
  choices=list(MODELS.keys()),
139
+ value=list(MODELS.keys())[0],
140
  label="Model Size"
141
  )
142
 
143
  with gr.Row():
144
  language_dropdown = gr.Dropdown(
145
  choices=language_options,
146
+ value=language_options[0][1],
147
+ label="Language",
148
+ info="Default is auto-detect"
149
  )
150
  region_dropdown = gr.Dropdown(
151
  choices=[],
152
  value=None,
153
+ label="Region",
154
  visible=False
155
  )
156
 
 
170
  output_text = gr.Textbox(label="Transcription", lines=10)
171
  language_info = gr.Textbox(label="Detected Language", lines=1)
172
 
173
+ def on_language_change(language):
174
+ regions, default_value, is_visible = update_regions(language)
175
+ return {
176
+ region_dropdown: gr.update(
177
+ choices=regions, value=default_value, visible=is_visible)
178
+ }
179
+
180
  language_dropdown.change(
181
+ fn=on_language_change,
182
  inputs=[language_dropdown],
183
+ outputs=[region_dropdown]
184
  )
185
 
186
  transcribe_button.click(