Build voice agents with open-source models
This report summarizes scanner evidence for huggingface/speech-to-speech, a Python project with 13,419 GitHub stars. SynthScan examined 102,083 lines of code across 333 source files, recording 2892 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 36.1 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 2149 finding(s).
Are imports declared and package/API names verified? 244 finding(s).
Are wrappers, guards, and repeated structures necessary? 2528 finding(s).
Which changes need focused human review? 2892 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 2892 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo/auth.py | 131 | def oauth_login_required_reason(request) -> "str | None": | CODE |
| LOW | demo/server.py | 473 | def _log_load_balancer_failure(operation: str, response: httpx.Response) -> None: | CODE |
| LOW | demo/s2s-realtime-client.js | 62 | export function normalizePlaybackBufferMs(value) { | CODE |
| LOW | demo/main.js | 441 | function updateRestartAvailability() { | CODE |
| LOW | demo/main.js | 976 | function createResumedAudioContext() { | CODE |
| LOW | demo/main.js | 1234 | function supportsAudioOutputSelection() { | CODE |
| LOW | demo/ws/codec.js | 21 | export function extractResponseTranscript(response) { | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 154 | def test_detected_language_is_reported_with_the_auto_suffix(handler_module): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 164 | def test_auto_suffix_depends_on_the_request_not_the_detection(handler_module): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 174 | def test_reported_language_resolves_to_an_llm_language_name(handler_module): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 182 | def test_languages_outside_the_original_map_now_resolve(handler_module, code): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 220 | def test_auto_is_removed_from_gen_kwargs(handler_module, value): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 230 | def test_absent_language_is_treated_as_auto_detect(handler_module): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 237 | def test_explicit_none_is_treated_as_auto_detect(handler_module): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 244 | def test_invalid_language_is_passed_through_rather_than_silently_auto(handler_module): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 256 | def test_missing_language_on_info_falls_back_to_the_request(handler_module): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 262 | def test_missing_language_on_info_in_auto_mode_reports_none(handler_module): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 268 | def test_empty_detected_language_falls_back_to_the_request(handler_module): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 275 | def test_empty_transcription_still_yields_nothing(handler_module, language): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 282 | def test_segment_text_is_joined_and_stripped(handler_module): | CODE |
| LOW⚡ | tests/test_faster_whisper_language_reporting.py | 292 | def test_timing_logs_only_final_transcriptions(handler_module): | CODE |
| LOW | tests/test_faster_whisper_language_reporting.py | 102 | def test_reports_the_transcribed_language_not_the_requested_one(handler_module): | CODE |
| LOW | tests/test_faster_whisper_language_reporting.py | 112 | def test_pinned_language_is_reported_when_the_model_honours_it(handler_module): | CODE |
| LOW | tests/test_faster_whisper_language_reporting.py | 126 | def test_session_selection_overrides_faster_whisper_setup(handler_module): | CODE |
| LOW | tests/test_faster_whisper_language_reporting.py | 140 | def test_session_auto_removes_faster_whisper_setup_language(handler_module): | CODE |
| LOW | tests/test_faster_whisper_language_reporting.py | 195 | def test_setup_does_not_mutate_the_caller_gen_kwargs(handler_module): | CODE |
| LOW | tests/test_faster_whisper_language_reporting.py | 206 | def test_setup_does_not_mutate_the_caller_gen_kwargs_when_pinned(handler_module): | CODE |
| LOW | tests/test_pipeline_messages.py | 5 | def test_partial_transcription_event_retains_delta_constructor(): | CODE |
| LOW | tests/test_pipeline_messages.py | 11 | def test_prefetch_transaction_commits_cleanup_once_across_completion_order(): | CODE |
| LOW | tests/test_pipeline_messages.py | 27 | def test_prefetch_transaction_discards_deferred_cleanup(): | CODE |
| LOW | tests/test_pipeline_messages.py | 36 | def test_prefetch_transaction_aborts_only_unclaimed_work(): | CODE |
| LOW | tests/test_pipeline_messages.py | 52 | def test_prefetch_transaction_abort_failure_does_not_skip_remaining_cleanup(): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 19 | def test_show_progressive_transcription_returns_combined_text(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 34 | def test_live_transcription_clears_terminal_line_before_each_update(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 62 | def test_live_transcription_truncates_terminal_updates(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 86 | def test_live_transcription_uses_lines_for_non_terminal_logs(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 105 | def test_process_yields_partial_tagged_tuple(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 125 | def test_process_yields_final_transcript(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 151 | def test_configured_language_does_not_relabel_decoded_text(monkeypatch, backend, detected_language): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 194 | def test_mlx_live_final_detects_combined_text_without_using_configured_language(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 239 | def test_session_auto_reset_does_not_report_setup_language( | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 276 | def test_session_auto_reset_keeps_transcript_when_language_detection_fails(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 314 | def test_parakeet_timing_logs_only_final_transcriptions(): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 323 | def test_final_transcription_resets_live_streaming_state(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 351 | def test_turn_change_resets_live_streaming_state_before_progressive(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 384 | def test_mlx_final_ignores_fixed_text_that_exceeds_current_audio(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 423 | def test_final_transcription_prevents_stale_fixed_window_on_next_progressive(monkeypatch): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 464 | def test_on_session_end_resets_streaming_state(): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 480 | def test_superseded_progressive_attempt_cleans_recreated_latency(monkeypatch, outcome): | CODE |
| LOW | tests/test_parakeet_transcription_events.py | 511 | def supersede_before_tracker_binding(*args): | CODE |
| LOW | tests/test_responses_reasoning.py | 90 | def test_assistant_message_payload_survives_complete_reasoning_tool_continuation(stream, content): | CODE |
| LOW | tests/test_responses_reasoning.py | 158 | def test_consecutive_tools_replay_all_reasoning_since_user(stream): | CODE |
| LOW | tests/test_responses_reasoning.py | 190 | def test_reasoning_before_assistant_message_is_retained_without_client_output(stream): | CODE |
| LOW | tests/test_responses_reasoning.py | 216 | def test_reasoning_and_fast_tool_output_are_rolled_back(discard, with_message): | CODE |
| LOW | tests/test_responses_reasoning.py | 241 | def test_stale_speculative_turn_rolls_back_reasoning_and_call(): | CODE |
| LOW | tests/test_responses_reasoning.py | 259 | def test_out_of_band_reasoning_does_not_enter_default_history(stream, with_message): | CODE |
| LOW | tests/test_responses_reasoning.py | 278 | def test_out_of_band_opaque_provider_call_can_continue_with_explicit_client_input(stream): | CODE |
| LOW | tests/test_responses_reasoning.py | 312 | def test_fast_output_does_not_allow_eviction_before_late_stream_reasoning_commits(): | CODE |
| LOW | tests/test_responses_reasoning.py | 345 | def test_out_of_band_snapshot_omits_reasoning_for_unresolved_call(stream, completed_prefix, with_message): | CODE |
| LOW | tests/test_responses_reasoning.py | 382 | def test_stream_completion_order_does_not_reorder_replay_or_delay_tool_dispatch(): | CODE |
| 1956 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | demo/main.js | 45 | // ── Noise gate ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 62 | // ── Tools ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 304 | // ── Connection target ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 336 | // ── Tool state ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 364 | // ── Chat view ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 375 | // ── Account / limiter ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 487 | // ── Radial gate arc (around the mic button, live during a call) ───────────── | COMMENT |
| MEDIUM | demo/main.js | 613 | // ── Tools panel ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 701 | // ── Camera ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 819 | // ── Tool executor ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 1343 | // ── "Your turn" join countdown ────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/main.js | 1535 | // ── 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 | 48 | // ── User transcript state (keyed by item_id) ─────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 69 | // ── Assistant transcript state (keyed by response_id) ────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 73 | // ── Ephemeral bubble auto-dismiss ────────────────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 91 | // ── Panel ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 124 | // ── Shared rendering ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 141 | // ── Ephemeral bubbles ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 296 | // ── History ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo/ui/chat.js | 431 | // ── Client event handlers ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_responses_api_language_model.py | 1704 | # ── Out-of-band (conversation="none") responses ────────────────────────── | COMMENT |
| MEDIUM | tests/test_qwen3_asr_transcription_events.py | 143 | # ── language and device helpers ────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_qwen3_asr_transcription_events.py | 189 | # ── transcription events ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_qwen3_asr_transcription_events.py | 371 | # ── setup ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_qwen3_asr_transcription_events.py | 427 | # ── registry and CLI wiring ────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_chat_completions_backend.py | 180 | # ── Converter tests ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_chat_completions_backend.py | 832 | # ── tool_choice decoupled from tools ────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_chat_completions_backend.py | 55 | # ── Fakes ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_chat_completions_backend.py | 327 | # ── Streaming / non-streaming parse tests ───────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_chat_completions_backend.py | 768 | # ── Text-only (output_modalities=["text"]) ──────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_chat_completions_backend.py | 851 | # ── Error propagation ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_chat_completions_backend.py | 974 | # ── Out-of-band (conversation="none") responses ─────────────────────────────── | COMMENT |
| MEDIUM | tests/test_chat_completions_backend.py | 992 | # ── Standalone runner (no pytest required) ──────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 112 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 114 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 170 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 172 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 194 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 196 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 292 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 294 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 385 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 387 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 615 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 617 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 976 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 978 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 1039 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 1041 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 1484 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 1486 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 1540 | # =================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_chat.py | 1542 | # =================================================================== | COMMENT |
| MEDIUM | tests/test_chat.py | 44 | # =================================================================== | COMMENT |
| MEDIUM | tests/test_chat.py | 46 | # =================================================================== | COMMENT |
| MEDIUM | tests/test_chat.py | 127 | # =================================================================== | COMMENT |
| MEDIUM | tests/test_chat.py | 129 | # =================================================================== | COMMENT |
| 198 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/test_openai_tts_handler.py | 525 | output.append(resampler.push(samples[offset : offset + chunk_size])) | CODE |
| HIGH⚡ | tests/test_openai_tts_handler.py | 527 | output.append(resampler.push(samples[offset:])) | CODE |
| HIGH⚡ | tests/test_openai_tts_handler.py | 528 | output.append(resampler.push(np.empty(0, dtype=np.int16), final=True)) | CODE |
| HIGH⚡ | tests/test_minimax_tts_handler.py | 183 | body = b'data: {"data":null,"base_resp":{"status_code":0}}\n\n' | CODE |
| HIGH⚡ | tests/test_streaming_stt_handler.py | 770 | b"".join(chunked.push(audio[index : index + 1024]) for index in range(0, len(audio), 1024)) | CODE |
| HIGH⚡ | tests/test_streaming_stt_handler.py | 774 | contiguous_audio = contiguous.push(audio) + contiguous.finish_utterance() | CODE |
| HIGH | tests/test_demo_server.py | 354 | globalThis.localStorage = { getItem() { return null; } }; | CODE |
| HIGH | tests/test_demo_server.py | 394 | globalThis.localStorage = { getItem() { return null; } }; | CODE |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 30 | globalThis.localStorage = { getItem() { return null; } }; | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 35 | globalThis.Audio = class Audio { constructor() { this.autoplay = false; this.srcObject = null; } }; | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 129 | audioWorklet: { async addModule(url) { modules.push(url); } }, | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 139 | onmessage: null, | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 141 | this.messages.push(message); | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 142 | if (name === "mic-capture" && message?.kind === "probe" && captureConfig !== undefined) { | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 147 | nodes.push(this); | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 240 | calls.push(call); | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 244 | client._session = { addImage(image, options) { images.push([image, options]); } }; | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 248 | undefined, | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 255 | if (images.length !== 1 || images[0][1].triggerResponse !== false) { | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 265 | globalThis.localStorage = { getItem() { return null; } }; | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 269 | globalThis.Audio = class Audio { constructor() { this.autoplay = false; this.srcObject = null; } }; | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 276 | set(value) { enabled = value; timeline.push(`mic:${value}`); }, | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 280 | async connect() { timeline.push("connect"); } | STRING |
| HIGH⚡ | tests/test_demo_agents_adapter.py | 281 | sendMessage(message) { timeline.push(`greeting:${message}`); } | STRING |
| HIGH | tests/test_demo_agents_adapter.py | 52 | sessions.push(this); | STRING |
| HIGH | tests/test_demo_agents_adapter.py | 56 | sendMessage(message) { this.messages.push(message); } | STRING |
| HIGH | tests/test_demo_agents_adapter.py | 203 | await setupAudio(undefined); | STRING |
| HIGH | tests/test_demo_agents_adapter.py | 219 | globalThis.localStorage = { getItem() { return null; } }; | STRING |
| HIGH | tests/test_demo_agents_adapter.py | 315 | globalThis.localStorage = { getItem() { return null; } }; | STRING |
| HIGH | tests/test_demo_agents_adapter.py | 352 | globalThis.localStorage = { getItem() { return null; } }; | STRING |
| HIGH | tests/test_demo_agents_adapter.py | 378 | error = undefined; | STRING |
| HIGH | tests/test_demo_input_transcription.py | 248 | globalThis.localStorage = {{ getItem() {{ return null; }} }}; | CODE |
| HIGH | tests/test_demo_input_transcription.py | 265 | client.addEventListener("transcript", (event) => transcripts.push(event.detail)); | CODE |
| HIGH | tests/test_demo_input_transcription.py | 266 | client.addEventListener("status", (event) => statuses.push(event.detail.status)); | CODE |
| HIGH⚡ | tests/test_demo_user_audio.py | 86 | if (first.durationMs !== 100 || reopened.durationMs !== 200) { | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 99 | globalThis.localStorage = { getItem() { return null; } }; | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 116 | let recording = null; | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 124 | turnEvents.push(["started", event.detail.itemId]); | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 127 | turnEvents.push(["stopped", event.detail.itemId]); | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 212 | querySelector() { return null; }, | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 214 | let dismissed = null; | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 219 | if (view._activeUserBubble !== null) throw new Error("active voice bubble was not released"); | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 262 | if (view._activeUserBubble !== null) { | STRING |
| HIGH⚡ | tests/test_demo_user_audio.py | 268 | if (spawned !== 1 || view._activeUserBubble !== bubble) { | STRING |
| HIGH | tests/test_demo_user_audio.py | 244 | querySelector() { return null; }, | STRING |
| HIGH | tests/test_demo_user_audio.py | 326 | onmessage: null, | STRING |
| HIGH | tests/test_demo_user_audio.py | 327 | postMessage(message) { messages.push(message); }, | STRING |
| HIGH | tests/test_demo_user_audio.py | 351 | if (config.inputRate !== 48000 || config.outputRate !== 24000) { | STRING |
| HIGH | tests/test_demo_user_audio.py | 369 | if ((pcm[i - 1] < 0 && pcm[i] >= 0) || (pcm[i - 1] >= 0 && pcm[i] < 0)) { | STRING |
| HIGH | tests/test_demo_user_audio.py | 373 | if (zeroCrossings < 78 || zeroCrossings > 82) { | STRING |
| HIGH⚡ | tests/test_diarization_transformers.py | 50 | segments.extend(diarizer.push(audio[start : start + 173], sample_rate=16000)) | CODE |
| HIGH | tests/test_diarization_transformers.py | 70 | segments = diarizer.push(audio, sample_rate=16000) | CODE |
| HIGH | tests/test_streaming_diarization.py | 126 | segments.extend(diarizer.push(audio[start : start + block_size], sample_rate=20)) | CODE |
| HIGH⚡ | tests/test_streaming_diarization.py | 145 | segments = diarizer.push(np.zeros(length, dtype=np.float32), sample_rate=20) + diarizer.finish() | CODE |
| HIGH⚡ | tests/test_streaming_diarization.py | 153 | diarizer.push(np.zeros(1, dtype=np.float32), sample_rate=20) | CODE |
| HIGH⚡ | tests/test_streaming_diarization.py | 158 | diarizer.push(np.zeros(13, dtype=np.float32), sample_rate=20) | CODE |
| HIGH⚡ | tests/test_streaming_diarization.py | 163 | diarizer.push(np.zeros(1, dtype=np.float32), sample_rate=20) | CODE |
| HIGH⚡ | tests/test_streaming_diarization.py | 170 | assert diarizer.push(np.empty(0, dtype=np.float32), sample_rate=20) == [] | CODE |
| HIGH⚡ | tests/test_streaming_diarization.py | 182 | diarizer.push(audio, sample_rate=rate) | CODE |
| HIGH⚡ | tests/test_streaming_diarization.py | 189 | diarizer.push(np.zeros(100, dtype=np.float32), sample_rate=20) | CODE |
| 10 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | demo/server.py | 106 | except ValueError: | CODE |
| HIGH | demo/server.py | 279 | except Exception: | CODE |
| HIGH | tests/test_minimax_tts_handler.py | 99 | except OSError: | CODE |
| HIGH | tests/test_stt_stale_filter.py | 258 | except Empty: | CODE |
| HIGH | tests/test_openai_stt_lifecycle.py | 107 | except ConnectionResetError: | CODE |
| HIGH | tests/test_openai_stt_lifecycle.py | 201 | except OSError: | CODE |
| HIGH | tests/test_configured_runtime.py | 325 | except runtime.ConfiguredRuntimeError: | CODE |
| HIGH | tests/test_configured_runtime.py | 412 | except runtime.ConfiguredRuntimeError: | CODE |
| HIGH | tests/openai_realtime/test_websocket_router.py | 1930 | except Exception: | CODE |
| HIGH | tests/openai_realtime/test_webrtc.py | 797 | except asyncio.TimeoutError: | CODE |
| HIGH | examples/realtime_web_search_tool.py | 83 | except ValueError: | CODE |
| HIGH | scripts/benchmark_tts.py | 209 | except Exception: | CODE |
| HIGH | src/speech_to_speech/LLM/language_model.py | 264 | except Empty: | CODE |
| HIGH | src/speech_to_speech/LLM/language_model.py | 840 | except Exception: | CODE |
| HIGH | src/speech_to_speech/LLM/language_model.py | 1025 | except Exception: | CODE |
| HIGH | src/speech_to_speech/LLM/language_model.py | 829 | except (RuntimeError, ValueError): | CODE |
| HIGH | src/speech_to_speech/LLM/language_model.py | 1017 | except (RuntimeError, ValueError): | CODE |
| HIGH | …to_speech/LLM/base_openai_compatible_language_model.py | 390 | except Exception: | CODE |
| HIGH | …to_speech/LLM/base_openai_compatible_language_model.py | 921 | except Exception: | CODE |
| HIGH | src/speech_to_speech/LLM/compaction_prompt.py | 119 | except json.JSONDecodeError: | CODE |
| HIGH | src/speech_to_speech/TTS/openai_compatible_handler.py | 235 | except RuntimeError: | CODE |
| HIGH | src/speech_to_speech/TTS/qwen3_tts_handler.py | 1055 | except Exception: | CODE |
| HIGH | src/speech_to_speech/TTS/qwen3_tts_handler.py | 1062 | except Exception: | CODE |
| HIGH | src/speech_to_speech/api/openai_realtime/llm_proxy.py | 241 | except ValueError: | CODE |
| HIGH | …eech_to_speech/api/openai_realtime/websocket_router.py | 361 | except KeyError: | CODE |
| HIGH | …eech_to_speech/api/openai_realtime/websocket_router.py | 526 | except asyncio.CancelledError: | CODE |
| HIGH | …eech_to_speech/api/openai_realtime/websocket_router.py | 533 | except Exception: | CODE |
| HIGH | …eech_to_speech/api/openai_realtime/websocket_router.py | 928 | except Empty: | CODE |
| HIGH | …eech_to_speech/api/openai_realtime/websocket_router.py | 1139 | except Empty: | CODE |
| HIGH | src/speech_to_speech/api/openai_realtime/transports.py | 114 | except Exception: # noqa: BLE001 | CODE |
| HIGH | …ech_to_speech/api/openai_realtime/handlers/response.py | 277 | except ValueError: | CODE |
| HIGH | src/speech_to_speech/STT/openai_compatible_handler.py | 122 | except RuntimeError: | CODE |
| HIGH | src/speech_to_speech/STT/streaming_handler.py | 782 | except Empty: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | archive/TTS/parler_handler.py | 1 | CODE | |
| LOW | archive/TTS/melo_handler.py | 1 | CODE | |
| LOW | tests/test_faster_whisper_language_reporting.py | 20 | CODE | |
| LOW | tests/test_openai_tts_handler.py | 1 | CODE | |
| LOW | tests/test_nemotron_farsi_stt.py | 1 | CODE | |
| LOW | tests/test_nemo_asr_stt_latency.py | 1 | CODE | |
| LOW | tests/test_chat_turn_order.py | 8 | CODE | |
| LOW | tests/test_handler_logging_hygiene.py | 10 | CODE | |
| LOW | tests/test_chattts_streaming.py | 1 | CODE | |
| LOW | tests/test_minimax_tts_handler.py | 3 | CODE | |
| LOW | tests/test_language_prompt.py | 11 | CODE | |
| LOW | tests/test_openai_stt_handler.py | 1 | CODE | |
| LOW | tests/test_turn_latency.py | 1 | CODE | |
| LOW | tests/test_transcript_log_hygiene.py | 3 | CODE | |
| LOW | tests/test_kitten_tts_handler.py | 1 | CODE | |
| LOW | tests/test_nemotron_streaming_stt.py | 1 | CODE | |
| LOW | tests/test_response_overrides.py | 1 | CODE | |
| LOW | tests/test_stt_stale_filter.py | 1 | CODE | |
| LOW | tests/test_streaming_stt_handler.py | 1 | CODE | |
| LOW | tests/test_whisper_language_detection.py | 21 | CODE | |
| LOW | tests/test_parakeet_language_reporting.py | 3 | CODE | |
| LOW | tests/test_qwen3_asr_transcription_events.py | 1 | CODE | |
| LOW | tests/test_chat_completions_backend.py | 10 | CODE | |
| LOW | tests/test_kokoro_language_voice.py | 1 | CODE | |
| LOW | tests/test_mlx_audio_whisper_handler.py | 16 | CODE | |
| LOW | tests/test_openai_stt_lifecycle.py | 1 | CODE | |
| LOW | tests/test_chat.py | 9 | CODE | |
| LOW | tests/test_supertonic_tts_handler.py | 1 | CODE | |
| LOW | tests/test_visemes.py | 41 | CODE | |
| LOW | tests/test_stt_session_language_reset.py | 13 | CODE | |
| LOW | tests/test_nemo_asr_handler.py | 1 | CODE | |
| LOW | tests/test_device.py | 1 | CODE | |
| LOW | tests/install_smoke.py | 1 | CODE | |
| LOW | tests/test_auto_language_spelling.py | 14 | CODE | |
| LOW | tests/test_whisper_progressive_transcription.py | 23 | CODE | |
| LOW | tests/test_omnivoice_tts_handler.py | 1 | CODE | |
| LOW | tests/test_kokoro_tts_latency.py | 1 | CODE | |
| LOW | tests/test_kokoro_device.py | 1 | CODE | |
| LOW | tests/test_orukeet_stt.py | 1 | CODE | |
| LOW | tests/test_nemotron_farsi_integration.py | 7 | CODE | |
| LOW | tests/openai_realtime/agents_sdk_server.py | 3 | CODE | |
| LOW | examples/realtime_web_search_tool.py | 3 | CODE | |
| LOW | scripts/prepare_eval_space.py | 12 | CODE | |
| LOW | src/speech_to_speech/_config_yaml.py | 3 | CODE | |
| LOW | src/speech_to_speech/config.py | 3 | CODE | |
| LOW | src/speech_to_speech/configured_runtime.py | 3 | CODE | |
| LOW | src/speech_to_speech/cli.py | 1 | CODE | |
| LOW | src/speech_to_speech/baseHandler.py | 1 | CODE | |
| LOW | src/speech_to_speech/backend_registry.py | 1 | CODE | |
| LOW | src/speech_to_speech/pipeline/language_detection.py | 3 | CODE | |
| LOW | src/speech_to_speech/pipeline/events.py | 8 | 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 | |
| 111 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo/auth.py | 54 | except Exception as exc: # pragma: no cover - import guard | CODE |
| LOW | demo/auth.py | 72 | except Exception as exc: # pragma: no cover - defensive | CODE |
| LOW | demo/auth.py | 102 | except Exception: | CODE |
| LOW | demo/auth.py | 186 | except Exception as exc: # pragma: no cover - network/permission dependent | CODE |
| LOW | demo/server.py | 190 | except Exception as exc: # pragma: no cover - defensive | CODE |
| LOW | demo/server.py | 279 | except Exception: | CODE |
| LOW⚡ | demo/server.py | 606 | except Exception: | CODE |
| LOW⚡ | demo/server.py | 615 | except Exception: | CODE |
| LOW⚡ | demo/server.py | 624 | except Exception: | CODE |
| MEDIUM | demo/server.py | 603 | def _safe_json(response) -> dict: | CODE |
| LOW | tests/test_chat_completions_backend.py | 1017 | except Exception as e: # noqa: BLE001 | CODE |
| MEDIUM | tests/test_openai_stt_lifecycle.py | 61 | def run(): | CODE |
| MEDIUM | tests/test_openai_stt_lifecycle.py | 127 | def run(): | CODE |
| LOW | tests/test_openai_stt_lifecycle.py | 64 | except Exception as exc: | CODE |
| LOW | tests/test_openai_stt_lifecycle.py | 130 | except Exception as exc: | CODE |
| LOW | tests/openai_realtime/test_turn_latency.py | 342 | except Exception as exc: | CODE |
| MEDIUM | tests/openai_realtime/test_turn_latency.py | 339 | def work(): | CODE |
| LOW⚡ | tests/openai_realtime/test_websocket_router.py | 1930 | except Exception: | CODE |
| LOW | tests/openai_realtime/realtime_contract.py | 65 | except Exception as exc: # pragma: no cover - failure path | CODE |
| LOW | tests/openai_realtime/realtime_contract.py | 81 | except Exception as exc: # pragma: no cover - failure path | CODE |
| LOW | scripts/benchmark_tts.py | 209 | except Exception: | CODE |
| LOW | scripts/benchmark_tts.py | 225 | 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 | src/speech_to_speech/configured_runtime.py | 41 | except Exception: | CODE |
| LOW | src/speech_to_speech/cli.py | 227 | except Exception: | CODE |
| LOW | src/speech_to_speech/baseHandler.py | 148 | except Exception as exc: | CODE |
| LOW | src/speech_to_speech/baseHandler.py | 215 | except Exception as exc: | CODE |
| LOW | src/speech_to_speech/pipeline/messages.py | 303 | except Exception as exc: | CODE |
| LOW | src/speech_to_speech/pipeline/messages.py | 352 | except Exception: | CODE |
| LOW | src/speech_to_speech/pipeline/history.py | 95 | except Exception: | CODE |
| LOW | src/speech_to_speech/evals/big_bench_audio/runner.py | 217 | except Exception as exc: # noqa: BLE001 — surfaced as a per-item error | CODE |
| LOW | src/speech_to_speech/evals/big_bench_audio/runner.py | 331 | except Exception as exc: # noqa: BLE001 — every failure is a comparable data point | CODE |
| LOW | src/speech_to_speech/evals/big_bench_audio/runner.py | 382 | except Exception as exc: # noqa: BLE001 — retain other items when an asset fails | CODE |
| LOW | src/speech_to_speech/evals/big_bench_audio/judge.py | 87 | except Exception as exc: # noqa: BLE001 — a judge outage must not void the run | CODE |
| LOW | src/speech_to_speech/evals/big_bench_audio/__main__.py | 124 | except Exception as exc: # noqa: BLE001 — the server is still warming up | CODE |
| LOW | src/speech_to_speech/LLM/language_model.py | 710 | except Exception as exc: | CODE |
| LOW | src/speech_to_speech/LLM/language_model.py | 840 | except Exception: | CODE |
| LOW | src/speech_to_speech/LLM/language_model.py | 1025 | except Exception: | CODE |
| MEDIUM | …to_speech/LLM/base_openai_compatible_language_model.py | 398 | def run() -> None: | CODE |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 390 | except Exception: | CODE |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 831 | except Exception as exc: | CODE |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 921 | except Exception: | CODE |
| LOW | src/speech_to_speech/LLM/lm_output_processor.py | 105 | except Exception: | CODE |
| LOW | src/speech_to_speech/LLM/chat.py | 728 | except Exception: | CODE |
| LOW | src/speech_to_speech/LLM/chat.py | 1334 | except Exception as exc: | CODE |
| LOW | src/speech_to_speech/LLM/tool_call/function_call.py | 113 | except Exception: | CODE |
| LOW | src/speech_to_speech/LLM/tool_call/function_call.py | 328 | except Exception: | CODE |
| LOW | src/speech_to_speech/STV/w2v_stv_handler.py | 103 | except Exception: | CODE |
| LOW | src/speech_to_speech/TTS/openai_compatible_handler.py | 137 | except Exception as exc: | CODE |
| LOW | src/speech_to_speech/TTS/openai_compatible_handler.py | 578 | except Exception as exc: | CODE |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 210 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 354 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 497 | except Exception as e: | CODE |
| LOW | src/speech_to_speech/TTS/facebookmms_handler.py | 139 | except Exception as exc: | CODE |
| LOW | src/speech_to_speech/TTS/pocket_tts_handler.py | 335 | except Exception: | CODE |
| MEDIUM | src/speech_to_speech/TTS/qwen3_tts_handler.py | 1049 | def cleanup(self) -> None: | CODE |
| 60 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo/auth.py | 288 | 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 | tests/test_nemotron_streaming_stt.py | 69 | def set_inference_prompt(self, lang: str) -> None: | CODE |
| LOW | examples/realtime_web_search_tool.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/configured_runtime.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/s2s_pipeline.py | 76 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/baseHandler.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/backend_registry.py | 58 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/pipeline/language_detection.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/pipeline/__init__.py | 37 | __all__ = [ | CODE |
| LOW | src/speech_to_speech/pipeline/transcript_logging.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/pipeline/transcript_logging.py | 35 | def set_log_transcripts(enabled: bool) -> None: | CODE |
| LOW | src/speech_to_speech/pipeline/messages.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/pipeline/speculative_turns.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/evals/big_bench_audio/runner.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/evals/big_bench_audio/__init__.py | 36 | __all__ = [ | CODE |
| LOW | src/speech_to_speech/evals/big_bench_audio/hub.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/evals/big_bench_audio/judge.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/LLM/language_model.py | 96 | logger = logging.getLogger(__name__) | CODE |
| LOW | …peech_to_speech/LLM/chat_completions_language_model.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 63 | 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 | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/LLM/audio_input_notifier.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/LLM/chat.py | 51 | logger = logging.getLogger(__name__) | CODE |
| LOW | …c/speech_to_speech/LLM/responses_api_language_model.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/LLM/tool_call/function_call.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/STV/w2v_stv_handler.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/utils/mlx_lock.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/utils/thread_manager.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/minimax_tts_handler.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/supertonic_tts_handler.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/omnivoice_handler.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/openai_compatible_handler.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/chatTTS_handler.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 152 | def _setup_mlx(self, model_name: str) -> None: | CODE |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 181 | def _setup_kokoro(self) -> None: | CODE |
| LOW | src/speech_to_speech/TTS/facebookmms_handler.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/kitten_tts_handler.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/pocket_tts_handler.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 221 | 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 | 259 | def _setup_mlx(self, model_name: str) -> None: | CODE |
| LOW | …speech_to_speech/api/openai_realtime/webrtc_session.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/api/openai_realtime/service.py | 92 | 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 | …c/speech_to_speech/api/openai_realtime/audio_client.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 72 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/speech_to_speech/api/openai_realtime/transports.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | …to_speech/api/openai_realtime/handlers/conversation.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | …eech_to_speech/api/openai_realtime/handlers/session.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | …ech_to_speech/api/openai_realtime/handlers/__init__.py | 7 | __all__ = [ | CODE |
| LOW⚡ | …ech_to_speech/api/openai_realtime/handlers/response.py | 72 | logger = logging.getLogger(__name__) | CODE |
| LOW | …speech_to_speech/api/openai_realtime/handlers/audio.py | 33 | logger = logging.getLogger(__name__) | CODE |
| 20 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_provider_response_status.py | 122 | CODE | |
| LOW | tests/test_provider_response_status.py | 454 | CODE | |
| LOW | tests/test_minimax_tts_handler.py | 56 | CODE | |
| LOW | tests/test_minimax_tts_handler.py | 217 | CODE | |
| LOW | tests/test_minimax_tts_handler.py | 66 | CODE | |
| LOW | tests/test_pocket_tts_handler.py | 669 | CODE | |
| LOW | tests/test_openai_stt_handler.py | 640 | CODE | |
| LOW | tests/test_streaming_stt_handler.py | 407 | CODE | |
| LOW | tests/test_streaming_stt_handler.py | 1857 | CODE | |
| LOW | tests/test_streaming_stt_handler.py | 410 | CODE | |
| LOW | tests/test_streaming_stt_handler.py | 1862 | CODE | |
| LOW | tests/test_chat_completions_backend.py | 146 | CODE | |
| LOW | tests/test_openai_stt_lifecycle.py | 155 | CODE | |
| LOW | tests/test_openai_stt_lifecycle.py | 164 | CODE | |
| LOW | tests/test_chat.py | 86 | CODE | |
| LOW | tests/openai_realtime/test_turn_latency.py | 370 | CODE | |
| LOW | tests/openai_realtime/test_websocket_router.py | 77 | CODE | |
| LOW | tests/openai_realtime/test_websocket_router.py | 2109 | CODE | |
| LOW | tests/openai_realtime/test_websocket_router.py | 717 | CODE | |
| LOW | tests/openai_realtime/test_websocket_router.py | 920 | CODE | |
| LOW | tests/openai_realtime/test_websocket_router.py | 1099 | CODE | |
| LOW | tests/openai_realtime/test_websocket_router.py | 1384 | CODE | |
| LOW | tests/openai_realtime/test_websocket_router.py | 1972 | CODE | |
| LOW | tests/openai_realtime/test_response_input_identity.py | 400 | CODE | |
| LOW | tests/openai_realtime/realtime_contract.py | 88 | CODE | |
| LOW | tests/openai_realtime/realtime_contract.py | 279 | CODE | |
| LOW | tests/openai_realtime/realtime_contract.py | 255 | 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 | src/speech_to_speech/_config_yaml.py | 17 | CODE | |
| LOW | src/speech_to_speech/config.py | 178 | CODE | |
| LOW | src/speech_to_speech/config.py | 259 | CODE | |
| LOW | src/speech_to_speech/configured_runtime.py | 53 | CODE | |
| LOW | src/speech_to_speech/configured_runtime.py | 208 | CODE | |
| LOW | src/speech_to_speech/s2s_pipeline.py | 569 | CODE | |
| LOW | src/speech_to_speech/baseHandler.py | 131 | CODE | |
| LOW | src/speech_to_speech/pipeline/turn_latency.py | 292 | CODE | |
| LOW | src/speech_to_speech/pipeline/turn_latency.py | 356 | CODE | |
| LOW | src/speech_to_speech/evals/big_bench_audio/runner.py | 178 | CODE | |
| LOW | src/speech_to_speech/evals/big_bench_audio/runner.py | 367 | CODE | |
| LOW | src/speech_to_speech/evals/big_bench_audio/dataset.py | 153 | CODE | |
| LOW | src/speech_to_speech/evals/big_bench_audio/__main__.py | 94 | CODE | |
| LOW | src/speech_to_speech/LLM/language_model.py | 316 | CODE | |
| LOW | src/speech_to_speech/LLM/language_model.py | 552 | CODE | |
| LOW | src/speech_to_speech/LLM/language_model.py | 798 | CODE | |
| LOW | src/speech_to_speech/LLM/language_model.py | 988 | CODE | |
| LOW | src/speech_to_speech/LLM/language_model.py | 1095 | CODE | |
| LOW | src/speech_to_speech/LLM/language_model.py | 1132 | CODE | |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 593 | CODE | |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 697 | CODE | |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 750 | CODE | |
| LOW | src/speech_to_speech/LLM/lm_output_processor.py | 134 | CODE | |
| LOW | src/speech_to_speech/LLM/chat.py | 346 | CODE | |
| LOW | src/speech_to_speech/LLM/chat.py | 477 | CODE | |
| LOW | src/speech_to_speech/LLM/chat.py | 528 | CODE | |
| LOW | src/speech_to_speech/LLM/chat.py | 601 | CODE | |
| LOW | src/speech_to_speech/LLM/chat.py | 670 | CODE | |
| LOW | src/speech_to_speech/LLM/chat.py | 795 | CODE | |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_cli_defaults.py | 0 | schema_version: 1 blocks: vad: {kind: vad, backend: silero} stt: {kind: stt, backend: openai} llm: {kind: llm, backend: | STRING |
| HIGH | tests/test_config.py | 0 | schema_version: 1 blocks: vad: {kind: vad, backend: silero} stt: {kind: stt, backend: openai} llm: {kind: llm, backend: | STRING |
| HIGH | tests/test_configured_runtime.py | 0 | schema_version: 1 blocks: vad: {kind: vad, backend: silero} stt: {kind: stt, backend: openai} llm: {kind: llm, backend: | STRING |
| 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 |
|---|---|---|---|---|
| LOW | archive/TTS/parler_handler.py | 53 | CODE | |
| LOW | tests/test_streaming_stt_handler.py | 112 | CODE | |
| LOW | src/speech_to_speech/LLM/language_model.py | 176 | CODE | |
| LOW | …to_speech/LLM/base_openai_compatible_language_model.py | 183 | CODE | |
| LOW | src/speech_to_speech/TTS/minimax_tts_handler.py | 45 | CODE | |
| LOW | src/speech_to_speech/TTS/omnivoice_handler.py | 27 | CODE | |
| LOW | src/speech_to_speech/TTS/openai_compatible_handler.py | 366 | CODE | |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 92 | CODE | |
| LOW | src/speech_to_speech/TTS/facebookmms_handler.py | 68 | CODE | |
| LOW | src/speech_to_speech/TTS/pocket_tts_handler.py | 33 | CODE | |
| LOW | src/speech_to_speech/TTS/qwen3_tts_handler.py | 109 | CODE | |
| LOW | src/speech_to_speech/VAD/vad_handler.py | 64 | CODE | |
| LOW | src/speech_to_speech/STT/openai_compatible_handler.py | 224 | CODE |
| 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 | 136 | --responses_api_api_key YOUR_API_KEY | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | src/speech_to_speech/TTS/pocket_tts_handler.py | 247 | tokens = len(self.model.flow_lm.conditioner.tokenizer.sp.encode(phonemes)) | CODE |
| 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 | let currentState = "idle"; | COMMENT |
| LOW | demo/ui/chat.js | 61 | // RTC media and data-channel events are not ordered relative to each other. | COMMENT |
| LOW | src/speech_to_speech/LLM/chat.py | 141 | """ | COMMENT |
| LOW | src/speech_to_speech/TTS/kokoro_handler.py | 41 | "pt": "p", # Portuguese | COMMENT |
| LOW | src/speech_to_speech/api/openai_realtime/service.py | 281 | # Keyed by output index so response.done can preserve interleaving with | COMMENT |
| LOW | src/speech_to_speech/api/openai_realtime/service.py | 301 | input_turn_by_call_id: dict[str, InputTurnReference] = Field(default_factory=dict) | COMMENT |
| LOW | …eech_to_speech/api/openai_realtime/websocket_router.py | 601 | logger.info(f"Client {session_id} disconnected from pipeline {unit.index}") | 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⚡ | 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 | src/speech_to_speech/VAD/vad_handler.py | 671 | # Check if we're currently in a speech segment. | COMMENT |
| LOW | src/speech_to_speech/STT/mlx_audio_whisper_handler.py | 64 | # 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 | tests/test_qwen3_tts_handler_backend.py | 759 | CODE | |
| MEDIUM | tests/openai_realtime/test_turn_latency.py | 333 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …to_speech/LLM/base_openai_compatible_language_model.py | 748 | # ── orchestration ───────────────────────────────────────────────────────── | COMMENT |