Real-time, local speech-to-text with streaming ASR, speaker diarization, translation, and OpenAI/Deepgram-compatible APIs.
This report presents the forensic synthetic code analysis of QuentinFuxa/WhisperLiveKit, a Python project with 10,972 GitHub stars. SynthScan v2.0 examined 43,272 lines of code across 178 source files, recording 687 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 23.7 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 687 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | whisperlivekit/config.py | 251 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | whisperlivekit/config.py | 253 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | whisperlivekit/test_harness.py | 117 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/test_harness.py | 119 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/test_harness.py | 359 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/test_harness.py | 361 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/test_harness.py | 463 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/test_harness.py | 465 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/voxtral_mlx_asr.py | 50 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/voxtral_mlx_asr.py | 52 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/voxtral_mlx_asr.py | 88 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/voxtral_mlx_asr.py | 90 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | whisperlivekit/cli.py | 24 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | whisperlivekit/cli.py | 26 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | whisperlivekit/cli.py | 612 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | whisperlivekit/cli.py | 614 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | whisperlivekit/cli.py | 1230 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | whisperlivekit/cli.py | 1232 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | whisperlivekit/cli.py | 1662 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | whisperlivekit/cli.py | 1664 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 147 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 149 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 275 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 277 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 315 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 317 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 452 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 454 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 788 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 790 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 892 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 894 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 1068 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 1070 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 1163 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 1165 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 1264 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/cli.py | 1266 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | whisperlivekit/basic_server.py | 173 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | whisperlivekit/basic_server.py | 175 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/basic_server.py | 189 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/basic_server.py | 191 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/translation_alignatt.py | 129 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | whisperlivekit/translation_alignatt.py | 131 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | whisperlivekit/translation_alignatt.py | 183 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | whisperlivekit/translation_alignatt.py | 185 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | whisperlivekit/test_data.py | 123 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | whisperlivekit/test_data.py | 125 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/test_data.py | 267 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/test_data.py | 269 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/benchmark/datasets.py | 62 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/benchmark/datasets.py | 64 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/benchmark/datasets.py | 214 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/benchmark/datasets.py | 216 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/benchmark/datasets.py | 252 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/benchmark/datasets.py | 254 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/benchmark/datasets.py | 441 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/benchmark/datasets.py | 443 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/benchmark/datasets.py | 476 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | whisperlivekit/benchmark/datasets.py | 478 | # --------------------------------------------------------------------------- | COMMENT |
| 68 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | whisperlivekit/metrics.py | 85 | def compute_timestamp_accuracy( | CODE |
| LOW | whisperlivekit/config.py | 12 | def validate_pause_segmentation_seconds(value: float) -> float: | CODE |
| LOW | whisperlivekit/backend_support.py | 32 | def voxtral_hf_backend_available(): | CODE |
| LOW | whisperlivekit/test_harness.py | 73 | def _load_audio_pcm_soundfile(audio_path: str, sample_rate: int) -> Optional[bytes]: | CODE |
| LOW | whisperlivekit/funasr_backend.py | 23 | def _load_funasr_dependencies(): | CODE |
| LOW | whisperlivekit/tokens_alignment.py | 20 | def resolve_retention_seconds(requested: Optional[float], mode: str) -> float: | CODE |
| LOW | whisperlivekit/tokens_alignment.py | 175 | def compute_punctuations_segments(self, tokens: Optional[List[ASRToken]] = None) -> List[PuncSegment]: | CODE |
| LOW | whisperlivekit/tokens_alignment.py | 207 | def compute_new_punctuations_segments(self) -> List[PuncSegment]: | CODE |
| LOW | whisperlivekit/tokens_alignment.py | 236 | def concatenate_diar_segments(self) -> List[SpeakerSegment]: | CODE |
| LOW | whisperlivekit/tokens_alignment.py | 310 | def _segment_from_token_group(tokens: List[ASRToken], speaker: int) -> Optional[Segment]: | CODE |
| LOW | whisperlivekit/tokens_alignment.py | 346 | def build_token_speaker_segments( | CODE |
| LOW | whisperlivekit/core.py | 468 | def online_diarization_factory(args, diarization_backend): | CODE |
| LOW | whisperlivekit/core.py | 483 | def online_translation_factory(args, translation_model): | CODE |
| LOW⚡ | whisperlivekit/audio_processor.py | 830 | async def _update_diarization_state(self, diarization_segments) -> None: | CODE |
| LOW⚡ | whisperlivekit/audio_processor.py | 839 | async def _drain_diarization_buffer(self) -> None: | CODE |
| LOW | whisperlivekit/audio_processor.py | 240 | async def _emit_stream_event_after_snapshot( | CODE |
| LOW | whisperlivekit/audio_processor.py | 258 | async def _queue_tokens_for_translation(self, tokens: List[ASRToken]) -> None: | CODE |
| LOW | whisperlivekit/audio_processor.py | 305 | async def _flush_pending_translation_tokens(self) -> None: | CODE |
| LOW | whisperlivekit/audio_processor.py | 312 | async def _queue_hypothesis_tail_for_translation(self, buffer_transcript) -> None: | CODE |
| LOW | whisperlivekit/audio_processor.py | 364 | def _is_pause_segmentation_boundary(self, silence: Silence) -> bool: | CODE |
| LOW | whisperlivekit/audio_processor.py | 420 | def _latest_committed_transcription_end(self) -> float: | CODE |
| LOW | whisperlivekit/audio_processor.py | 543 | async def _run_counted_transcription_call(self, method, *args): | CODE |
| LOW | whisperlivekit/audio_processor.py | 553 | async def _run_counted_process_iter(self): | CODE |
| LOW | whisperlivekit/audio_processor.py | 1235 | async def _finalize_current_silence_at_stream_end(self) -> None: | CODE |
| LOW⚡ | whisperlivekit/cli.py | 604 | def _apply_diarization_cli_kwargs(parsed, kwargs): | CODE |
| LOW | whisperlivekit/cli.py | 587 | def _add_diarization_cli_arguments(parser): | CODE |
| LOW | whisperlivekit/cli.py | 715 | def _format_verbose_json_result(result, duration: float, language: str) -> dict: | CODE |
| LOW | whisperlivekit/deepgram_compat.py | 917 | async def handle_deepgram_websocket( | CODE |
| LOW⚡ | whisperlivekit/basic_server.py | 178 | async def deepgram_websocket_endpoint(websocket: WebSocket): | CODE |
| LOW | whisperlivekit/basic_server.py | 235 | def _speaker_label_from_index(index: int) -> str: | CODE |
| LOW | whisperlivekit/translation.py | 18 | def session_translation_factory(args, translation_model, target_language): | CODE |
| LOW | whisperlivekit/translation_alignatt.py | 158 | def validate_buffer_and_reset(self) -> Tuple[Translation, TimedText]: | CODE |
| LOW | whisperlivekit/thread_safety.py | 104 | def print_deployment_recommendations(): | CODE |
| LOW⚡ | whisperlivekit/test_data.py | 127 | def _download_librispeech_samples(n_samples: int = 3) -> List[Dict]: | CODE |
| LOW | whisperlivekit/benchmark/compat.py | 23 | def backend_supports_language(backend: str, language: str) -> bool: | CODE |
| LOW | whisperlivekit/benchmark/compat.py | 31 | def detect_available_backends() -> List[str]: | CODE |
| LOW | whisperlivekit/web/live_transcription.js | 915 | async function checkAndRequestPermissions() { | CODE |
| LOW⚡ | whisperlivekit/voxtral_mlx/model.py | 280 | def forward_transformer_incremental(self, x, cache_list): | CODE |
| LOW | whisperlivekit/simul_whisper/backend.py | 176 | def _reset_after_unstable_output(self, reason: str) -> None: | CODE |
| LOW | whisperlivekit/simul_whisper/backend.py | 219 | def _remember_committed_words(self, tokens: List[ASRToken]) -> None: | CODE |
| LOW | whisperlivekit/simul_whisper/backend.py | 441 | def _decoder_path_from_config(self) -> Optional[str]: | CODE |
| LOW | whisperlivekit/simul_whisper/align_att_base.py | 153 | def _detect_language_if_needed(self, encoder_feature): | CODE |
| LOW | whisperlivekit/simul_whisper/align_att_base.py | 340 | def _normalize_token_timestamps(timestamps, expected_len): | CODE |
| LOW | whisperlivekit/simul_whisper/align_att_base.py | 592 | def _get_logits_and_cross_attn(self, tokens, encoder_feature): | CODE |
| LOW | whisperlivekit/simul_whisper/simul_whisper.py | 79 | def _encoder_features_to_tensor(value: Any, device: str) -> torch.Tensor: | CODE |
| LOW | whisperlivekit/simul_whisper/simul_whisper.py | 357 | def _get_logits_and_cross_attn(self, tokens, encoder_feature): | CODE |
| LOW | whisperlivekit/simul_whisper/mlx/simul_whisper.py | 315 | def _get_logits_and_cross_attn(self, tokens, encoder_feature): | CODE |
| LOW | whisperlivekit/local_agreement/online_asr.py | 154 | def get_audio_buffer_end_time(self) -> float: | CODE |
| LOW | whisperlivekit/local_agreement/whisper_online.py | 196 | def _normalize_backend_choice( | CODE |
| LOW | whisperlivekit/whisper/__init__.py | 599 | def convert_encoder_to_coreml( | CODE |
| LOW | whisperlivekit/whisper/tokenizer.py | 238 | def sot_sequence_including_notimestamps(self) -> Tuple[int]: | CODE |
| LOW | whisperlivekit/whisper/normalizers/basic.py | 27 | def remove_symbols_and_diacritics(s: str, keep=""): | CODE |
| LOW | tests/test_deepgram_compat.py | 98 | def test_deepgram_options_parse_supported_values(params, expected): | CODE |
| LOW | tests/test_deepgram_compat.py | 142 | def test_deepgram_options_reject_invalid_values(params, message): | CODE |
| LOW | tests/test_deepgram_compat.py | 147 | def test_deepgram_options_require_vac_for_endpointing(): | CODE |
| LOW | tests/test_deepgram_compat.py | 173 | def test_websocket_auth_accepts_wlk_and_deepgram_token_styles( | CODE |
| LOW | tests/test_deepgram_compat.py | 188 | async def test_line_growth_and_pause_emit_every_word_once(): | CODE |
| LOW | tests/test_deepgram_compat.py | 215 | async def test_mutable_suffix_replacement_never_publishes_retracted_word(): | CODE |
| LOW | tests/test_deepgram_compat.py | 236 | async def test_split_and_merge_lines_do_not_duplicate_tokens(): | CODE |
| LOW | tests/test_deepgram_compat.py | 256 | async def test_interim_revises_speaker_and_time_without_duplicating_final_text(): | CODE |
| 226 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | whisperlivekit/test_harness.py | 85 | except Exception: | CODE |
| LOW | whisperlivekit/test_harness.py | 544 | except Exception as e: | CODE |
| LOW | whisperlivekit/funasr_backend.py | 62 | except Exception as exc: | CODE |
| LOW | whisperlivekit/voxtral_mlx_asr.py | 208 | except Exception as e: | CODE |
| MEDIUM | whisperlivekit/voxtral_mlx_asr.py | 205 | def process_iter(self, is_last=False) -> Tuple[List[ASRToken], float]: | CODE |
| LOW | whisperlivekit/canary_backend.py | 154 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | whisperlivekit/ffmpeg_manager.py | 95 | except Exception as e: | STRING |
| LOW | whisperlivekit/ffmpeg_manager.py | 137 | except Exception as e: | CODE |
| LOW | whisperlivekit/ffmpeg_manager.py | 158 | except Exception as e: | CODE |
| LOW | whisperlivekit/ffmpeg_manager.py | 181 | except Exception as e: | CODE |
| LOW | whisperlivekit/ffmpeg_manager.py | 200 | except Exception as e: | CODE |
| MEDIUM | whisperlivekit/ffmpeg_manager.py | 189 | def _drain_stderr(self): | CODE |
| LOW | whisperlivekit/voxtral_hf_streaming.py | 175 | except Exception as e: | CODE |
| LOW | whisperlivekit/voxtral_hf_streaming.py | 345 | except Exception as e: | CODE |
| MEDIUM | whisperlivekit/voxtral_hf_streaming.py | 172 | def process_iter(self, is_last=False) -> Tuple[List[ASRToken], float]: | CODE |
| MEDIUM | whisperlivekit/voxtral_hf_streaming.py | 331 | def run_generate(): | CODE |
| LOW | whisperlivekit/core.py | 71 | except Exception: | CODE |
| LOW | whisperlivekit/core.py | 236 | except Exception as e: | CODE |
| LOW | whisperlivekit/audio_processor.py | 518 | except Exception as e: | CODE |
| LOW | whisperlivekit/audio_processor.py | 643 | except Exception as e: | CODE |
| LOW | whisperlivekit/audio_processor.py | 814 | except Exception as e: | CODE |
| LOW | whisperlivekit/audio_processor.py | 876 | except Exception as e: | CODE |
| LOW | whisperlivekit/audio_processor.py | 883 | except Exception as e: | CODE |
| LOW | whisperlivekit/audio_processor.py | 917 | except Exception as e: | CODE |
| LOW | whisperlivekit/audio_processor.py | 989 | except Exception: | CODE |
| LOW | whisperlivekit/audio_processor.py | 1058 | except Exception as e: | CODE |
| LOW | whisperlivekit/audio_processor.py | 1078 | except Exception as e: | CODE |
| LOW | whisperlivekit/warmup.py | 27 | except Exception as e: | CODE |
| LOW | whisperlivekit/warmup.py | 39 | except Exception as e: | CODE |
| LOW | whisperlivekit/warmup.py | 53 | except Exception as e: | CODE |
| LOW⚡ | whisperlivekit/cli.py | 1222 | except Exception as e: | CODE |
| LOW⚡ | whisperlivekit/cli.py | 1671 | except Exception: | CODE |
| LOW | whisperlivekit/cli.py | 259 | except Exception: | CODE |
| LOW | whisperlivekit/cli.py | 578 | except Exception as e: | CODE |
| LOW | whisperlivekit/cli.py | 1017 | except Exception as e: | CODE |
| LOW | whisperlivekit/cli.py | 1322 | except Exception as e: | CODE |
| LOW | whisperlivekit/cli.py | 1418 | except Exception as e: | CODE |
| LOW | whisperlivekit/cli.py | 1426 | except Exception as e: | CODE |
| LOW | whisperlivekit/deepgram_compat.py | 955 | except Exception: | CODE |
| LOW | whisperlivekit/deepgram_compat.py | 984 | except Exception: | CODE |
| LOW | whisperlivekit/deepgram_compat.py | 1008 | except Exception: | CODE |
| LOW | whisperlivekit/deepgram_compat.py | 1117 | except Exception: | CODE |
| MEDIUM | whisperlivekit/deepgram_compat.py | 967 | def consume_results() -> None: | CODE |
| MEDIUM | whisperlivekit/deepgram_compat.py | 990 | def consume_events() -> None: | CODE |
| LOW | whisperlivekit/basic_server.py | 87 | except Exception as e: | CODE |
| LOW | whisperlivekit/basic_server.py | 139 | except Exception as e: | CODE |
| LOW⚡ | whisperlivekit/basic_server.py | 156 | except Exception as e: | CODE |
| LOW⚡ | whisperlivekit/basic_server.py | 166 | except Exception as e: | CODE |
| LOW | whisperlivekit/translation_alignatt.py | 154 | except Exception as exc: # translation must never kill the session | CODE |
| LOW | whisperlivekit/translation_alignatt.py | 205 | except Exception: | CODE |
| LOW | whisperlivekit/translation_alignatt.py | 265 | except Exception as exc: | CODE |
| MEDIUM | whisperlivekit/translation_alignatt.py | 151 | def process(self) -> Tuple[Optional[Translation], TimedText]: | CODE |
| LOW | whisperlivekit/test_data.py | 302 | except Exception as e: | CODE |
| LOW | whisperlivekit/test_data.py | 307 | except Exception as e: | CODE |
| LOW | whisperlivekit/test_client.py | 238 | except Exception as e: | CODE |
| LOW | whisperlivekit/test_client.py | 260 | except Exception: | CODE |
| MEDIUM | whisperlivekit/test_client.py | 353 | print(f"Error: file not found: {audio_path}", file=sys.stderr) | CODE |
| MEDIUM | whisperlivekit/test_client.py | 224 | def receive_results(): | CODE |
| LOW⚡ | whisperlivekit/benchmark/metrics.py | 222 | except Exception: | CODE |
| LOW⚡ | whisperlivekit/benchmark/metrics.py | 231 | except Exception: | CODE |
| 24 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | whisperlivekit/__init__.py | 1 | CODE | |
| LOW | whisperlivekit/__init__.py | 2 | CODE | |
| LOW | whisperlivekit/__init__.py | 3 | CODE | |
| LOW | whisperlivekit/__init__.py | 4 | CODE | |
| LOW | whisperlivekit/__init__.py | 5 | CODE | |
| LOW | whisperlivekit/__init__.py | 5 | CODE | |
| LOW | whisperlivekit/__init__.py | 6 | CODE | |
| LOW | whisperlivekit/__init__.py | 6 | CODE | |
| LOW | whisperlivekit/__init__.py | 7 | CODE | |
| LOW | whisperlivekit/__init__.py | 7 | CODE | |
| LOW | whisperlivekit/cli.py | 917 | CODE | |
| LOW | whisperlivekit/translation_alignatt.py | 29 | CODE | |
| LOW | whisperlivekit/qwen3_vllm_asr.py | 3 | CODE | |
| LOW | whisperlivekit/qwen3_vllm_asr.py | 9 | CODE | |
| LOW | whisperlivekit/benchmark/compat.py | 36 | CODE | |
| LOW | whisperlivekit/benchmark/compat.py | 42 | CODE | |
| LOW | whisperlivekit/benchmark/compat.py | 48 | CODE | |
| LOW | whisperlivekit/benchmark/compat.py | 54 | CODE | |
| LOW | whisperlivekit/benchmark/compat.py | 56 | CODE | |
| LOW | whisperlivekit/benchmark/compat.py | 62 | CODE | |
| LOW | whisperlivekit/benchmark/__init__.py | 21 | CODE | |
| LOW | whisperlivekit/benchmark/__init__.py | 21 | CODE | |
| LOW | whisperlivekit/benchmark/__init__.py | 25 | CODE | |
| LOW | whisperlivekit/benchmark/__init__.py | 25 | CODE | |
| LOW | whisperlivekit/benchmark/__init__.py | 26 | CODE | |
| LOW | whisperlivekit/qwen3_streaming/__init__.py | 7 | CODE | |
| LOW | whisperlivekit/qwen3_streaming/__init__.py | 7 | CODE | |
| LOW | whisperlivekit/voxtral_mlx/__init__.py | 3 | CODE | |
| LOW | whisperlivekit/voxtral_mlx/__init__.py | 4 | CODE | |
| LOW | whisperlivekit/simul_whisper/__init__.py | 1 | CODE | |
| LOW | whisperlivekit/simul_whisper/__init__.py | 1 | CODE | |
| LOW | whisperlivekit/simul_whisper/mlx/__init__.py | 1 | CODE | |
| LOW | whisperlivekit/simul_whisper/mlx/__init__.py | 2 | CODE | |
| LOW | whisperlivekit/simul_whisper/mlx/__init__.py | 2 | CODE | |
| LOW | whisperlivekit/simul_whisper/mlx/__init__.py | 2 | CODE | |
| LOW | whisperlivekit/simul_whisper/mlx/__init__.py | 3 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 14 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 14 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 14 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 15 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 15 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 15 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 15 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 17 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 18 | CODE | |
| LOW | whisperlivekit/whisper/decoding.py | 15 | CODE | |
| LOW | whisperlivekit/whisper/timing.py | 16 | CODE | |
| LOW | whisperlivekit/whisper/transcribe.py | 18 | CODE | |
| LOW | whisperlivekit/whisper/normalizers/__init__.py | 1 | CODE | |
| LOW | whisperlivekit/whisper/normalizers/__init__.py | 2 | CODE | |
| LOW | tests/test_translation_alignatt.py | 9 | CODE | |
| LOW | tests/test_sortformer_real_fixture.py | 3 | CODE | |
| LOW | tests/test_silent_backend_guard.py | 9 | CODE | |
| LOW | tests/test_pipeline.py | 31 | CODE | |
| LOW | tests/test_pipeline.py | 33 | CODE | |
| LOW | tests/test_pipeline.py | 41 | CODE | |
| LOW | tests/test_pipeline.py | 57 | CODE | |
| LOW | tests/test_pipeline.py | 58 | CODE | |
| LOW | scripts/determine_alignment_heads.py | 2 | CODE | |
| LOW | scripts/run_scatter_benchmark.py | 98 | CODE | |
| 7 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | whisperlivekit/voxtral_mlx_asr.py | 344 | CODE | |
| LOW | whisperlivekit/tokens_alignment.py | 125 | CODE | |
| LOW | whisperlivekit/tokens_alignment.py | 426 | CODE | |
| LOW | whisperlivekit/core.py | 81 | CODE | |
| LOW | whisperlivekit/audio_processor.py | 481 | CODE | |
| LOW | whisperlivekit/audio_processor.py | 559 | CODE | |
| LOW | whisperlivekit/audio_processor.py | 647 | CODE | |
| LOW | whisperlivekit/audio_processor.py | 853 | CODE | |
| LOW | whisperlivekit/audio_processor.py | 887 | CODE | |
| LOW | whisperlivekit/audio_processor.py | 922 | CODE | |
| LOW | whisperlivekit/audio_processor.py | 1034 | CODE | |
| LOW | whisperlivekit/warmup.py | 6 | CODE | |
| LOW | whisperlivekit/cli.py | 319 | CODE | |
| LOW | whisperlivekit/cli.py | 348 | CODE | |
| LOW | whisperlivekit/cli.py | 465 | CODE | |
| LOW | whisperlivekit/cli.py | 666 | CODE | |
| LOW | whisperlivekit/cli.py | 1167 | CODE | |
| LOW | whisperlivekit/cli.py | 1301 | CODE | |
| LOW | whisperlivekit/cli.py | 1398 | CODE | |
| LOW | whisperlivekit/deepgram_compat.py | 917 | CODE | |
| LOW | whisperlivekit/deepgram_compat.py | 758 | CODE | |
| LOW | whisperlivekit/deepgram_compat.py | 853 | CODE | |
| LOW | whisperlivekit/deepgram_compat.py | 990 | CODE | |
| LOW | whisperlivekit/basic_server.py | 265 | CODE | |
| LOW | whisperlivekit/model_paths.py | 68 | CODE | |
| LOW | whisperlivekit/benchmark/datasets.py | 445 | CODE | |
| LOW | whisperlivekit/simul_whisper/backend.py | 297 | CODE | |
| LOW | whisperlivekit/simul_whisper/simul_whisper.py | 390 | CODE | |
| LOW | whisperlivekit/simul_whisper/mlx/decoders.py | 82 | CODE | |
| LOW | whisperlivekit/simul_whisper/mlx/simul_whisper.py | 351 | CODE | |
| LOW | whisperlivekit/diarization/sortformer_backend.py | 68 | CODE | |
| LOW | whisperlivekit/diarization/diart_backend.py | 230 | CODE | |
| LOW | whisperlivekit/diarization/diart_backend.py | 30 | CODE | |
| LOW | whisperlivekit/diarization/diart_backend.py | 104 | CODE | |
| LOW | whisperlivekit/local_agreement/online_asr.py | 29 | CODE | |
| LOW | whisperlivekit/local_agreement/online_asr.py | 59 | CODE | |
| LOW | whisperlivekit/local_agreement/whisper_online.py | 74 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 57 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 163 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 466 | CODE | |
| LOW | whisperlivekit/whisper/__init__.py | 172 | CODE | |
| LOW | whisperlivekit/whisper/decoding.py | 317 | CODE | |
| LOW | whisperlivekit/whisper/decoding.py | 378 | CODE | |
| LOW | whisperlivekit/whisper/timing.py | 58 | CODE | |
| LOW | whisperlivekit/whisper/timing.py | 83 | CODE | |
| LOW | whisperlivekit/whisper/timing.py | 279 | CODE | |
| LOW | whisperlivekit/whisper/utils.py | 123 | CODE | |
| LOW | whisperlivekit/whisper/utils.py | 142 | CODE | |
| LOW | whisperlivekit/whisper/transcribe.py | 21 | CODE | |
| LOW | whisperlivekit/whisper/normalizers/english.py | 165 | CODE | |
| LOW | scripts/run_scatter_benchmark.py | 95 | CODE | |
| LOW | scripts/run_scatter_benchmark.py | 115 | CODE | |
| LOW | scripts/python_support_matrix.py | 446 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | whisperlivekit/config.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/backend_support.py | 5 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/test_harness.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/voxtral_mlx_asr.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/canary_backend.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/ffmpeg_manager.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/__init__.py | 9 | __all__ = [ | CODE |
| LOW | whisperlivekit/voxtral_hf_streaming.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/core.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | whisperlivekit/audio_processor.py | 830 | async def _update_diarization_state(self, diarization_segments) -> None: | CODE |
| LOW | whisperlivekit/audio_processor.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/metrics_collector.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/warmup.py | 4 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | whisperlivekit/cli.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/deepgram_compat.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/basic_server.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/translation.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/translation_alignatt.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/thread_safety.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/test_data.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/test_client.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/benchmark/runner.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/benchmark/compat.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/benchmark/datasets.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/benchmark/__init__.py | 28 | __all__ = [ | CODE |
| LOW | whisperlivekit/web/web_interface.py | 5 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/qwen3_streaming/__init__.py | 9 | __all__ = ["Qwen3StreamingASR", "Qwen3StreamingOnlineProcessor"] | CODE |
| LOW | whisperlivekit/voxtral_mlx/__init__.py | 6 | __all__ = ["load_voxtral_model", "VoxtralMLXModel"] | CODE |
| LOW⚡ | whisperlivekit/voxtral_mlx/loader.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/simul_whisper/backend.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/simul_whisper/eow_detection.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/simul_whisper/__init__.py | 3 | __all__ = [ | CODE |
| LOW | whisperlivekit/simul_whisper/align_att_base.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/simul_whisper/simul_whisper.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/simul_whisper/mlx/__init__.py | 5 | __all__ = [ | CODE |
| LOW | whisperlivekit/simul_whisper/mlx/simul_whisper.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/diarization/sortformer_backend.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/diarization/diart_backend.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/local_agreement/online_asr.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/local_agreement/whisper_online.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | whisperlivekit/local_agreement/backends.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/test_asr_coalescing_pipeline.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | tests/test_pipeline.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | scripts/create_long_samples.py | 13 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | whisperlivekit/voxtral_mlx_asr.py | 39 | # produces hallucination. 20s / 80ms per token = 250 tokens. | COMMENT |
| MEDIUM | whisperlivekit/voxtral_mlx_asr.py | 214 | # flush+reset to prevent hallucination even without VAD silence. | COMMENT |
| MEDIUM | whisperlivekit/voxtral_mlx_asr.py | 233 | # silence padding), so positions beyond this produce hallucination. | COMMENT |
| MEDIUM | whisperlivekit/voxtral_hf_streaming.py | 227 | # uses an event-driven blocking drain with short timeouts. | COMMENT |
| MEDIUM | whisperlivekit/whisper/transcribe.py | 401 | # skip silence before possible hallucinations | COMMENT |
| MEDIUM⚡ | whisperlivekit/whisper/transcribe.py | 413 | # if first segment might be a hallucination, skip leading silence | COMMENT |
| MEDIUM⚡ | whisperlivekit/whisper/transcribe.py | 421 | # skip silence before any possible hallucination that is surrounded | COMMENT |
| MEDIUM⚡ | whisperlivekit/whisper/transcribe.py | 422 | # by silence or more hallucinations | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | whisperlivekit/voxtral_mlx_asr.py | 0 | flush and return the previous speaker's final tokens before reset. | STRING |
| HIGH | whisperlivekit/voxtral_hf_streaming.py | 0 | flush and return the previous speaker's final tokens before reset. | STRING |
| HIGH | whisperlivekit/simul_whisper/backend.py | 0 | flush and return the previous speaker's final tokens before reset. | STRING |
| HIGH | whisperlivekit/local_agreement/online_asr.py | 0 | flush and return the previous speaker's final tokens before reset. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | whisperlivekit/local_agreement/whisper_online.py | 180 | # Create the tokenizer | COMMENT |
| MEDIUM | whisperlivekit/whisper/val.py | 92 | # Define the model architecture: a stateless function mapping token sequence and parameters to logits over what comes ne | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | whisperlivekit/ffmpeg_manager.py | 18 | sudo apt update && sudo apt install ffmpeg | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | whisperlivekit/silero_vad_iterator.py | 125 | CODE | |
| LOW | whisperlivekit/voxtral_mlx/model.py | 210 | CODE | |
| LOW | whisperlivekit/voxtral_mlx/model.py | 369 | CODE | |
| LOW | whisperlivekit/local_agreement/backends.py | 77 | CODE | |
| LOW | whisperlivekit/whisper/transcribe.py | 21 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | whisperlivekit/benchmark/runner.py | 75 | # Build harness kwargs | COMMENT |
| MEDIUM | whisperlivekit/benchmark/report.py | 45 | """Print a comprehensive benchmark report to the terminal.""" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | whisperlivekit/audio_processor.py | 817 | if 'pcm_array' in locals() and pcm_array is not SENTINEL : # Check if pcm_array was assigned from queue | CODE |
| LOW | whisperlivekit/whisper/__init__.py | 312 | # Check if it's already a valid local path | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | whisperlivekit/web/live_transcription.js | 61 | const linesTranscriptDiv = document.getElementById("linesTranscript"); | COMMENT |