Build local voice agents with open-source models
This report presents the forensic synthetic code analysis of huggingface/speech-to-speech, a Python project with 10,397 GitHub stars. SynthScan v2.0 examined 43,477 lines of code across 178 source files, recording 1229 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 43.1 places this repository in the Strong 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).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
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 1229 distinct pattern matches across 16 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 | demo/main.js | 56 | // ── Noise gate ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 73 | // ── Tools ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 309 | // ── Connection target ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 341 | // ── Tool state ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 378 | // ── Chat view ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 389 | // ── Account / limiter ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 500 | // ── Radial gate arc (around the mic button, live during a call) ───────────── | COMMENT |
| MEDIUM | demo/main.js | 626 | // ── Tools panel ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 714 | // ── Camera ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 832 | // ── Tool executor ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 1362 | // ── "Your turn" join countdown ────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 1555 | // ── Conversation-time heartbeat ───────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/limiter.py | 40 | # ── Tunables (env-overridable) ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/limiter.py | 140 | # ── Internal helpers (call under _lock) ─────────────────────────────────────── | COMMENT |
| MEDIUM | demo/limiter.py | 168 | # ── Public API ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 49 | // ── User transcript state (keyed by item_id) ─────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 70 | // ── Assistant transcript state (keyed by response_id) ────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 74 | // ── Ephemeral bubble auto-dismiss ────────────────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 92 | // ── Panel ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 125 | // ── Shared rendering ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 142 | // ── Ephemeral bubbles ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 297 | // ── History ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 432 | // ── Client event handlers ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/rtc/s2s-rtc-client.js | 141 | // ── Response lock ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/rtc/s2s-rtc-client.js | 319 | // ── Audio graph ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/rtc/s2s-rtc-client.js | 386 | // ── Output-RMS status + mic level ───────────────────────────────────────── | COMMENT |
| MEDIUM | demo/rtc/s2s-rtc-client.js | 427 | // ── Data channel protocol ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/ws/s2s-ws-client.js | 188 | // ── Response lock ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_responses_api_language_model.py | 502 | # ── Out-of-band (conversation="none") responses ────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_chat_completions_backend.py | 167 | # ── Converter tests ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_chat_completions_backend.py | 509 | # ── tool_choice decoupled from tools ────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_chat_completions_backend.py | 43 | # ── Fakes ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_chat_completions_backend.py | 270 | # ── Streaming / non-streaming parse tests ───────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_chat_completions_backend.py | 445 | # ── Text-only (output_modalities=["text"]) ──────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_chat_completions_backend.py | 528 | # ── Error propagation ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_chat_completions_backend.py | 563 | # ── Out-of-band (conversation="none") responses ─────────────────────────────── | COMMENT |
| MEDIUM | tests/test_chat_completions_backend.py | 581 | # ── Standalone runner (no pytest required) ──────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 110 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 112 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 163 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 165 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 187 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 189 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 342 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 344 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 486 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 488 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 745 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 747 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 808 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 810 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 864 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 866 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 908 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 910 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 1227 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 1229 | # =================================================================== | COMMENT |
| MEDIUM | tests/test_chat.py | 42 | # =================================================================== | COMMENT |
| MEDIUM | tests/test_chat.py | 44 | # =================================================================== | COMMENT |
| MEDIUM | tests/test_chat.py | 129 | # =================================================================== | COMMENT |
| 188 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo/main.js | 455 | function updateRestartAvailability() { | CODE |
| LOW | demo/main.js | 1004 | function createResumedAudioContext() { | CODE |
| LOW | demo/main.js | 1253 | function supportsAudioOutputSelection() { | CODE |
| LOW | demo/ws/codec.js | 22 | export function extractResponseTranscript(response) { | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 15 | def test_show_progressive_transcription_returns_combined_text(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 30 | def test_live_transcription_clears_terminal_line_before_each_update(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 58 | def test_live_transcription_truncates_terminal_updates(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 82 | def test_live_transcription_uses_lines_for_non_terminal_logs(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 101 | def test_process_yields_partial_tagged_tuple(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 121 | def test_process_yields_final_transcript(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 144 | def test_parakeet_timing_logs_only_final_transcriptions(): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 153 | def test_final_transcription_resets_live_streaming_state(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 180 | def test_turn_change_resets_live_streaming_state_before_progressive(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 213 | def test_mlx_final_ignores_fixed_text_that_exceeds_current_audio(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 251 | def test_final_transcription_prevents_stale_fixed_window_on_next_progressive(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 292 | def test_on_session_end_resets_streaming_state(): | CODE |
| LOW | tests/test_paraformer_transcription_events.py | 19 | def test_progressive_paraformer_transcription_is_partial(monkeypatch): | CODE |
| LOW | tests/test_paraformer_transcription_events.py | 41 | def test_final_paraformer_transcription_is_final(monkeypatch): | CODE |
| LOW⚡ | tests/test_qwen3_tts_handler_backend.py | 213 | def test_setup_rejects_incomplete_local_gguf_pair(monkeypatch, tmp_path): | CODE |
| LOW⚡ | tests/test_qwen3_tts_handler_backend.py | 223 | def test_setup_rejects_cached_ggml_references_with_torch_backend(monkeypatch): | CODE |
| LOW⚡ | tests/test_qwen3_tts_handler_backend.py | 233 | def test_setup_defaults_to_custom_voice_profile_off_darwin(monkeypatch): | CODE |
| LOW⚡ | tests/test_qwen3_tts_handler_backend.py | 414 | def test_local_gguf_filename_takes_precedence_when_inferring_model_type(): | CODE |
| LOW⚡ | tests/test_qwen3_tts_handler_backend.py | 422 | def test_local_gguf_parent_directory_does_not_affect_model_type_inference(): | CODE |
| LOW⚡ | tests/test_qwen3_tts_handler_backend.py | 430 | def test_prepare_mlx_ref_audio_normalizes_file_and_caches_result(monkeypatch, tmp_path): | CODE |
| LOW⚡ | tests/test_qwen3_tts_handler_backend.py | 906 | def test_estimate_max_new_tokens_respects_configured_cap(): | CODE |
| LOW⚡ | tests/test_qwen3_tts_handler_backend.py | 916 | def test_estimate_max_new_tokens_can_exceed_default_ceiling_when_raised(): | CODE |
| LOW⚡ | tests/test_qwen3_tts_handler_backend.py | 926 | def test_process_voice_clone_scales_max_new_tokens_for_faster_backend(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 22 | def test_setup_uses_mlx_backend_on_darwin_and_maps_qwen_repo_ids(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 51 | def test_setup_supports_quantized_mlx_mapping_on_darwin(monkeypatch, quantization): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 73 | def test_setup_preserves_explicit_mlx_model_suffix_when_quantization_unset(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 94 | def test_setup_preserves_faster_backend_off_darwin(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 131 | def test_setup_passes_torch_backend_override_off_darwin(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 153 | def test_setup_passes_ggml_model_and_cache_options_to_faster_backend(monkeypatch, tmp_path): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 191 | def test_setup_passes_ggml_quantization_for_hub_model(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 294 | def test_setup_preserves_explicit_chunk_size_on_darwin(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 313 | def test_setup_logs_when_non_streaming_mode_set_on_darwin(monkeypatch, caplog): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 333 | def test_setup_rejects_invalid_mlx_quantization(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 351 | def test_setup_rejects_invalid_faster_backend(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 362 | def test_warmup_uses_public_faster_backend_api(faster_backend): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 380 | def test_warmup_logs_backend_neutral_failure(caplog): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 398 | def test_mlx_helper_methods_use_model_config_and_streaming_conversion(): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 462 | def test_apply_session_voice_override_warns_for_non_file_for_base_model(caplog): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 476 | def test_apply_session_voice_override_ignores_unsupported_custom_voice_speaker(caplog): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 492 | def test_apply_session_voice_override_accepts_supported_custom_voice_speaker(): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 505 | def test_process_only_reenables_listening_after_end_of_response(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 531 | def test_process_waits_for_pending_reopen_and_drops_stale_tts_input(): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 563 | def test_process_waits_for_pending_reopen_and_drops_stale_end_of_response(): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 587 | def test_process_waits_for_reopen_grace_and_drops_stale_tts_input(): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 620 | def test_process_waits_for_reopen_grace_and_drops_stale_end_of_response(): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 645 | def test_process_commits_turn_before_generating_audio(monkeypatch, caplog): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 686 | def test_process_does_not_set_should_listen_when_generation_fails(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 714 | def test_process_voice_clone_passes_non_streaming_mode_to_faster_backend(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 748 | def test_process_voice_clone_passes_none_non_streaming_mode_when_unset(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 782 | def test_process_voice_clone_uses_precomputed_ggml_references_without_audio(monkeypatch): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 822 | def test_process_custom_voice_passes_non_streaming_mode_to_faster_backend(monkeypatch, override): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 857 | def test_process_voice_design_passes_non_streaming_mode_to_faster_backend(monkeypatch, override): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 891 | def test_estimate_max_new_tokens_scales_with_utterance_length(): | CODE |
| LOW | tests/test_qwen3_tts_handler_backend.py | 962 | def test_process_voice_clone_scales_max_tokens_for_mlx_backend(monkeypatch): | CODE |
| LOW | tests/test_llm_utils.py | 12 | def test_remove_unspeechable_normalizes_smart_apostrophes() -> None: | CODE |
| LOW | tests/test_llm_utils.py | 16 | def test_remove_unspeechable_keeps_text_and_drops_emoji() -> None: | CODE |
| 620 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/test_demo_startup_greeting.py | 24 | globalThis.localStorage = {{ getItem() {{ return null; }} }}; | CODE |
| HIGH⚡ | tests/test_demo_startup_greeting.py | 34 | client._send = (event) => sent.push(event); | CODE |
| HIGH⚡ | tests/test_demo_startup_greeting.py | 35 | client.requestResponse = () => sent.push({{ type: "response.create" }}); | CODE |
| HIGH | tests/test_demo_startup_greeting.py | 68 | globalThis.localStorage = {{ getItem() {{ return null; }} }}; | CODE |
| HIGH⚡ | tests/test_demo_startup_greeting.py | 98 | globalThis.localStorage = { getItem() { return null; } }; | CODE |
| HIGH⚡ | tests/test_demo_startup_greeting.py | 107 | timeline.push(`mic:${value}`); | CODE |
| HIGH⚡ | tests/test_demo_startup_greeting.py | 117 | client._sendSessionUpdate = () => timeline.push("session.update"); | CODE |
| HIGH⚡ | tests/test_demo_startup_greeting.py | 118 | client._send = (event) => timeline.push(event.type); | CODE |
| HIGH⚡ | tests/test_demo_startup_greeting.py | 119 | client.requestResponse = () => timeline.push("response.create"); | CODE |
| HIGH | tests/test_demo_startup_greeting.py | 154 | globalThis.localStorage = { getItem() { return null; } }; | CODE |
| HIGH | tests/test_demo_startup_greeting.py | 169 | events.push(["started", event.detail.itemId]); | CODE |
| HIGH | tests/test_demo_startup_greeting.py | 172 | events.push(["stopped", event.detail.itemId]); | CODE |
| HIGH⚡ | tests/test_demo_user_audio.py | 83 | if (first.durationMs !== 100 || reopened.durationMs !== 200) { | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 96 | globalThis.localStorage = { getItem() { return null; } }; | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 113 | let recording = null; | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 117 | turnEvents.push(["started", event.detail.itemId]); | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 120 | turnEvents.push(["stopped", event.detail.itemId]); | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 202 | querySelector() { return null; }, | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 204 | let dismissed = null; | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 209 | if (view._activeUserBubble !== null) throw new Error("active voice bubble was not released"); | STRING |
| HIGH | tests/test_demo_user_audio.py | 234 | querySelector() { return null; }, | STRING |
| HIGH | tests/test_demo_user_audio.py | 252 | if (view._activeUserBubble !== null) { | STRING |
| HIGH | tests/test_demo_user_audio.py | 258 | if (spawned !== 1 || view._activeUserBubble !== bubble) { | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo/auth.py | 52 | except Exception as exc: # pragma: no cover - import guard | CODE |
| LOW | demo/auth.py | 70 | except Exception as exc: # pragma: no cover - defensive | CODE |
| LOW | demo/auth.py | 100 | except Exception: | CODE |
| LOW | demo/auth.py | 154 | except Exception as exc: # pragma: no cover - network/permission dependent | CODE |
| LOW | demo/server.py | 158 | except Exception as exc: # pragma: no cover - defensive | CODE |
| LOW | demo/server.py | 247 | except Exception: | CODE |
| LOW⚡ | demo/server.py | 518 | except Exception: | CODE |
| LOW⚡ | demo/server.py | 527 | except Exception: | CODE |
| LOW⚡ | demo/server.py | 536 | except Exception: | CODE |
| MEDIUM | demo/server.py | 515 | def _safe_json(response) -> dict: | CODE |
| LOW | tests/test_chat_completions_backend.py | 590 | except Exception as e: # noqa: BLE001 | CODE |
| LOW⚡ | tests/openai_realtime/test_websocket_router.py | 805 | except Exception: | CODE |
| LOW | scripts/benchmark_tts.py | 189 | except Exception: | CODE |
| LOW | scripts/benchmark_tts.py | 205 | except Exception as e: | CODE |
| LOW | scripts/benchmark_stt.py | 259 | except Exception as e: | CODE |
| LOW⚡ | scripts/synthetic_conversation_realtime_client.py | 321 | except Exception as e: # noqa: BLE001 — diagnostic path | CODE |
| LOW⚡ | scripts/synthetic_conversation_realtime_client.py | 349 | except Exception as e: # noqa: BLE001 | CODE |
| LOW⚡ | scripts/synthetic_conversation_realtime_client.py | 419 | except Exception as e: # noqa: BLE001 — diagnostic path | CODE |
| LOW⚡ | scripts/synthetic_conversation_realtime_client.py | 430 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | scripts/listen_and_play_realtime.py | 202 | except Exception: | CODE |
| LOW | scripts/listen_and_play_realtime.py | 228 | except Exception: | CODE |
| LOW | src/speech_to_speech/baseHandler.py | 99 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/baseHandler.py | 136 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/LLM/language_model.py | 600 | except Exception as exc: | CODE |
| LOW | src/speech_to_speech/LLM/language_model.py | 704 | except Exception: | CODE |
| LOW | src/speech_to_speech/LLM/language_model.py | 876 | except Exception: | CODE |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 488 | except Exception as exc: | CODE |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 500 | except Exception: | CODE |
| LOW | src/speech_to_speech/LLM/chat.py | 569 | except Exception: | CODE |
| LOW | src/speech_to_speech/LLM/tool_call/function_call.py | 107 | except Exception: | CODE |
| LOW | src/speech_to_speech/LLM/tool_call/function_call.py | 283 | except Exception: | CODE |
| LOW | src/speech_to_speech/LLM/tool_call/function_call.py | 320 | except Exception: | CODE |
| LOW | …c/speech_to_speech/connections/local_audio_streamer.py | 56 | except Exception: | CODE |
| LOW | src/speech_to_speech/connections/websocket_streamer.py | 56 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/connections/websocket_streamer.py | 93 | except Exception: | CODE |
| LOW | src/speech_to_speech/connections/websocket_streamer.py | 142 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/connections/websocket_streamer.py | 237 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 212 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 300 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 412 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/TTS/facebookmms_handler.py | 134 | except Exception as e: | CODE |
| MEDIUM | src/speech_to_speech/TTS/qwen3_tts_handler.py | 973 | def cleanup(self) -> None: | CODE |
| LOW⚡ | src/speech_to_speech/TTS/qwen3_tts_handler.py | 979 | except Exception: | CODE |
| LOW⚡ | src/speech_to_speech/TTS/qwen3_tts_handler.py | 986 | except Exception: | CODE |
| LOW⚡ | src/speech_to_speech/TTS/qwen3_tts_handler.py | 994 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 487 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 552 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 559 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 825 | except Exception as e: | CODE |
| LOW⚡ | …speech_to_speech/api/openai_realtime/webrtc_session.py | 283 | except Exception as e: # noqa: BLE001 | CODE |
| LOW⚡ | …speech_to_speech/api/openai_realtime/webrtc_session.py | 297 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | …speech_to_speech/api/openai_realtime/webrtc_session.py | 339 | except Exception: # noqa: BLE001 | CODE |
| LOW | src/speech_to_speech/api/openai_realtime/llm_proxy.py | 204 | except Exception: | CODE |
| LOW | src/speech_to_speech/api/openai_realtime/llm_proxy.py | 255 | except Exception: | CODE |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 239 | except Exception: | CODE |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 430 | except Exception: | CODE |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 496 | except Exception as e: | CODE |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 618 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 670 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 680 | except Exception as e: # noqa: BLE001 | CODE |
| 12 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | archive/TTS/parler_handler.py | 1 | CODE | |
| LOW | archive/TTS/melo_handler.py | 1 | CODE | |
| LOW | tests/test_language_prompt.py | 17 | CODE | |
| LOW | tests/test_stt_stale_filter.py | 1 | CODE | |
| LOW | tests/test_chat_completions_backend.py | 10 | CODE | |
| LOW | tests/test_mlx_audio_whisper_handler.py | 16 | CODE | |
| LOW | tests/test_chat.py | 9 | CODE | |
| LOW | tests/install_smoke.py | 1 | CODE | |
| LOW | src/speech_to_speech/baseHandler.py | 1 | CODE | |
| LOW | src/speech_to_speech/pipeline/events.py | 9 | CODE | |
| LOW | src/speech_to_speech/pipeline/control.py | 1 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 1 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 2 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 2 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 2 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 2 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 8 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 8 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 8 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 8 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 8 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 8 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 8 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 17 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 17 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 17 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 17 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 17 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 17 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 17 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 17 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 17 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 17 | CODE | |
| LOW | src/speech_to_speech/pipeline/__init__.py | 17 | CODE | |
| LOW | src/speech_to_speech/pipeline/messages.py | 9 | CODE | |
| LOW | src/speech_to_speech/pipeline/handler_types.py | 8 | CODE | |
| LOW | src/speech_to_speech/pipeline/queue_types.py | 7 | CODE | |
| LOW | src/speech_to_speech/pipeline/speculative_turns.py | 1 | CODE | |
| LOW | src/speech_to_speech/LLM/language_model.py | 1 | CODE | |
| LOW | …peech_to_speech/LLM/chat_completions_language_model.py | 1 | CODE | |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 1 | CODE | |
| LOW | src/speech_to_speech/LLM/compaction_prompt.py | 14 | CODE | |
| LOW | src/speech_to_speech/LLM/lm_output_processor.py | 9 | CODE | |
| LOW | src/speech_to_speech/LLM/chat.py | 1 | CODE | |
| LOW | …c/speech_to_speech/LLM/responses_api_language_model.py | 1 | CODE | |
| LOW | src/speech_to_speech/utils/utils.py | 1 | CODE | |
| LOW | src/speech_to_speech/TTS/chatTTS_handler.py | 1 | CODE | |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 11 | CODE | |
| LOW | src/speech_to_speech/TTS/facebookmms_handler.py | 1 | CODE | |
| LOW | src/speech_to_speech/TTS/pocket_tts_handler.py | 1 | CODE | |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 8 | CODE | |
| LOW | …speech_to_speech/api/openai_realtime/webrtc_session.py | 14 | CODE | |
| LOW | src/speech_to_speech/api/openai_realtime/transports.py | 13 | CODE | |
| LOW | …to_speech/api/openai_realtime/handlers/conversation.py | 1 | CODE | |
| LOW | …eech_to_speech/api/openai_realtime/handlers/session.py | 1 | CODE | |
| LOW | …ech_to_speech/api/openai_realtime/handlers/__init__.py | 1 | CODE | |
| LOW | …ech_to_speech/api/openai_realtime/handlers/__init__.py | 2 | CODE | |
| LOW | …ech_to_speech/api/openai_realtime/handlers/__init__.py | 3 | CODE | |
| LOW | …ech_to_speech/api/openai_realtime/handlers/__init__.py | 4 | CODE | |
| LOW | …ech_to_speech/api/openai_realtime/handlers/response.py | 1 | CODE | |
| 11 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo/auth.py | 235 | def set_anon_cookie(response, signed: str) -> None: | CODE |
| LOW | archive/TTS/parler_handler.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | archive/TTS/melo_handler.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | archive/STT/moonshine_handler.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | scripts/benchmark_tts.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | scripts/benchmark_stt.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/s2s_pipeline.py | 87 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/baseHandler.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/pipeline/__init__.py | 31 | __all__ = [ | CODE |
| LOW | src/speech_to_speech/pipeline/speculative_turns.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/LLM/language_model.py | 80 | logger = logging.getLogger(__name__) | CODE |
| LOW | …peech_to_speech/LLM/chat_completions_language_model.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 44 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | src/speech_to_speech/LLM/compaction_prompt.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/LLM/lm_output_processor.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/LLM/chat.py | 43 | logger = logging.getLogger(__name__) | CODE |
| LOW | …c/speech_to_speech/LLM/responses_api_language_model.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/LLM/tool_call/function_call.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/utils/mlx_lock.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/utils/thread_manager.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | …c/speech_to_speech/connections/local_audio_streamer.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/connections/socket_receiver.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/connections/socket_sender.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/connections/websocket_streamer.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/chatTTS_handler.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 154 | def _setup_mlx(self, model_name: str) -> None: | CODE |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 183 | def _setup_kokoro(self, model_name: str) -> None: | CODE |
| LOW | src/speech_to_speech/TTS/facebookmms_handler.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/pocket_tts_handler.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 201 | def _setup_faster(self, model_name: str, dtype: Any, attn_implementation: str, backend: str) -> None: | CODE |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 239 | def _setup_mlx(self, model_name: str) -> None: | CODE |
| LOW | …speech_to_speech/api/openai_realtime/webrtc_session.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/api/openai_realtime/service.py | 59 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/api/openai_realtime/server.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/api/openai_realtime/llm_proxy.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 62 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/api/openai_realtime/transports.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | …to_speech/api/openai_realtime/handlers/conversation.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | …eech_to_speech/api/openai_realtime/handlers/session.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | …ech_to_speech/api/openai_realtime/handlers/__init__.py | 6 | __all__ = [ | CODE |
| LOW⚡ | …ech_to_speech/api/openai_realtime/handlers/response.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | …speech_to_speech/api/openai_realtime/handlers/audio.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | …/speech_to_speech/api/openai_realtime/handlers/base.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/VAD/vad_handler.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/STT/base_stt_handler.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/STT/mlx_audio_whisper_handler.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/STT/transcription_notifier.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/STT/faster_whisper_handler.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | …/speech_to_speech/STT/lightning_whisper_mlx_handler.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/STT/whisper_stt_handler.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/STT/parakeet_tdt_handler.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/STT/parakeet_tdt_handler.py | 180 | def _setup_mlx(self, model_name: str) -> None: | CODE |
| LOW | src/speech_to_speech/STT/parakeet_tdt_handler.py | 193 | def _setup_nano_parakeet(self, model_name: str) -> None: | CODE |
| LOW | src/speech_to_speech/STT/paraformer_handler.py | 17 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo/auth.py | 132 | CODE | |
| LOW | tests/test_chat_completions_backend.py | 133 | CODE | |
| LOW | tests/test_chat.py | 84 | CODE | |
| LOW | tests/openai_realtime/test_websocket_router.py | 466 | CODE | |
| LOW | tests/openai_realtime/test_websocket_router.py | 847 | CODE | |
| LOW | scripts/benchmark_tts.py | 91 | CODE | |
| LOW | scripts/benchmark_stt.py | 110 | CODE | |
| LOW | scripts/synthetic_conversation_realtime_client.py | 205 | CODE | |
| LOW | scripts/synthetic_conversation_realtime_client.py | 283 | CODE | |
| LOW | scripts/listen_and_play_realtime.py | 136 | CODE | |
| LOW | scripts/listen_and_play_realtime.py | 219 | CODE | |
| LOW | src/speech_to_speech/s2s_pipeline.py | 259 | CODE | |
| LOW | src/speech_to_speech/s2s_pipeline.py | 609 | CODE | |
| LOW | src/speech_to_speech/s2s_pipeline.py | 781 | CODE | |
| LOW | src/speech_to_speech/s2s_pipeline.py | 938 | CODE | |
| LOW | src/speech_to_speech/baseHandler.py | 84 | CODE | |
| LOW | src/speech_to_speech/LLM/language_model.py | 291 | CODE | |
| LOW | src/speech_to_speech/LLM/language_model.py | 944 | CODE | |
| LOW | src/speech_to_speech/LLM/language_model.py | 981 | CODE | |
| LOW | …peech_to_speech/LLM/chat_completions_language_model.py | 206 | CODE | |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 330 | CODE | |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 411 | CODE | |
| LOW | src/speech_to_speech/LLM/chat.py | 174 | CODE | |
| LOW | src/speech_to_speech/LLM/chat.py | 296 | CODE | |
| LOW | src/speech_to_speech/LLM/chat.py | 369 | CODE | |
| LOW | src/speech_to_speech/LLM/chat.py | 472 | CODE | |
| LOW | …c/speech_to_speech/LLM/responses_api_language_model.py | 113 | CODE | |
| LOW | src/speech_to_speech/LLM/tool_call/function_call.py | 36 | CODE | |
| LOW | …c/speech_to_speech/connections/local_audio_streamer.py | 30 | CODE | |
| LOW | …c/speech_to_speech/connections/local_audio_streamer.py | 35 | CODE | |
| LOW | src/speech_to_speech/connections/socket_receiver.py | 53 | CODE | |
| LOW | src/speech_to_speech/connections/socket_sender.py | 37 | CODE | |
| LOW | src/speech_to_speech/connections/websocket_streamer.py | 100 | CODE | |
| LOW | src/speech_to_speech/connections/websocket_streamer.py | 152 | CODE | |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 280 | CODE | |
| LOW | src/speech_to_speech/TTS/pocket_tts_handler.py | 98 | CODE | |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 775 | CODE | |
| LOW | src/speech_to_speech/api/openai_realtime/llm_proxy.py | 59 | CODE | |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 125 | CODE | |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 318 | CODE | |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 407 | CODE | |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 510 | CODE | |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 713 | CODE | |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 514 | CODE | |
| LOW | src/speech_to_speech/VAD/vad_handler.py | 569 | CODE | |
| LOW | …/speech_to_speech/STT/lightning_whisper_mlx_handler.py | 70 | CODE | |
| LOW | src/speech_to_speech/STT/parakeet_tdt_handler.py | 236 | CODE | |
| LOW | src/speech_to_speech/STT/smart_progressive_streaming.py | 243 | CODE | |
| LOW | src/speech_to_speech/STT/smart_progressive_streaming.py | 159 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/speech_to_speech/STT/faster_whisper_handler.py | 0 | handles the speech to text generation using a whisper model. | STRING |
| HIGH | …/speech_to_speech/STT/lightning_whisper_mlx_handler.py | 0 | handles the speech to text generation using a whisper model. | STRING |
| HIGH | src/speech_to_speech/STT/whisper_stt_handler.py | 0 | handles the speech to text generation using a whisper model. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/speech_to_speech/LLM/README.md | 67 | --responses_api_api_key YOUR_API_KEY \ | CODE |
| HIGH | src/speech_to_speech/LLM/README.md | 138 | --responses_api_api_key YOUR_API_KEY | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/synthetic_conversation_realtime_client.py | 317 | # Step 1: allocate a slot via the LB (if configured). | COMMENT |
| LOW⚡ | scripts/synthetic_conversation_realtime_client.py | 343 | # Step 3: tell the LB the client actually connected (clears the | COMMENT |
| LOW⚡ | scripts/synthetic_conversation_realtime_client.py | 423 | # Step 5: release the LB slot, regardless of how the ws session ended. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/synthetic_conversation_realtime_client.py | 317 | # Step 1: allocate a slot via the LB (if configured). | COMMENT |
| LOW⚡ | scripts/synthetic_conversation_realtime_client.py | 343 | # Step 3: tell the LB the client actually connected (clears the | COMMENT |
| LOW⚡ | scripts/synthetic_conversation_realtime_client.py | 423 | # Step 5: release the LB slot, regardless of how the ws session ended. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo/server.py | 61 | # Speech-to-speech load balancer URL. When set, the browser POSTs /api/session | COMMENT |
| LOW | demo/main.js | 301 | /** @type {HTMLElement} */ | COMMENT |
| LOW | demo/ui/chat.js | 61 | this._activeUserItemId = ""; | COMMENT |
| LOW | tests/test_llm_utils.py | 21 | # | COMMENT |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 41 | # Additional European languages from Parakeet - map to closest Kokoro language | COMMENT |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 61 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | archive/TTS/parler_handler.py | 53 | CODE | |
| LOW | src/speech_to_speech/LLM/language_model.py | 157 | CODE | |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 126 | CODE | |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 87 | CODE | |
| LOW | src/speech_to_speech/TTS/pocket_tts_handler.py | 27 | CODE | |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 94 | CODE | |
| LOW | src/speech_to_speech/VAD/vad_handler.py | 59 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/speech_to_speech/VAD/vad_handler.py | 571 | # Check if we're currently in a speech segment. | COMMENT |
| LOW | src/speech_to_speech/STT/mlx_audio_whisper_handler.py | 62 | # Check if processor was loaded, if not, load it manually from original model | COMMENT |
| LOW | src/speech_to_speech/STT/smart_progressive_streaming.py | 122 | # Check if window exceeds max_window_size | COMMENT |
| LOW | src/speech_to_speech/STT/smart_progressive_streaming.py | 195 | # Check if window exceeds max_window_size | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …to_speech/LLM/base_openai_compatible_language_model.py | 440 | # ── orchestration ───────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_qwen3_tts_handler_backend.py | 702 | CODE |