qfuxa commited on
Commit
0c9255f
·
1 Parent(s): 78d7306

Message when launching transcription and no audio is detected

Browse files
whisperlivekit/audio_processor.py CHANGED
@@ -453,31 +453,38 @@ class AudioProcessor:
453
  await self.update_diarization(end_attributed_speaker, combined)
454
  buffer_diarization = combined
455
 
456
- # Create response object
457
- if not lines:
458
- lines = [{
 
 
 
 
 
459
  "speaker": 1,
460
  "text": "",
461
- "beg": format_time(0),
462
- "end": format_time(tokens[-1].end if tokens else 0),
463
  "diff": 0
464
  }]
465
 
466
  response = {
467
- "lines": lines,
 
468
  "buffer_transcription": buffer_transcription,
469
  "buffer_diarization": buffer_diarization,
470
  "remaining_time_transcription": state["remaining_time_transcription"],
471
  "remaining_time_diarization": state["remaining_time_diarization"]
472
  }
473
 
474
- # Only yield if content has changed
475
- response_content = ' '.join([f"{line['speaker']} {line['text']}" for line in lines]) + \
476
- f" | {buffer_transcription} | {buffer_diarization}"
477
 
478
- if response_content != self.last_response_content and (lines or buffer_transcription or buffer_diarization):
 
479
  yield response
480
- self.last_response_content = response_content
481
 
482
  # Check for termination condition
483
  if self.is_stopping:
 
453
  await self.update_diarization(end_attributed_speaker, combined)
454
  buffer_diarization = combined
455
 
456
+ response_status = "active_transcription"
457
+ final_lines_for_response = lines.copy()
458
+
459
+ if not tokens and not buffer_transcription and not buffer_diarization:
460
+ response_status = "no_audio_detected"
461
+ final_lines_for_response = []
462
+ elif response_status == "active_transcription" and not final_lines_for_response:
463
+ final_lines_for_response = [{
464
  "speaker": 1,
465
  "text": "",
466
+ "beg": format_time(state.get("end_buffer", 0)),
467
+ "end": format_time(state.get("end_buffer", 0)),
468
  "diff": 0
469
  }]
470
 
471
  response = {
472
+ "status": response_status,
473
+ "lines": final_lines_for_response,
474
  "buffer_transcription": buffer_transcription,
475
  "buffer_diarization": buffer_diarization,
476
  "remaining_time_transcription": state["remaining_time_transcription"],
477
  "remaining_time_diarization": state["remaining_time_diarization"]
478
  }
479
 
480
+ current_response_signature = f"{response_status} | " + \
481
+ ' '.join([f"{line['speaker']} {line['text']}" for line in final_lines_for_response]) + \
482
+ f" | {buffer_transcription} | {buffer_diarization}"
483
 
484
+ if current_response_signature != self.last_response_content and \
485
+ (final_lines_for_response or buffer_transcription or buffer_diarization or response_status == "no_audio_detected"):
486
  yield response
487
+ self.last_response_content = current_response_signature
488
 
489
  # Check for termination condition
490
  if self.is_stopping:
whisperlivekit/web/live_transcription.html CHANGED
@@ -427,7 +427,8 @@
427
  buffer_transcription = "",
428
  buffer_diarization = "",
429
  remaining_time_transcription = 0,
430
- remaining_time_diarization = 0
 
431
  } = data;
432
 
433
  renderLinesWithBuffer(
@@ -436,13 +437,19 @@
436
  buffer_transcription,
437
  remaining_time_diarization,
438
  remaining_time_transcription,
439
- false // isFinalizing = false for normal updates
 
440
  );
441
  };
442
  });
443
  }
444
 
445
- function renderLinesWithBuffer(lines, buffer_diarization, buffer_transcription, remaining_time_diarization, remaining_time_transcription, isFinalizing = false) {
 
 
 
 
 
446
  const linesHtml = lines.map((item, idx) => {
447
  let timeInfo = "";
448
  if (item.beg !== undefined && item.end !== undefined) {
 
427
  buffer_transcription = "",
428
  buffer_diarization = "",
429
  remaining_time_transcription = 0,
430
+ remaining_time_diarization = 0,
431
+ status = "active_transcription"
432
  } = data;
433
 
434
  renderLinesWithBuffer(
 
437
  buffer_transcription,
438
  remaining_time_diarization,
439
  remaining_time_transcription,
440
+ false,
441
+ status
442
  );
443
  };
444
  });
445
  }
446
 
447
+ function renderLinesWithBuffer(lines, buffer_diarization, buffer_transcription, remaining_time_diarization, remaining_time_transcription, isFinalizing = false, current_status = "active_transcription") {
448
+ if (current_status === "no_audio_detected") {
449
+ linesTranscriptDiv.innerHTML = "<p style='text-align: center; color: #666; margin-top: 20px;'><em>No audio detected...</em></p>";
450
+ return;
451
+ }
452
+
453
  const linesHtml = lines.map((item, idx) => {
454
  let timeInfo = "";
455
  if (item.beg !== undefined && item.end !== undefined) {