hetchyy commited on
Commit
204bb5a
·
1 Parent(s): 995d0eb

Fix timestamps alignment call

Browse files
Files changed (1) hide show
  1. src/mfa.py +18 -5
src/mfa.py CHANGED
@@ -12,7 +12,7 @@ _ISTIATHA_TEXT = "أَعُوذُ بِٱللَّهِ مِنَ الشَّيْطَ
12
 
13
  def _mfa_upload_and_submit(refs, audio_paths,
14
  method=MFA_METHOD, beam=MFA_BEAM, retry_beam=MFA_RETRY_BEAM,
15
- shared_cmvn=MFA_SHARED_CMVN):
16
  """Upload audio files and submit alignment batch to the MFA Space.
17
 
18
  Returns (event_id, headers, base_url) so the caller can yield a progress
@@ -24,6 +24,7 @@ def _mfa_upload_and_submit(refs, audio_paths,
24
  method: Alignment method ("kalpy", "align_one", "python_api", "cli").
25
  beam: Viterbi beam width (default 10).
26
  retry_beam: Retry beam width (default 40).
 
27
  """
28
  import requests
29
 
@@ -59,12 +60,12 @@ def _mfa_upload_and_submit(refs, audio_paths,
59
  for p in uploaded_paths
60
  ]
61
 
62
- # Submit batch alignment (extra params map to hidden Gradio Textbox inputs)
63
  submit_resp = requests.post(
64
  f"{base}/gradio_api/call/align_batch",
65
  headers={**headers, "Content-Type": "application/json"},
66
  json={"data": [refs, file_data_list, method, str(beam), str(retry_beam),
67
- str(shared_cmvn).lower()]},
68
  timeout=MFA_TIMEOUT,
69
  )
70
  submit_resp.raise_for_status()
@@ -91,10 +92,19 @@ def _mfa_wait_result(event_id, headers, base):
91
  if line and line.startswith("event: "):
92
  current_event = line[7:]
93
  elif line and line.startswith("data: "):
 
94
  if current_event == "complete":
95
- result_data = line[6:]
96
  elif current_event == "error":
97
- raise RuntimeError(f"MFA align_batch SSE error: {line[6:]}")
 
 
 
 
 
 
 
 
98
 
99
  if result_data is None:
100
  raise RuntimeError("No data received from MFA align_batch SSE stream")
@@ -104,6 +114,9 @@ def _mfa_wait_result(event_id, headers, base):
104
  if isinstance(parsed, list) and len(parsed) == 1:
105
  parsed = parsed[0]
106
 
 
 
 
107
  if not isinstance(parsed, dict) or parsed.get("status") != "ok":
108
  raise RuntimeError(f"MFA align_batch failed: {parsed}")
109
 
 
12
 
13
  def _mfa_upload_and_submit(refs, audio_paths,
14
  method=MFA_METHOD, beam=MFA_BEAM, retry_beam=MFA_RETRY_BEAM,
15
+ shared_cmvn=MFA_SHARED_CMVN, padding="forward"):
16
  """Upload audio files and submit alignment batch to the MFA Space.
17
 
18
  Returns (event_id, headers, base_url) so the caller can yield a progress
 
24
  method: Alignment method ("kalpy", "align_one", "python_api", "cli").
25
  beam: Viterbi beam width (default 10).
26
  retry_beam: Retry beam width (default 40).
27
+ padding: Gap-padding strategy ("forward", "symmetric", "none").
28
  """
29
  import requests
30
 
 
60
  for p in uploaded_paths
61
  ]
62
 
63
+ # Submit batch alignment (7 params: refs, files, method, beam, retry_beam, shared_cmvn, padding)
64
  submit_resp = requests.post(
65
  f"{base}/gradio_api/call/align_batch",
66
  headers={**headers, "Content-Type": "application/json"},
67
  json={"data": [refs, file_data_list, method, str(beam), str(retry_beam),
68
+ str(shared_cmvn).lower(), padding]},
69
  timeout=MFA_TIMEOUT,
70
  )
71
  submit_resp.raise_for_status()
 
92
  if line and line.startswith("event: "):
93
  current_event = line[7:]
94
  elif line and line.startswith("data: "):
95
+ data_str = line[6:]
96
  if current_event == "complete":
97
+ result_data = data_str
98
  elif current_event == "error":
99
+ # Gradio 6.x may send null as error data; provide actionable message
100
+ if data_str.strip() in ("null", ""):
101
+ raise RuntimeError(
102
+ "MFA align_batch failed: Space returned null error. "
103
+ "This usually means a parameter count mismatch or "
104
+ "Gradio input validation failure. Check that the "
105
+ "client sends all required parameters."
106
+ )
107
+ raise RuntimeError(f"MFA align_batch SSE error: {data_str}")
108
 
109
  if result_data is None:
110
  raise RuntimeError("No data received from MFA align_batch SSE stream")
 
114
  if isinstance(parsed, list) and len(parsed) == 1:
115
  parsed = parsed[0]
116
 
117
+ if parsed is None:
118
+ raise RuntimeError("MFA align_batch returned null result")
119
+
120
  if not isinstance(parsed, dict) or parsed.get("status") != "ok":
121
  raise RuntimeError(f"MFA align_batch failed: {parsed}")
122