hetchyy Claude Opus 4.6 commited on
Commit
61e842f
·
1 Parent(s): 6cdb091

Forward gr.Request to pipeline functions in session API endpoints

Browse files

Enables usage logging with proper user ID hashing from HF headers
for all session-based API calls.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Files changed (1) hide show
  1. src/api/session_api.py +13 -8
src/api/session_api.py CHANGED
@@ -13,6 +13,7 @@ import shutil
13
  import time
14
  import uuid
15
 
 
16
  import numpy as np
17
 
18
  from config import SESSION_DIR, SESSION_EXPIRY_SECONDS
@@ -167,13 +168,14 @@ def _format_response(audio_id, json_output):
167
  # ---------------------------------------------------------------------------
168
 
169
  def process_audio_session(audio_data, min_silence_ms, min_speech_ms, pad_ms,
170
- model_name="Base", device="GPU"):
 
171
  """Full pipeline: preprocess -> VAD -> ASR -> alignment. Creates session."""
172
  from src.pipeline import process_audio
173
 
174
  result = process_audio(
175
  audio_data, int(min_silence_ms), int(min_speech_ms), int(pad_ms),
176
- model_name, device,
177
  )
178
  # result is a 9-tuple:
179
  # (html, json_output, speech_intervals, is_complete, audio, sr, intervals, seg_dir, log_row)
@@ -193,7 +195,8 @@ def process_audio_session(audio_data, min_silence_ms, min_speech_ms, pad_ms,
193
 
194
 
195
  def resegment_session(audio_id, min_silence_ms, min_speech_ms, pad_ms,
196
- model_name="Base", device="GPU"):
 
197
  """Re-clean VAD boundaries with new params and re-run ASR + alignment."""
198
  session = load_session(audio_id)
199
  if session is None:
@@ -205,7 +208,7 @@ def resegment_session(audio_id, min_silence_ms, min_speech_ms, pad_ms,
205
  session["speech_intervals"], session["is_complete"],
206
  session["audio"], 16000,
207
  int(min_silence_ms), int(min_speech_ms), int(pad_ms),
208
- model_name, device,
209
  )
210
  json_output = result[1]
211
  if json_output is None:
@@ -216,7 +219,8 @@ def resegment_session(audio_id, min_silence_ms, min_speech_ms, pad_ms,
216
  return _format_response(audio_id, json_output)
217
 
218
 
219
- def retranscribe_session(audio_id, model_name="Base", device="GPU"):
 
220
  """Re-run ASR with a different model on current segment boundaries."""
221
  session = load_session(audio_id)
222
  if session is None:
@@ -237,7 +241,7 @@ def retranscribe_session(audio_id, model_name="Base", device="GPU"):
237
  session["intervals"],
238
  session["audio"], 16000,
239
  session["speech_intervals"], session["is_complete"],
240
- model_name, device,
241
  )
242
  json_output = result[1]
243
  if json_output is None:
@@ -247,7 +251,8 @@ def retranscribe_session(audio_id, model_name="Base", device="GPU"):
247
  return _format_response(audio_id, json_output)
248
 
249
 
250
- def realign_from_timestamps(audio_id, timestamps, model_name="Base", device="GPU"):
 
251
  """Run ASR + alignment on caller-provided timestamp intervals."""
252
  session = load_session(audio_id)
253
  if session is None:
@@ -265,7 +270,7 @@ def realign_from_timestamps(audio_id, timestamps, model_name="Base", device="GPU
265
  intervals,
266
  session["audio"], 16000,
267
  session["speech_intervals"], session["is_complete"],
268
- model_name, device,
269
  )
270
  json_output = result[1]
271
  if json_output is None:
 
13
  import time
14
  import uuid
15
 
16
+ import gradio as gr
17
  import numpy as np
18
 
19
  from config import SESSION_DIR, SESSION_EXPIRY_SECONDS
 
168
  # ---------------------------------------------------------------------------
169
 
170
  def process_audio_session(audio_data, min_silence_ms, min_speech_ms, pad_ms,
171
+ model_name="Base", device="GPU",
172
+ request: gr.Request = None):
173
  """Full pipeline: preprocess -> VAD -> ASR -> alignment. Creates session."""
174
  from src.pipeline import process_audio
175
 
176
  result = process_audio(
177
  audio_data, int(min_silence_ms), int(min_speech_ms), int(pad_ms),
178
+ model_name, device, request=request,
179
  )
180
  # result is a 9-tuple:
181
  # (html, json_output, speech_intervals, is_complete, audio, sr, intervals, seg_dir, log_row)
 
195
 
196
 
197
  def resegment_session(audio_id, min_silence_ms, min_speech_ms, pad_ms,
198
+ model_name="Base", device="GPU",
199
+ request: gr.Request = None):
200
  """Re-clean VAD boundaries with new params and re-run ASR + alignment."""
201
  session = load_session(audio_id)
202
  if session is None:
 
208
  session["speech_intervals"], session["is_complete"],
209
  session["audio"], 16000,
210
  int(min_silence_ms), int(min_speech_ms), int(pad_ms),
211
+ model_name, device, request=request,
212
  )
213
  json_output = result[1]
214
  if json_output is None:
 
219
  return _format_response(audio_id, json_output)
220
 
221
 
222
+ def retranscribe_session(audio_id, model_name="Base", device="GPU",
223
+ request: gr.Request = None):
224
  """Re-run ASR with a different model on current segment boundaries."""
225
  session = load_session(audio_id)
226
  if session is None:
 
241
  session["intervals"],
242
  session["audio"], 16000,
243
  session["speech_intervals"], session["is_complete"],
244
+ model_name, device, request=request,
245
  )
246
  json_output = result[1]
247
  if json_output is None:
 
251
  return _format_response(audio_id, json_output)
252
 
253
 
254
+ def realign_from_timestamps(audio_id, timestamps, model_name="Base", device="GPU",
255
+ request: gr.Request = None):
256
  """Run ASR + alignment on caller-provided timestamp intervals."""
257
  session = load_session(audio_id)
258
  if session is None:
 
270
  intervals,
271
  session["audio"], 16000,
272
  session["speech_intervals"], session["is_complete"],
273
+ model_name, device, request=request,
274
  )
275
  json_output = result[1]
276
  if json_output is None: