VoiceStudio is the open-source, fully-local ElevenLabs alternative — voice cloning, voice design, video dubbing, dictation, transcription & audiobook creation in 646 languages.
This report presents the forensic synthetic code analysis of debpalash/OmniVoice-Studio, a Python project with 11,921 GitHub stars. SynthScan v2.0 examined 485,696 lines of code across 1816 source files, recording 9796 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 29.9 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 9796 distinct pattern matches across 20 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 | frontend/src-tauri/tests/backend_lifecycle.rs | 62 | // ── Scenario child ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/tests/backend_lifecycle.rs | 273 | // ── Harness plumbing ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/tests/backend_lifecycle.rs | 551 | // ── Scenarios ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/appimage/AppRun.test.sh | 75 | # ── Bundled-version marker cases (#961 follow-up) ─────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/appimage/AppRun.test.sh | 133 | # ── System-vs-bundled WebKit priority (#1258, #1244) ──────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/appimage/AppRun.test.sh | 430 | # ── The load probe must be a REAL binary, and must test the REAL value ────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/reset.rs | 598 | // ── End-to-end deletion against a real on-disk tree ─────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/tools.rs | 648 | // ── Sidecar detection ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/tools.rs | 688 | // ── On-demand ffmpeg / ffprobe download ─────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/tools.rs | 982 | // ── uv resolution ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/crash.rs | 44 | // ── Exit-status decomposition ────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/crash.rs | 88 | // ── Marker model ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/crash.rs | 143 | // ── Version gating ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/crash.rs | 172 | // ── Persistence ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/crash.rs | 239 | // ── Tauri commands ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/config.rs | 10 | // ── Persistent app config ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/config.rs | 198 | // ── Region helpers ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/config.rs | 279 | // ── Tauri commands ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/backend.rs | 21 | // ── Port probing ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/backend.rs | 242 | // ── Log paths ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/backend.rs | 285 | // ── Per-run crash evidence (#1510) ──────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/backend.rs | 285 | // ── Per-run crash evidence (#1510) ──────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/backend.rs | 438 | // ── Spawn the backend via the bootstrapped venv Python ──────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/backend.rs | 914 | // attached to) ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/backend.rs | 953 | // ── Per-run crash evidence (#1510) ─────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/backend.rs | 953 | // ── Per-run crash evidence (#1510) ─────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/updater_channel.rs | 189 | // ── GitHub releases (changelog/history panel) ───────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/lib.rs | 43 | // ── Port ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/lib.rs | 52 | // ── Shared state types ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/lib.rs | 212 | // ── WebView media-capture permissions ───────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/lib.rs | 364 | // ── Windows: dictation pill must never take foreground focus (#982) ──────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/lib.rs | 364 | // ── Windows: dictation pill must never take foreground focus (#982) ──────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/lib.rs | 484 | // ── Tauri entry ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/lib.rs | 509 | // ── Detect pill mode from CLI args OR persisted config ──────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/lib.rs | 666 | // ── Programmatic widget window creation ────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/lib.rs | 753 | // ── Global dictation shortcut (hold-to-talk) ───────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/lib.rs | 781 | // ── System tray ────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/lib.rs | 946 | // ── Hide the unused window per mode ────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/lib.rs | 1013 | // ── Bootstrap ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/bootstrap.rs | 19 | // ── Bootstrap stages ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/bootstrap.rs | 114 | // ── Splash log + byte-progress event channel ───────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/bootstrap.rs | 202 | // ── Tauri commands ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/bootstrap.rs | 760 | // ── Backend supervisor (auto-restart) ───────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/bootstrap.rs | 1358 | // ── Venv bootstrap ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/bootstrap.rs | 1507 | // ── plan-03 (#130): restricted-network bootstrap resilience ──────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/bootstrap.rs | 1507 | // ── plan-03 (#130): restricted-network bootstrap resilience ──────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/bootstrap.rs | 1668 | // ── #314: broken-venv detection + self-heal ──────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/bootstrap.rs | 1668 | // ── #314: broken-venv detection + self-heal ──────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/bootstrap.rs | 1804 | // ── Linux/Windows: cuDNN 8 compat side-load ──────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/dictation_output.rs | 769 | // ── Destination capture and reactivation ──────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/dictation_output.rs | 1072 | // ── Wayland insertion adapters ────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/commands.rs | 18 | // ── Native host-path authorization ─────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/commands.rs | 266 | // ── System metrics ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/commands.rs | 298 | // ── Log tail ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/commands.rs | 409 | // ── HuggingFace cache scan ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/commands.rs | 504 | // ── Dictation output ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/commands.rs | 554 | // ── OS permission probes (microphone / input monitoring) ───────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/commands.rs | 800 | // ── Simulate live typing ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/commands.rs | 875 | // ── Tray icon swap ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src-tauri/src/commands.rs | 906 | // ── Quit ────────────────────────────────────────────────────────────────── | COMMENT |
| 1711 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/e2e-perf/responsiveness.spec.ts | 128 | async function installDeterministicBrowserState(page: Page): Promise<Set<string>> { | CODE |
| LOW | frontend/e2e-prod/admin-session-hygiene.spec.ts | 6 | async function browserCredentialSnapshot(page: Page) { | CODE |
| LOW | frontend/src/utils/download.js | 14 | export function parseFilenameFromContentDisposition(header) { | CODE |
| LOW | frontend/src/utils/segments.js | 83 | export function applySpeakerCloneDefaults(segments, speakerClones) { | CODE |
| LOW | frontend/src/utils/persistenceLifecycle.ts | 32 | async function settleLongformWithinDeadline( | CODE |
| LOW | frontend/src/utils/persistenceLifecycle.ts | 57 | export async function flushApplicationPersistence( | CODE |
| LOW | frontend/src/utils/persistenceLifecycle.ts | 98 | export function reloadAfterApplicationPersistence( | CODE |
| LOW | frontend/src/utils/persistenceLifecycle.ts | 110 | export async function installDesktopPersistenceExitHandshake( | CODE |
| LOW | frontend/src/utils/backendContact.ts | 133 | export function unreachableBackendMessage( | CODE |
| LOW | frontend/src/utils/globalErrorHandlers.js | 52 | export function installGlobalErrorHandlers() { | CODE |
| LOW | frontend/src/utils/globalErrorHandlers.test.js | 11 | function dispatchUnhandledRejection(reason) { | CODE |
| LOW | frontend/src/utils/webCompat.js | 29 | export function installAbortSignalTimeout() { | CODE |
| LOW | frontend/src/utils/bugReport.js | 300 | function captureReachabilitySection(error) { | CODE |
| LOW | frontend/src/utils/indexedDbLongformStore.ts | 51 | export function createIndexedDbLongformStore( | CODE |
| LOW | frontend/src/utils/coalescedJsonStorage.ts | 92 | export function createCoalescedJsonStorage( | CODE |
| LOW | frontend/src/utils/coalescedJsonStorage.ts | 475 | function installPersistenceLifecycleFlush(): () => void { | CODE |
| LOW | frontend/src/utils/multiLang.js | 25 | export function translationProgressByCode(segments, targets) { | CODE |
| LOW | frontend/src/utils/modelNotDownloaded.jsx | 7 | export function modelNotDownloadedPayload(err) { | CODE |
| LOW | frontend/src/utils/longformPersistence.ts | 156 | export function preserveRevisionedLongformFallback(rawValue: string | null): string | null { | CODE |
| LOW | frontend/src/utils/longformPersistence.ts | 463 | function materializeDeadlineFallback(entry: PendingWrite<S>): void { | CODE |
| LOW | frontend/src/utils/longformPersistence.ts | 478 | async function flushPendingWritesForExit(): Promise<void> { | CODE |
| LOW | frontend/src/utils/longformPersistence.ts | 801 | async function removeDurableWithTombstone(): Promise<void> { | CODE |
| LOW | frontend/src/utils/longformPersistence.ts | 1011 | export function configureLongformDurableStoreForTests(store: LongformDurableStore): void { | CODE |
| LOW | frontend/src/utils/longformPersistence.ts | 1017 | export function resetLongformPersistenceForTests(): void { | CODE |
| LOW | frontend/src/utils/generatePreflight.js | 121 | export async function warnIfEngineUnderProvisioned(text = '') { | CODE |
| LOW | frontend/src/utils/mediaRecorder.js | 71 | export function createSupportedMediaRecorder( | CODE |
| LOW | frontend/src/utils/mediaRecorder.js | 84 | export function startSupportedMediaRecorder( | CODE |
| LOW | frontend/src/utils/audioInput.js | 23 | export function buildAudioInputConstraints(deviceId = '', channelMode = 'auto') { | CODE |
| LOW | frontend/src/utils/permissions.js | 105 | export function openAccessibilitySettings() { | CODE |
| LOW | frontend/src/utils/permissions.js | 115 | export function openInputMonitoringSettings() { | CODE |
| LOW | frontend/src/utils/backendCrash.ts | 187 | export async function getUnacknowledgedBackendCrash(): Promise<BackendCrashMarker | null> { | CODE |
| LOW | …ontend/src/components/DesktopCaptureShortcutBridge.jsx | 14 | export default function DesktopCaptureShortcutBridge() { | CODE |
| LOW | frontend/src/components/BackendStartFailureNotice.jsx | 34 | export default function BackendStartFailureNotice() { | CODE |
| LOW | frontend/src/components/EngineCompatibilityMatrix.jsx | 246 | export default function EngineCompatibilityMatrix({ | CODE |
| LOW | frontend/src/components/WizardLibrary.jsx | 129 | export function reduceWizardDownloadEvent(prev, ev) { | CODE |
| LOW | …ntend/src/components/dub/DubPasteTranslationDialog.jsx | 28 | export default function DubPasteTranslationDialog({ open, segments = [], onApply, onClose }) { | CODE |
| LOW | frontend/src/components/dub/DubLeftColumn.jsx | 200 | async function hydrateMissingTranslations(code) { | CODE |
| LOW | frontend/src/hooks/useEffectiveDictationShortcut.js | 13 | export function useEffectiveDictationShortcut(enabled = undefined) { | CODE |
| LOW | frontend/src/api/generate.ts | 43 | export async function generateSpeechWithinAdmission( | CODE |
| LOW | frontend/src/api/hooks.ts | 89 | export function isDismissibleNotification(n: { level?: string }): boolean { | CODE |
| LOW | frontend/src/store/index.ts | 75 | function normalizeLongformOverrides(value: unknown): LongformOverrides { | CODE |
| LOW | omnivoice/training/builder.py | 49 | def build_model_and_tokenizer( | CODE |
| LOW | omnivoice/training/trainer.py | 161 | def create_optimizer_and_scheduler(self): | CODE |
| LOW | omnivoice/utils/voice_design.py | 77 | def _valid_instruct_from_items(items): | CODE |
| LOW⚡ | omnivoice/models/omnivoice.py | 315 | def _can_set_experts_implementation(cls) -> bool: | CODE |
| LOW⚡ | omnivoice/models/omnivoice.py | 319 | def _can_set_attn_implementation(cls) -> bool: | CODE |
| LOW | omnivoice/models/omnivoice.py | 741 | def create_voice_clone_prompt( | CODE |
| LOW | omnivoice/models/omnivoice.py | 1262 | def _prepare_inference_inputs( | CODE |
| LOW | omnivoice/models/omnivoice.py | 1497 | def _predict_tokens_with_scoring(self, c_logits, u_logits, gen_config): | CODE |
| LOW | omnivoice/models/omnivoice.py | 1730 | def _tokenize_with_nonverbal_tags(text: str, tokenizer) -> torch.Tensor: | CODE |
| LOW | omnivoice/models/omnivoice_flashinfer.py | 98 | def _fi_attention_module_forward( | CODE |
| LOW | omnivoice/models/omnivoice_flashinfer.py | 228 | def _generate_iterative_packed( | CODE |
| LOW | omnivoice/models/omnivoice_flashinfer.py | 559 | def _get_or_capture_bucket_graph(model, B, U_b, C_b): | CODE |
| LOW | omnivoice/cli/infer_batch.py | 255 | def estimate_sample_total_duration( | CODE |
| LOW | omnivoice/cli/infer_batch.py | 274 | def cluster_samples_by_duration( | CODE |
| LOW | omnivoice/cli/infer_batch.py | 316 | def cluster_samples_by_batch_size( | CODE |
| LOW | omnivoice/eval/wer/sensevoice.py | 185 | def run_eval_worker_sensevoice(data_chunk, batch_size): | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 48 | def read_language_mapping_from_tsv( | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 333 | def run_eval_worker_paraformer(data_chunk, batch_size): | CODE |
| LOW | omnivoice/eval/wer/fleurs.py | 90 | def read_language_mapping_from_tsv( | CODE |
| 5213 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | omnivoice/models/omnivoice.py | 296 | except Exception: | CODE |
| LOW | omnivoice/models/omnivoice.py | 265 | except Exception as e: | CODE |
| LOW | omnivoice/models/omnivoice.py | 420 | except Exception as exc: | CODE |
| LOW | omnivoice/cli/infer_batch.py | 499 | except Exception as e: | CODE |
| LOW⚡ | omnivoice/cli/demo.py | 213 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens.py | 256 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens.py | 317 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens.py | 506 | except Exception as exc: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens.py | 579 | except Exception: | CODE |
| LOW | omnivoice/scripts/denoise_audio.py | 607 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/denoise_audio.py | 670 | except Exception: | CODE |
| LOW | omnivoice/scripts/denoise_audio.py | 930 | except Exception as exc: | CODE |
| LOW | omnivoice/scripts/denoise_audio.py | 1002 | except Exception: | CODE |
| LOW | omnivoice/scripts/jsonl_to_webdataset.py | 186 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/jsonl_to_webdataset.py | 401 | except Exception as e: | CODE |
| MEDIUM | omnivoice/scripts/jsonl_to_webdataset.py | 421 | print(f"Error details: {error_log_path}") | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 334 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 345 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 380 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 446 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 507 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 701 | except Exception as exc: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 779 | except Exception: | CODE |
| LOW | omnivoice/eval/mos/utmos.py | 127 | except Exception as e: | CODE |
| LOW | omnivoice/eval/mos/utmos.py | 151 | except Exception as e: | CODE |
| LOW | omnivoice/eval/mos/utmos.py | 191 | except Exception as e: | CODE |
| LOW | omnivoice/eval/speaker_similarity/sim.py | 178 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/sensevoice.py | 138 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/sensevoice.py | 157 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/sensevoice.py | 223 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/sensevoice.py | 309 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 191 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 211 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 226 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 324 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 365 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 482 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 514 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/fleurs.py | 220 | except Exception as e: | STRING |
| LOW | omnivoice/eval/wer/fleurs.py | 236 | except Exception: | STRING |
| LOW | omnivoice/eval/wer/fleurs.py | 250 | except Exception as e: | STRING |
| LOW | omnivoice/eval/wer/fleurs.py | 318 | except Exception: | STRING |
| LOW | omnivoice/eval/wer/fleurs.py | 423 | except Exception as e: | STRING |
| LOW | omnivoice/eval/wer/hubert.py | 102 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/hubert.py | 115 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/hubert.py | 192 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/seedtts.py | 194 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/seedtts.py | 210 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/seedtts.py | 273 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/seedtts.py | 353 | except Exception as e: | CODE |
| LOW | omnivoice/data/batching.py | 144 | except Exception as e: | CODE |
| LOW | omnivoice/data/dataset.py | 447 | except Exception as e: | CODE |
| LOW | tests/test_model_load_extends_generate_budget.py | 310 | except Exception as e: # pragma: no cover - surfaced via result | CODE |
| MEDIUM | tests/conftest.py | 357 | def _llm_prefs_snapshot() -> dict: | CODE |
| LOW | tests/conftest.py | 307 | except Exception: | CODE |
| LOW | tests/conftest.py | 325 | except Exception: | CODE |
| LOW | tests/conftest.py | 346 | except Exception: | CODE |
| LOW | tests/conftest.py | 361 | except Exception: | CODE |
| LOW | tests/conftest.py | 376 | except Exception: | CODE |
| LOW | tests/conftest.py | 414 | except Exception: | CODE |
| 1052 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/utils/text.py | 27 | CODE | |
| LOW | omnivoice/cli/dub.py | 23 | CODE | |
| LOW | omnivoice/scripts/denoise_audio.py | 50 | CODE | |
| LOW | tests/test_dub_batch_width_and_budget.py | 14 | CODE | |
| LOW | tests/test_why_no_gpu_1274.py | 21 | CODE | |
| LOW | tests/test_analytics_optin.py | 13 | CODE | |
| LOW | tests/test_dub_voice_match.py | 18 | CODE | |
| LOW | tests/test_worker_capacity.py | 8 | CODE | |
| LOW | tests/test_worker_capacity.py | 269 | CODE | |
| LOW | tests/test_pronunciation.py | 6 | CODE | |
| LOW | tests/test_pronunciation.py | 10 | CODE | |
| LOW | tests/test_nemo_parakeet_install_hint.py | 16 | CODE | |
| LOW | tests/test_funasr_global_speaker_chunking.py | 3 | CODE | |
| LOW | tests/test_startup_progress_early_bind.py | 19 | CODE | |
| LOW | tests/test_translator.py | 9 | CODE | |
| LOW | tests/test_translator.py | 10 | CODE | |
| LOW | tests/test_model_load_timeout.py | 8 | CODE | |
| LOW | tests/test_model_load_extends_generate_budget.py | 19 | CODE | |
| LOW | tests/test_longform_e2e.py | 12 | CODE | |
| LOW | tests/test_longform_e2e.py | 16 | CODE | |
| LOW | tests/test_model_manager_preload.py | 1 | CODE | |
| LOW | tests/test_resolve_heartbeat_1414.py | 18 | CODE | |
| LOW | tests/test_pockettts_sidecar.py | 20 | CODE | |
| LOW | tests/test_dub_phrase_embedding_recovery.py | 3 | CODE | |
| LOW | tests/test_worker_inputs.py | 25 | CODE | |
| LOW | tests/test_worker_routing.py | 7 | CODE | |
| LOW | tests/test_dub_dialect.py | 7 | CODE | |
| LOW | tests/test_dub_dialect.py | 9 | CODE | |
| LOW | …ts/test_chunk_progress_extends_generate_budget_1391.py | 20 | CODE | |
| LOW | tests/test_profile_design_save_decouple.py | 16 | CODE | |
| LOW | tests/test_llm_skills.py | 15 | CODE | |
| LOW | tests/test_windows_paging_file.py | 19 | CODE | |
| LOW | tests/test_prompt_disk_cache.py | 15 | CODE | |
| LOW | tests/test_prompt_disk_cache.py | 194 | CODE | |
| LOW | tests/test_event_bus_thread_emit.py | 15 | CODE | |
| LOW | tests/test_confucius4_sidecar.py | 14 | CODE | |
| LOW | tests/test_segmentation.py | 5 | CODE | |
| LOW | tests/test_segmentation.py | 5 | CODE | |
| LOW | tests/test_segmentation.py | 5 | CODE | |
| LOW | tests/test_segmentation.py | 5 | CODE | |
| LOW | tests/test_segmentation.py | 5 | CODE | |
| LOW | tests/test_broken_dependency_diagnosis_1415.py | 24 | CODE | |
| LOW | tests/test_watermark_no_torch_compile_1615.py | 24 | CODE | |
| LOW | tests/test_unified_memory_offload.py | 17 | CODE | |
| LOW | tests/test_mlx_supported.py | 6 | CODE | |
| LOW | tests/test_ci_windows_ffmpeg_retry.py | 13 | CODE | |
| LOW | tests/test_longform_synth_params.py | 22 | CODE | |
| LOW | tests/test_auth_principal.py | 3 | CODE | |
| LOW | tests/test_dub_transcribe.py | 8 | CODE | |
| LOW | tests/test_dub_transcribe.py | 10 | CODE | |
| LOW | tests/test_dub_transcribe.py | 12 | CODE | |
| LOW | tests/test_dub_transcribe.py | 172 | CODE | |
| LOW | tests/test_torch_constraints_are_applied.py | 26 | CODE | |
| LOW | tests/test_worker_client_liveness.py | 18 | CODE | |
| LOW | tests/test_duration_planner.py | 16 | CODE | |
| LOW | tests/test_dub_no_tts_load_for_asr.py | 19 | CODE | |
| LOW | tests/test_moss_entry_point_1287.py | 14 | CODE | |
| LOW | tests/test_worker_scheduler.py | 8 | CODE | |
| LOW | tests/test_worker_security_boundaries.py | 3 | CODE | |
| LOW | tests/test_network_beats_install_diagnosis.py | 35 | CODE | |
| 613 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | alembic.ini | 1 | # Alembic configuration for VoiceStudio. | COMMENT |
| LOW | pyproject.toml | 41 | "accelerate", | COMMENT |
| LOW | pyproject.toml | 61 | "pyannote-audio>=3.3.2,<4.0", | COMMENT |
| LOW | pyproject.toml | 81 | # …). Gives mac-ARM users a broad engine picker in Settings. Also gated | COMMENT |
| LOW | pyproject.toml | 101 | # the exact wheel because the project is in developer preview and the | COMMENT |
| LOW | pyproject.toml | 121 | # at-rest HF token in the SQLite settings store. Pulled in directly so | COMMENT |
| LOW | pyproject.toml | 141 | "hf-xet>=1.1", | COMMENT |
| LOW | pyproject.toml | 161 | # — without core, `import sherpa_onnx` fails at load time (missing | COMMENT |
| LOW | pyproject.toml | 181 | # `ssl.SSLContext` to verify against the OS trust store instead. Pure- | COMMENT |
| LOW | pyproject.toml | 221 | "gradio_client", | COMMENT |
| LOW | .gitleaks.toml | 1 | # Gitleaks config — extends the default ruleset. | COMMENT |
| LOW | .coderabbit.yaml | 1 | # CodeRabbit configuration — https://docs.coderabbit.ai/guides/configure-coderabbit | COMMENT |
| LOW | frontend/playwright.prod.config.ts | 1 | import { defineConfig, devices } from '@playwright/test'; | COMMENT |
| LOW | frontend/src-tauri/Cargo.toml | 41 | # Cross-platform keyboard simulation for auto-paste after dictation | COMMENT |
| LOW | frontend/src-tauri/tests/backend_lifecycle.rs | 1 | //! Backend-lifecycle fault-injection harness. | COMMENT |
| LOW | frontend/src-tauri/tests/backend_lifecycle.rs | 61 | COMMENT | |
| LOW | frontend/src-tauri/appimage/AppRun.test.sh | 121 | # (This case used to pair marker 2.46 with host 2.48 and expect the workaround. | COMMENT |
| LOW | frontend/src-tauri/appimage/AppRun.test.sh | 321 | run_workaround_with_system "broken host re-arms it" "2.44.3" "2.46.1" "1" | COMMENT |
| LOW | frontend/src-tauri/appimage/AppRun.test.sh | 421 | run_gst_case "no host GStreamer is harmless" "" "none" "no-gst+libdir-intact+private-registry" | COMMENT |
| LOW | frontend/src-tauri/src/reset.rs | 1 | //! Scoped reset — Settings → Storage → "Reset & remove". | COMMENT |
| LOW | frontend/src-tauri/src/reset.rs | 21 | //! pointing at paths that no longer exist. | COMMENT |
| LOW | frontend/src-tauri/src/reset.rs | 201 | /// empty scope rather than silently omitting it. | COMMENT |
| LOW | frontend/src-tauri/src/tools.rs | 21 | COMMENT | |
| LOW | frontend/src-tauri/src/tools.rs | 641 | // (FFMPEG_BTBN_VERSION env var). Reproducible installer builds without | COMMENT |
| LOW | frontend/src-tauri/src/crash.rs | 1 | //! Backend crash forensics (#941). | COMMENT |
| LOW | frontend/src-tauri/src/crash.rs | 21 | //! Markers are **version-gated**: each records the app version that wrote it, | COMMENT |
| LOW | frontend/src-tauri/src/crash.rs | 101 | /// this marker. `#[serde(default)]` so a legacy marker written before | COMMENT |
| LOW | frontend/src-tauri/src/crash.rs | 241 | /// Newest crash marker + its acknowledgment state, as returned to the | COMMENT |
| LOW | frontend/src-tauri/src/config.rs | 21 | /// - restricted: ghproxy.net for GitHub (catch-all for MENA, Africa, etc.) | COMMENT |
| LOW | frontend/src-tauri/src/config.rs | 41 | /// `updater_channel.rs` via `UpdaterExt::endpoints`, so switching takes | COMMENT |
| LOW | frontend/src-tauri/src/config.rs | 61 | /// None → backend platform default (env var not set at all). | COMMENT |
| LOW | frontend/src-tauri/src/config.rs | 81 | /// after sync). Env var OMNIVOICE_TORCH_VARIANT still wins for power users. | COMMENT |
| LOW | frontend/src-tauri/src/backend.rs | 101 | } | COMMENT |
| LOW | frontend/src-tauri/src/backend.rs | 201 | COMMENT | |
| LOW | frontend/src-tauri/src/backend.rs | 281 | let err_path = backend_log_path().with_file_name("backend_err.log"); | COMMENT |
| LOW | frontend/src-tauri/src/backend.rs | 441 | /// | COMMENT |
| LOW | frontend/src-tauri/src/backend.rs | 561 | ("PYTHONUNBUFFERED".into(), "1".into()), | COMMENT |
| LOW | frontend/src-tauri/src/updater_channel.rs | 1 | //! Channel-aware auto-update (Stable / Preview). | COMMENT |
| LOW | frontend/src-tauri/src/updater_channel.rs | 21 | const STABLE_MANIFEST: &str = | COMMENT |
| LOW | frontend/src-tauri/src/updater_channel.rs | 81 | /// `a` (the earlier-checked manifest, i.e. preview) wins ties. | COMMENT |
| LOW | frontend/src-tauri/src/updater_channel.rs | 261 | /// Documents the #326 root cause: under plain semver (the plugin's | COMMENT |
| LOW | frontend/src-tauri/src/lib.rs | 61 | /// root unreaped until its inherited process group is drained; Windows | COMMENT |
| LOW | frontend/src-tauri/src/lib.rs | 81 | } | COMMENT |
| LOW | frontend/src-tauri/src/lib.rs | 221 | // target app) — the request dies and getUserMedia() rejects with | COMMENT |
| LOW | frontend/src-tauri/src/lib.rs | 361 | } | COMMENT |
| LOW | frontend/src-tauri/src/lib.rs | 381 | // that would fight the style bit on its own): | COMMENT |
| LOW | frontend/src-tauri/src/lib.rs | 541 | // Always the studio window, never the widget. In pill mode this | COMMENT |
| LOW | frontend/src-tauri/src/lib.rs | 681 | .inner_size(300.0, 64.0) | COMMENT |
| LOW | frontend/src-tauri/src/bootstrap.rs | 21 | #[derive(Clone, Serialize, Debug)] | COMMENT |
| LOW | frontend/src-tauri/src/bootstrap.rs | 41 | Ready, | COMMENT |
| LOW | frontend/src-tauri/src/bootstrap.rs | 681 | venv_dir.display() | COMMENT |
| LOW | frontend/src-tauri/src/bootstrap.rs | 761 | // | COMMENT |
| LOW | frontend/src-tauri/src/bootstrap.rs | 801 | /// launch. Incomplete process trees keep the deliberate-kill fence raised so | COMMENT |
| LOW | frontend/src-tauri/src/bootstrap.rs | 1541 | } | COMMENT |
| LOW | frontend/src-tauri/src/bootstrap.rs | 1621 | /// every app update when `uv.lock` changed. `--inexact` is the fix for #1029: | COMMENT |
| LOW | frontend/src-tauri/src/bootstrap.rs | 1661 | .unwrap_or_else(|_| configured_variant.to_string()); | COMMENT |
| LOW | frontend/src-tauri/src/bootstrap.rs | 1741 | } | COMMENT |
| LOW | frontend/src-tauri/src/bootstrap.rs | 1761 | COMMENT | |
| LOW | frontend/src-tauri/src/bootstrap.rs | 1801 | } | COMMENT |
| LOW | frontend/src-tauri/src/bootstrap.rs | 1881 | Install, | COMMENT |
| 353 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | omnivoice/cli/infer.py | 0 | auto-detect the best available device: cuda > mps > cpu. | STRING |
| HIGH | omnivoice/cli/infer_batch.py | 0 | auto-detect the best available device: cuda > mps > cpu. | STRING |
| HIGH | omnivoice/cli/demo.py | 0 | auto-detect the best available device: cuda > mps > cpu. | STRING |
| HIGH | omnivoice/scripts/extract_audio_tokens.py | 0 | convert tensors and numpy scalars to serialisable python objects. | STRING |
| HIGH | omnivoice/scripts/denoise_audio.py | 0 | convert tensors and numpy scalars to serialisable python objects. | STRING |
| HIGH | omnivoice/scripts/extract_audio_tokens_add_noise.py | 0 | convert tensors and numpy scalars to serialisable python objects. | STRING |
| HIGH | omnivoice/eval/wer/minimax.py | 0 | cleans and normalizes text for wer calculation. args: text (str): the input text to be processed. returns: str: the clea | STRING |
| HIGH | omnivoice/eval/wer/fleurs.py | 0 | cleans and normalizes text for wer calculation. args: text (str): the input text to be processed. returns: str: the clea | STRING |
| HIGH | omnivoice/eval/wer/seedtts.py | 0 | cleans and normalizes text for wer calculation. args: text (str): the input text to be processed. returns: str: the clea | STRING |
| HIGH | omnivoice/eval/wer/hubert.py | 0 | cleans and normalizes text for wer calculation. args: text (str): the input text to be processed. returns: str: the clea | STRING |
| HIGH | omnivoice/eval/wer/minimax.py | 0 | worker function to process a chunk of data. uses the global worker_pipe initialized by process_init. | STRING |
| HIGH | omnivoice/eval/wer/fleurs.py | 0 | worker function to process a chunk of data. uses the global worker_pipe initialized by process_init. | STRING |
| HIGH | omnivoice/eval/wer/seedtts.py | 0 | worker function to process a chunk of data. uses the global worker_pipe initialized by process_init. | STRING |
| HIGH | tests/test_broken_dependency_diagnosis_1415.py | 0 | resolved at run time, not import time: a module-level import of an app module keeps mutable state in sys.modules across | STRING |
| HIGH | tests/test_engine_venv_probe_1414.py | 0 | resolved at run time, not import time: a module-level import of an app module keeps mutable state in sys.modules across | STRING |
| HIGH | tests/test_wedge_vs_slow_hardware_1416.py | 0 | resolved at run time, not import time: a module-level import of an app module keeps mutable state in sys.modules across | STRING |
| HIGH | tests/test_text_normalization_routes.py | 0 | resolve services.tts_backend at run time (same rationale as test_generate_engine.py — collection-time bindings can go st | STRING |
| HIGH | tests/test_text_normalization.py | 0 | resolve services.tts_backend at run time (same rationale as test_generate_engine.py — collection-time bindings can go st | STRING |
| HIGH | tests/test_perf_operation_budgets.py | 0 | resolve services.tts_backend at run time (same rationale as test_generate_engine.py — collection-time bindings can go st | STRING |
| HIGH | tests/test_generation_timeout_is_named.py | 0 | resolve at call time — sibling suites reload/purge ``services.*``. | STRING |
| HIGH | tests/test_dropped_chunk_is_not_silent.py | 0 | resolve at call time — sibling suites reload/purge ``services.*``. | STRING |
| HIGH | tests/test_missing_clone_ref_is_not_silent.py | 0 | resolve at call time — sibling suites reload/purge ``services.*``. | STRING |
| HIGH | tests/test_lmstudio_model_discovery.py | 0 | resolve at call time — sibling suites reload/purge ``services.*``. | STRING |
| HIGH | tests/test_migration_0007_instruct_rebuild.py | 0 | create table voice_profiles ( id text primary key, name text not null, ref_audio_path text, ref_text text default '', in | STRING |
| HIGH | tests/test_profile_consent.py | 0 | create table voice_profiles ( id text primary key, name text not null, ref_audio_path text, ref_text text default '', in | STRING |
| HIGH | tests/test_migration_0006_instruct.py | 0 | create table voice_profiles ( id text primary key, name text not null, ref_audio_path text, ref_text text default '', in | STRING |
| HIGH | tests/test_dub_multispeaker_voice_486.py | 0 | adapts the list-returning _fakemodel above to the ttsbackend.generate() contract (a single tensor, not a list) that reso | STRING |
| HIGH | tests/test_smart_fit_generate.py | 0 | adapts the list-returning _fakemodel above to the ttsbackend.generate() contract (a single tensor, not a list) that reso | STRING |
| HIGH | tests/test_redub_incremental.py | 0 | adapts the list-returning _fakemodel above to the ttsbackend.generate() contract (a single tensor, not a list) that reso | STRING |
| HIGH | tests/test_worker_server_integrity.py | 0 | throwaway db, patched where the stores actually read it. | STRING |
| HIGH | tests/test_worker_transport.py | 0 | throwaway db, patched where the stores actually read it. | STRING |
| HIGH | tests/test_worker_upload_server.py | 0 | throwaway db, patched where the stores actually read it. | STRING |
| HIGH | backend/engines/moss_tts_v15/bootstrap.py | 0 | uv cache co-location for installs on a non-system volume (d:-drive / portable installs): without it uv stages every whee | STRING |
| HIGH | backend/engines/dots_tts/bootstrap.py | 0 | uv cache co-location for installs on a non-system volume (d:-drive / portable installs): without it uv stages every whee | STRING |
| HIGH | backend/engines/confucius4/bootstrap.py | 0 | uv cache co-location for installs on a non-system volume (d:-drive / portable installs): without it uv stages every whee | STRING |
| HIGH | backend/engines/indextts/bootstrap.py | 0 | uv cache co-location for installs on a non-system volume (d:-drive / portable installs): without it uv stages every whee | STRING |
| HIGH | backend/engines/moss_tts_v15/bootstrap.py | 0 | clear the resolved-python cache. tests call this between scenarios. | STRING |
| HIGH | backend/engines/dots_tts/bootstrap.py | 0 | clear the resolved-python cache. tests call this between scenarios. | STRING |
| HIGH | backend/engines/confucius4/bootstrap.py | 0 | clear the resolved-python cache. tests call this between scenarios. | STRING |
| HIGH | backend/engines/indextts/bootstrap.py | 0 | clear the resolved-python cache. tests call this between scenarios. | STRING |
| HIGH | backend/engines/moss_tts_v15/bootstrap.py | 0 | spawn the candidate python and verify the engine imports. tri-state — "yes" / "no" / "unproven". see ``engines._venv_pro | STRING |
| HIGH | backend/engines/dots_tts/bootstrap.py | 0 | spawn the candidate python and verify the engine imports. tri-state — "yes" / "no" / "unproven". see ``engines._venv_pro | STRING |
| HIGH | backend/engines/confucius4/bootstrap.py | 0 | spawn the candidate python and verify the engine imports. tri-state — "yes" / "no" / "unproven". see ``engines._venv_pro | STRING |
| HIGH | backend/engines/moss_tts_v15/main.py | 0 | dispatch one synthesize request. emits the audio frame or raises. | STRING |
| HIGH | backend/engines/pockettts/main.py | 0 | dispatch one synthesize request. emits the audio frame or raises. | STRING |
| HIGH | backend/engines/dots_tts/main.py | 0 | dispatch one synthesize request. emits the audio frame or raises. | STRING |
| HIGH | backend/engines/supertonic3/sidecar.py | 0 | dispatch one synthesize request. emits the audio frame or raises. | STRING |
| HIGH | backend/engines/omnivoice_subprocess/main.py | 0 | dispatch one synthesize request. emits the audio frame or raises. | STRING |
| HIGH | backend/engines/indextts/main.py | 0 | dispatch one synthesize request. emits the audio frame or raises. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/training/checkpoint.py | 85 | CODE | |
| LOW | omnivoice/training/trainer.py | 243 | CODE | |
| LOW | omnivoice/utils/text.py | 120 | CODE | |
| LOW | omnivoice/models/omnivoice.py | 363 | CODE | |
| LOW | omnivoice/cli/dub.py | 85 | CODE | |
| LOW | omnivoice/cli/infer_batch.py | 405 | CODE | |
| LOW | omnivoice/cli/demo.py | 154 | CODE | |
| LOW | omnivoice/scripts/extract_audio_tokens.py | 322 | CODE | |
| LOW | omnivoice/scripts/denoise_audio.py | 740 | CODE | |
| LOW | omnivoice/scripts/denoise_audio.py | 426 | CODE | |
| LOW | omnivoice/scripts/jsonl_to_webdataset.py | 190 | CODE | |
| LOW | omnivoice/scripts/jsonl_to_webdataset.py | 267 | CODE | |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 512 | CODE | |
| LOW | omnivoice/eval/mos/utmos.py | 159 | CODE | |
| LOW | omnivoice/eval/speaker_similarity/sim.py | 183 | CODE | |
| LOW | omnivoice/eval/wer/sensevoice.py | 230 | CODE | |
| LOW | omnivoice/eval/wer/minimax.py | 372 | CODE | |
| LOW | omnivoice/eval/wer/fleurs.py | 327 | CODE | |
| LOW | omnivoice/eval/wer/seedtts.py | 215 | CODE | |
| LOW | omnivoice/eval/wer/seedtts.py | 282 | CODE | |
| LOW | omnivoice/data/dataset.py | 66 | CODE | |
| LOW | omnivoice/data/dataset.py | 222 | CODE | |
| LOW | tests/test_no_unspeakable_chunks_1330.py | 146 | CODE | |
| LOW | tests/test_startup_progress_early_bind.py | 43 | CODE | |
| LOW | tests/conftest.py | 288 | CODE | |
| LOW | tests/conftest.py | 330 | CODE | |
| LOW | tests/conftest.py | 515 | CODE | |
| LOW | tests/test_no_literal_borders.py | 107 | CODE | |
| LOW | tests/test_uv_cross_drive.py | 221 | CODE | |
| LOW | tests/test_synthetic_audio_watermark_1169.py | 257 | CODE | |
| LOW | tests/test_vendored_omnivoice_imports_1417.py | 47 | CODE | |
| LOW | tests/test_vendored_omnivoice_imports_1417.py | 81 | CODE | |
| LOW | tests/test_desktop_prod_scripts.py | 36 | CODE | |
| LOW | tests/test_no_hardcoded_cjk.py | 110 | CODE | |
| LOW | tests/test_changelog_style.py | 66 | CODE | |
| LOW | tests/test_sherpa_ws_streaming.py | 126 | CODE | |
| LOW | tests/test_api.py | 322 | CODE | |
| LOW | tests/test_worker_protocol_contract.py | 44 | CODE | |
| LOW | tests/backend/test_dub_pipeline_wav.py | 55 | CODE | |
| LOW | tests/probe/spec.py | 182 | CODE | |
| LOW | backend/main.py | 205 | CODE | |
| LOW | backend/core/auth.py | 327 | CODE | |
| LOW | backend/core/db.py | 330 | CODE | |
| LOW | backend/core/tasks.py | 97 | CODE | |
| LOW | backend/core/archetypes.py | 378 | CODE | |
| LOW | backend/core/device_caps.py | 199 | CODE | |
| LOW | backend/core/device_caps.py | 332 | CODE | |
| LOW | backend/core/device_caps.py | 456 | CODE | |
| LOW | backend/core/audio_validation.py | 34 | CODE | |
| LOW | backend/core/failure.py | 693 | CODE | |
| LOW | backend/core/contained_subprocess.py | 461 | CODE | |
| LOW | backend/core/contained_subprocess.py | 182 | CODE | |
| LOW | backend/core/path_authorization.py | 33 | CODE | |
| LOW | backend/core/logging_filter.py | 32 | CODE | |
| LOW | backend/core/error_journal.py | 159 | CODE | |
| LOW | backend/core/error_journal.py | 183 | CODE | |
| LOW | backend/core/job_queue.py | 174 | CODE | |
| LOW | backend/tests/test_contained_subprocess.py | 63 | CODE | |
| LOW | backend/tests/test_asr_request_path_degrades.py | 217 | CODE | |
| LOW | backend/engines/_echo/main.py | 79 | CODE | |
| 170 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_ci_windows_ffmpeg_retry.py | 78 | f"n=$(cat {str(counter)!r} 2>/dev/null || echo 0); n=$((n+1));" | CODE |
| HIGH | tests/test_dub_remote.py | 30 | '"watermark":false}],"ref_audio":[null,null]}' | CODE |
| HIGH | tests/test_desktop_runtime_preflight.py | 21 | calls.push([command, args]); | CODE |
| HIGH⚡ | tests/test_desktop_dev_dist_placeholder.py | 19 | mkdir: (path, options) => calls.push(["mkdir", path, options]), | CODE |
| HIGH⚡ | tests/test_desktop_dev_dist_placeholder.py | 21 | calls.push(["spawn", command, args, options]); | CODE |
| HIGH | tests/test_sentence_chunker.py | 29 | emitted.extend(chunker.push(token)) | CODE |
| HIGH⚡ | tests/test_sentence_chunker.py | 57 | out = chunker.push("First thing here today. Second thing follows it. Third!") | CODE |
| HIGH⚡ | tests/test_sentence_chunker.py | 64 | out = chunker.push("Just the one sentence without much else going on.") | CODE |
| HIGH | tests/test_perf_operation_budgets.py | 130 | expected = chunker.push(real_norm(text, "en")) | CODE |
| HIGH⚡ | tests/test_dub_translation_quality.py | 80 | "TERM: Chef Okonkwo || Chef Okonkwo\n" | CODE |
| HIGH⚡ | tests/test_dub_translation_quality.py | 81 | "TERM: flat-top grill || plancha\n" | CODE |
| HIGH⚡ | tests/test_low_vram_advisory.py | 119 | # Engines without a floor report null, not 0.0 — "unknown", not "none". | COMMENT |
| HIGH | tests/probe/web.py | 229 | raise RuntimeError("playwright not installed: `uv add playwright && playwright install chromium`") | CODE |
| HIGH⚡ | tests/probe/test_probe_web.py | 171 | pytest.importorskip("playwright", reason="L2 live browser: `uv add playwright && playwright install chromium`") | CODE |
| HIGH | backend/engines/moss_tts_v15/__init__.py | 74 | uv venv && uv pip install -e ".[torch-runtime]" | STRING |
| HIGH | backend/engines/dots_tts/__init__.py | 56 | uv venv && uv pip install -e . -c constraints/recommended.txt | STRING |
| HIGH | backend/engines/confucius4/__init__.py | 49 | uv venv --python 3.10 && uv pip install -r requirements.txt | STRING |
| HIGH | backend/engines/indextts/__init__.py | 113 | cd index-tts && uv pip install -e . # NOT uv sync --all-extras | STRING |
| HIGH⚡ | backend/api/routers/system.py | 1120 | returns ``{"quarantined": false, "error_class": null}``. The React | STRING |
| HIGH | backend/api/routers/tts_stream.py | 266 | sentences = _chunker.push(text) | CODE |
| HIGH | backend/api/routers/glossary.py | 180 | SOURCE || TARGET || one-line note (or empty) | CODE |
| HIGH | backend/services/translation_quality.py | 47 | TERM: SOURCE || TARGET | CODE |
| HIGH | backend/services/translation_quality.py | 48 | TERM: SOURCE || TARGET | CODE |
| HIGH | backend/services/tts_backend.py | 2287 | "moss-tts-nano": "git clone OpenMOSS/MOSS-TTS-Nano && pip install -e . (not on PyPI)", | CODE |
| HIGH | backend/services/tts_backend.py | 2288 | "indextts2": "git clone --branch indextts-2.5 https://github.com/index-tts/index-tts.git && cd index-tts && uv v | CODE |
| HIGH | backend/services/tts_backend.py | 1753 | cd CosyVoice && pip install -r requirements.txt | STRING |
| HIGH | backend/services/sentence_chunker.py | 310 | for sentence in chunker.push(token): | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/__init__.py | 22 | __all__ = ["OmniVoice", "OmniVoiceConfig", "OmniVoiceGenerationConfig"] | CODE |
| LOW | omnivoice/training/checkpoint.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | omnivoice/training/builder.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | omnivoice/training/trainer.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | omnivoice/utils/audio.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | omnivoice/models/omnivoice.py | 77 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/test_worker_client_liveness.py | 116 | async def _settle(client: WorkerClient, timeout: float = 10.0) -> None: | CODE |
| LOW | tests/test_gallery_previews.py | 158 | def set_tarball(self, data: bytes) -> None: | CODE |
| LOW⚡ | tests/test_worker_upload_client.py | 326 | async def _settle(client: WorkerClient, timeout: float = 20.0) -> None: | CODE |
| LOW | tests/probe/__init__.py | 26 | __all__ = ["JudgeResult", "Spec", "load_spec", "run_judges", "JUDGE_REGISTRY"] | CODE |
| LOW⚡ | backend/core/device_caps.py | 672 | __all__ = [ | CODE |
| LOW | backend/core/onboarding.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/core/audio_validation.py | 106 | __all__ = ["is_playable_wav", "resolve_regular_file"] | CODE |
| LOW | backend/core/http_headers.py | 30 | __all__ = ["ascii_filename", "content_disposition"] | CODE |
| LOW | backend/core/user_env.py | 63 | def set_user_env(key: str, value: str, path: Optional[str] = None) -> None: | CODE |
| LOW | backend/core/analytics.py | 110 | def set_opted_in(enabled: bool) -> None: | CODE |
| LOW | backend/core/job_store.py | 65 | def _update_status(job_id: str, status: str, *, finished: bool = False, error: Optional[str] = None) -> None: | CODE |
| LOW | backend/core/cudnn8.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/utils/hf_progress.py | 78 | def set_byte_sink(fn: Optional[Callable]) -> None: | CODE |
| LOW | backend/utils/download_aggregator.py | 67 | def update_byte_bar(self, key: object, downloaded: int, total: Optional[int]) -> None: | CODE |
| LOW | backend/utils/download_aggregator.py | 79 | def update_files(self, done: int, total: Optional[int]) -> None: | CODE |
| LOW | backend/engines/omnivoice_gguf/backend.py | 891 | __all__ = [ | CODE |
| LOW | backend/engines/omnivoice_gguf/__init__.py | 22 | __all__ = ["OmniVoiceGGUFBackend"] | CODE |
| LOW | backend/engines/omnivoice_gguf/hardware_probe.py | 127 | __all__ = ["ComputeClass", "HardwareCapabilities", "detect_capabilities"] | CODE |
| LOW | backend/engines/moss_tts_v15/bootstrap.py | 293 | __all__ = [ | CODE |
| LOW | backend/engines/moss_tts_v15/__init__.py | 194 | __all__ = ["MossTTSV15Backend", "TOKENS_PER_SECOND"] | CODE |
| LOW | backend/engines/pockettts/__init__.py | 181 | __all__ = ["PocketTTSBackend"] | CODE |
| LOW | backend/engines/dots_tts/bootstrap.py | 254 | __all__ = [ | CODE |
| LOW | backend/engines/dots_tts/__init__.py | 187 | __all__ = ["DotsTTSBackend"] | CODE |
| LOW | backend/engines/supertonic3/backend.py | 215 | __all__ = ["Supertonic3Backend", "SUPERTONIC3_SIDECAR_SCRIPT"] | CODE |
| LOW | backend/engines/supertonic3/__init__.py | 35 | __all__ = ["Supertonic3Backend"] | CODE |
| LOW | backend/engines/confucius4/bootstrap.py | 249 | __all__ = [ | CODE |
| LOW | backend/engines/confucius4/__init__.py | 134 | __all__ = ["Confucius4Backend"] | CODE |
| LOW | backend/engines/omnivoice_subprocess/__init__.py | 132 | __all__ = ["OmniVoiceMPSSubprocessBackend", "OmniVoiceSubprocessBackend"] | CODE |
| LOW | backend/engines/indextts/bootstrap.py | 303 | __all__ = [ | CODE |
| LOW | backend/engines/indextts/__init__.py | 297 | __all__ = ["IndexTTS2Backend"] | CODE |
| LOW | backend/api/routers/auth.py | 110 | def _set_session_cookie(response: Response, request: Request, token: str, expires_at: float) -> None: | CODE |
| LOW | backend/api/routers/workers.py | 202 | async def _set_worker_mode(worker_agent, enabled: bool) -> None: | CODE |
| LOW | backend/api/routers/setup/models.py | 489 | def _set_cache(key: str, value: object) -> None: | CODE |
| LOW⚡ | backend/worker/service.py | 94 | def set_remote_workers_enabled(enabled: bool) -> None: | CODE |
| LOW⚡ | backend/worker/service.py | 484 | __all__ = [ | CODE |
| LOW | backend/worker/deadlines.py | 218 | __all__ = ["Deadlines", "Operation", "default_grace_seconds", "for_task"] | CODE |
| LOW | backend/worker/capacity.py | 338 | __all__ = [ | CODE |
| LOW | backend/worker/task_store.py | 889 | __all__ = [ | STRING |
| LOW | backend/worker/async_utils.py | 57 | __all__ = [ | CODE |
| LOW | backend/worker/registry.py | 497 | def set_enabled(worker_id: str, enabled: bool) -> None: | CODE |
| LOW | backend/worker/registry.py | 504 | def set_priority(worker_id: str, priority: int) -> None: | CODE |
| LOW | backend/worker/registry.py | 594 | __all__ = [ | CODE |
| LOW | backend/worker/breaker.py | 294 | __all__ = [ | CODE |
| LOW | backend/worker/clock.py | 22 | __all__ = ["resolve"] | CODE |
| LOW | backend/worker/tls.py | 548 | __all__ = [ | CODE |
| LOW | backend/worker/capabilities.py | 299 | __all__ = [ | CODE |
| LOW | backend/worker/lifecycle.py | 360 | def _set_state(self, new: TaskState, *, now: Optional[float] = None) -> None: | CODE |
| LOW | backend/worker/lifecycle.py | 555 | def _settle_after_attempt(self, error: WorkerError, *, now: float) -> None: | CODE |
| LOW | backend/worker/lifecycle.py | 672 | __all__ = [ | CODE |
| LOW | backend/worker/routing.py | 334 | __all__ = [ | CODE |
| LOW⚡ | backend/worker/agent.py | 1289 | __all__ = [ | CODE |
| LOW | backend/worker/agent.py | 101 | def set_worker_mode_enabled(enabled: bool) -> None: | CODE |
| LOW | backend/worker/scheduler.py | 1311 | __all__ = ["Assignment", "NoEligibleWorker", "QueueFull", "Scheduler", "Strategy"] | CODE |
| LOW | backend/worker/errors.py | 201 | __all__ = [ | CODE |
| 30 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 99 | # zero-shot clone: when the caller just needs fast English narration with | COMMENT |
| MEDIUM⚡ | tests/test_speaker_clone_purity.py | 195 | # ref_text) breaks zero-shot TTS prompt priming badly enough that the | COMMENT |
| MEDIUM⚡ | tests/test_autofit_838.py | 84 | assert res["text"] == text # hallucination never adopted | CODE |
| MEDIUM | tests/probe/README.md | 127 | uv add anthropic # L2 agentic self-heal (LLMHealer); set ANTHROPIC_API_KEY | CODE |
| MEDIUM⚡ | tests/probe/test_probe_web.py | 111 | # ── LLM-backed agentic healer (offline, injected completion) ───────────────────── | COMMENT |
| MEDIUM | backend/engines/pockettts/__init__.py | 64 | supports_cloning = True # zero-shot clone from a reference clip | CODE |
| MEDIUM | backend/engines/omnivoice_subprocess/__init__.py | 98 | # OmniVoice advertises 600+ zero-shot; "multi" is the honest tag. | COMMENT |
| MEDIUM | backend/api/routers/dub_generate.py | 262 | # Below ~3 s zero-shot prompt-priming gets unstable, so prefer clips at or | COMMENT |
| MEDIUM | backend/api/routers/capture.py | 151 | # Wave 1.1: strip Whisper hallucination loops from the final text. | COMMENT |
| MEDIUM | backend/api/routers/capture_ws.py | 256 | # level; WebSocket dependency injection differs across FastAPI versions, so we | COMMENT |
| MEDIUM | backend/api/routers/capture_ws.py | 1184 | # Wave 1.1: strip Whisper hallucination loops from the final | COMMENT |
| MEDIUM | backend/api/routers/profiles.py | 429 | # check — agentic features and gallery sharing gate on the flag; plain local | COMMENT |
| MEDIUM | backend/api/routers/glossary.py | 210 | # Concat all text — capped so we don't blow the context window on long projects. | COMMENT |
| MEDIUM | backend/services/tts_backend.py | 704 | # OmniVoice advertises 600+ zero-shot — `"multi"` is the honest tag. | COMMENT |
| MEDIUM | backend/services/tts_backend.py | 2188 | # cross-lingual zero-shot cloning, Apache-2.0. Opt-in + subprocess-isolated | COMMENT |
| MEDIUM | backend/services/refinement.py | 157 | # ("wooooooow", "hmmmmm") that aren't hallucinations. re.DOTALL so a | COMMENT |
| MEDIUM | backend/services/speaker_clone.py | 42 | # is the empirical floor below which our zero-shot clone gets unstable. | COMMENT |
| MEDIUM | docs/competitive-analysis.md | 17 | the feature roadmap announced in discussion #346 — agentic voice workflows, remote | CODE |
| MEDIUM | docs/competitive-analysis.md | 235 | | 3 | **Dictation refinement**: deterministic repetition-collapse pre-pass + optional local-LLM filler-word removal befo | CODE |
| MEDIUM | docs/specs/2026-07-16-dictation-flow-program.md | 33 | - **Opt-in hotword biasing** for offline Parakeet: sherpa-onnx `modified_beam_search` + hotwords file (upstream PR #3077 | CODE |
| MEDIUM | docs/specs/00-roadmap-elevenlabs-parity.md | 151 | | `longform/` (#21–#34) | **F** | Granular per-task implementation specs (tied to tasks #21–34). Their capabilities feed | CODE |
| MEDIUM | docs/specs/longform/32-phone-calls.md | 5 | Ship the §R1 **v3 telephony** rung of the agentic-voice workflow: outbound phone calls placed by an embedded [pipecat](h | CODE |
| MEDIUM | docs/specs/longform/32-phone-calls.md | 5 | Ship the §R1 **v3 telephony** rung of the agentic-voice workflow: outbound phone calls placed by an embedded [pipecat](h | CODE |
| MEDIUM | docs/specs/longform/32-phone-calls.md | 197 | ### Watermark: always-on for agentic output | COMMENT |
| MEDIUM | scripts/validate-install-docs.py | 59 | # Skip pure-comment lines — they're docs scaffolding, not commands. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/src/test/SupportPageSponsors.test.jsx | 64 | name: 'Acme Corp', | CODE |
| LOW | frontend/src/test/SupportPageSponsors.test.jsx | 87 | const img = screen.getByAltText('Acme Corp'); | CODE |
| LOW | frontend/src/test/visual/specs.jsx | 380 | <Input placeholder="Jane Doe" /> | CODE |
| LOW | frontend/src/config/sponsors.js | 22 | * name: 'Acme Corp', // display name + <img alt> | COMMENT |
| LOW | …src/components/settings/HistoryRetentionPanel.test.jsx | 87 | expect(screen.getByTestId('history-retention-input')).toHaveAttribute('placeholder', '200'); | CODE |
| LOW | …tend/src/components/settings/InboundNodePanel.test.jsx | 167 | expect(input).toHaveAttribute('placeholder', 'ovnode://…@192.168.0.110:7444?fingerprint=…'); | CODE |
| LOW | frontend/src/i18n/locales/tr.json | 1643 | "placeholder": "örneğin acil ve şaşırmış / sıcak, umutlu / fısıldayan, samimi", | CODE |
| LOW | frontend/src/i18n/locales/tr.json | 1779 | "placeholder": "Duymak için bir şeyler yazın…", | CODE |
| LOW | frontend/src/i18n/locales/nl.json | 1643 | "placeholder": "bijv. urgent en verrast/warm, hoopvol/gefluisterd, intiem", | CODE |
| LOW | frontend/src/i18n/locales/nl.json | 1779 | "placeholder": "Typ iets om te horen...", | CODE |
| LOW | frontend/src/i18n/locales/ja.json | 1643 | "placeholder": "例:緊急で驚いた / 温かく、希望に満ちた / ささやき、親密な", | CODE |
| LOW | frontend/src/i18n/locales/ja.json | 1779 | "placeholder": "聞きたいことを入力してください…", | CODE |
| LOW | frontend/src/i18n/locales/de.json | 1643 | "placeholder": "z.B. dringend und überrascht / warm, hoffnungsvoll / geflüstert, intim", | CODE |
| LOW | frontend/src/i18n/locales/de.json | 1779 | "placeholder": "Geben Sie etwas ein, das Sie hören möchten …", | CODE |
| LOW | frontend/src/i18n/locales/ru.json | 1643 | "placeholder": "например настойчиво и удивленно / тепло, обнадеживающе / шепотом, интимно", | CODE |
| LOW | frontend/src/i18n/locales/ru.json | 1779 | "placeholder": "Введите что-нибудь, чтобы услышать…", | CODE |
| LOW | frontend/src/i18n/locales/pl.json | 1643 | "placeholder": "np. pilne i zaskoczone / ciepłe, pełne nadziei / szeptane, intymne", | CODE |
| LOW | frontend/src/i18n/locales/pl.json | 1779 | "placeholder": "Wpisz coś, co chcesz usłyszeć…", | CODE |
| LOW | frontend/src/i18n/locales/uk.json | 1643 | "placeholder": "напр. терміновий і здивований / теплий, з надією / прошепотів, інтимний", | CODE |
| LOW | frontend/src/i18n/locales/uk.json | 1779 | "placeholder": "Введіть щось, щоб почути…", | CODE |
| LOW | frontend/src/i18n/locales/zh-CN.json | 1649 | "placeholder": "例如:紧迫而惊讶 / 温暖、充满希望 / 低语、亲密", | CODE |
| LOW | frontend/src/i18n/locales/zh-CN.json | 1785 | "placeholder": "输入要听的内容...", | CODE |
| LOW | frontend/src/i18n/locales/pt.json | 1643 | "placeholder": "por exemplo urgente e surpreso / caloroso, esperançoso / sussurrado, íntimo", | CODE |
| LOW | frontend/src/i18n/locales/pt.json | 1779 | "placeholder": "Digite algo para ouvir…", | CODE |
| LOW | frontend/src/i18n/locales/en.json | 2010 | "placeholder": "e.g. urgent and surprised / warm, hopeful / whispered, intimate", | CODE |
| LOW | frontend/src/i18n/locales/en.json | 2312 | "placeholder": "Type something to hear…", | CODE |
| LOW | frontend/src/i18n/locales/it.json | 1643 | "placeholder": "ad es. urgente e sorpreso / caldo, speranzoso / sussurrato, intimo", | CODE |
| LOW | frontend/src/i18n/locales/it.json | 1779 | "placeholder": "Digita qualcosa da ascoltare...", | CODE |
| LOW | frontend/src/i18n/locales/fr.json | 1643 | "placeholder": "par ex. urgent et surpris / chaleureux, plein d'espoir / murmuré, intime", | CODE |
| LOW | frontend/src/i18n/locales/fr.json | 1779 | "placeholder": "Tapez quelque chose à entendre…", | CODE |
| LOW | frontend/src/i18n/locales/hi.json | 1643 | "placeholder": "जैसे अत्यावश्यक और आश्चर्यचकित / गर्म, आशावान / फुसफुसाए हुए, अंतरंग", | CODE |
| LOW | frontend/src/i18n/locales/hi.json | 1779 | "placeholder": "सुनने के लिए कुछ टाइप करें...", | CODE |
| LOW | frontend/src/i18n/locales/ko.json | 1643 | "placeholder": "예를 들어 다급하고 놀라는 / 따뜻하고 희망적인 / 속삭이는, 친밀한", | CODE |
| LOW | frontend/src/i18n/locales/ko.json | 1779 | "placeholder": "듣고 싶은 내용을 입력하세요…", | CODE |
| LOW | frontend/src/i18n/locales/zh-TW.json | 1643 | "placeholder": "例如緊急而驚訝/溫暖、充滿希望/低聲、親密", | CODE |
| LOW | frontend/src/i18n/locales/zh-TW.json | 1779 | "placeholder": "輸入要聽的內容...", | CODE |
| LOW | frontend/src/i18n/locales/vi.json | 1643 | "placeholder": "ví dụ: cấp bách và ngạc nhiên/ấm áp, hy vọng/thì thầm, thân mật", | CODE |
| LOW | frontend/src/i18n/locales/vi.json | 1779 | "placeholder": "Nhập nội dung nào đó để nghe…", | CODE |
| LOW | frontend/src/i18n/locales/id.json | 1643 | "placeholder": "misalnya mendesak dan terkejut / hangat, penuh harapan / berbisik, intim", | CODE |
| LOW | frontend/src/i18n/locales/id.json | 1779 | "placeholder": "Ketik sesuatu untuk didengar…", | CODE |
| LOW | frontend/src/i18n/locales/th.json | 1643 | "placeholder": "เช่น เร่งด่วนและประหลาดใจ / อบอุ่น มีความหวัง / กระซิบใกล้ชิด", | CODE |
| LOW | frontend/src/i18n/locales/th.json | 1779 | "placeholder": "พิมพ์บางอย่างเพื่อฟัง...", | CODE |
| LOW | frontend/src/i18n/locales/sv.json | 1643 | "placeholder": "t.ex. akut och förvånad / varm, hoppfull / viskande, intim", | CODE |
| LOW | frontend/src/i18n/locales/sv.json | 1779 | "placeholder": "Skriv något att höra...", | CODE |
| LOW | frontend/src/i18n/locales/es.json | 1643 | "placeholder": "por ej. urgente y sorprendido / cálido, esperanzado / susurrado, íntimo", | CODE |
| LOW | frontend/src/i18n/locales/es.json | 1779 | "placeholder": "Escribe algo para escuchar...", | CODE |
| LOW | frontend/src/i18n/locales/ar.json | 1643 | "placeholder": "على سبيل المثال عاجل ومتفاجئ / دافئ، متفائل / هامس، حميم", | CODE |
| LOW | frontend/src/i18n/locales/ar.json | 1779 | "placeholder": "اكتب شيئًا لسماعه...", | CODE |
| LOW | tests/test_capture_ws.py | 144 | wav.write_bytes(b"placeholder") | CODE |
| LOW | tests/test_openai_speech_binary_guard_1172.py | 82 | assert "placeholder" in detail | CODE |
| LOW | tests/backend/engines/test_omnivoice_gguf.py | 503 | assert "placeholder" in reason.lower() or "empty" in reason.lower() | CODE |
| LOW⚡ | tests/backend/services/test_tts_backend_registry.py | 351 | fake_token = "hf_" + "A" * 34 | CODE |
| LOW⚡ | tests/backend/services/test_tts_backend_registry.py | 352 | masked = tts_backend._available_hint(f"ready — re-auth with {fake_token}") | CODE |
| LOW⚡ | tests/backend/services/test_tts_backend_registry.py | 354 | assert fake_token not in masked | CODE |
| LOW⚡ | tests/backend/services/test_binary_preflight.py | 33 | assert "placeholder" in reason | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frontend/src-tauri/Cargo.toml | 111 | # MockRuntime app for the backend-lifecycle fault-injection harness | COMMENT |
| MEDIUM | frontend/src/App.jsx | 767 | // 4. Global Drag and drop for seamless native feeling | COMMENT |
| MEDIUM | tests/test_ci_windows_ffmpeg_retry.py | 62 | # this harness went wrong the first time. | COMMENT |
| MEDIUM⚡ | tests/test_synthetic_audio_watermark_1169.py | 177 | # ── Sanity: the harness itself can't fake a pass ───────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_synthetic_audio_watermark_1169.py | 362 | # ── Batch dub queue (harness from test_text_normalization_routes.py) ───────── | COMMENT |
| MEDIUM | tests/test_dub_error_transparency.py | 89 | # Capture directly on the task logger — robust against the app's logging | COMMENT |
| MEDIUM | tests/test_dictation_router.py | 78 | # the store the handler actually used — robust to prefs-reference swaps). | COMMENT |
| MEDIUM⚡ | tests/probe/test_triage.py | 41 | # It also documents its own None case — "the harness works without a GitHub | COMMENT |
| MEDIUM | tests/probe/specs/i18n_parity.probe.yaml | 8 | # since fixing the en locale is a product change, not a harness change. | COMMENT |
| MEDIUM | backend/api/routers/audiobook.py | 644 | # invalidation robust even where resolution is short-circuited/stubbed. | COMMENT |
| MEDIUM | backend/services/srt_parser.py | 74 | # timing line (or end of file). This is robust to missing index | COMMENT |
| MEDIUM | backend/services/pronunciation.py | 84 | # casefold (not lower) for robust Unicode case-insensitive lookup. | COMMENT |
| LOW | backend/services/speech_rate.py | 71 | # Max LLM attempts per segment. Past this we just return the best we got. | COMMENT |
| MEDIUM | scripts/smoke-test.sh | 332 | # isn't reachable from this harness. | COMMENT |
| MEDIUM | scripts/smoke-test.sh | 345 | # bootstrap regression, not harness networking. UV_PYTHON_PREFERENCE=only-system | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 101 | # the only place that logic is exercised is this shell harness. It had | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 274 | # Backend-lifecycle fault-injection harness: real child processes die | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/models/omnivoice.py | 616 | CODE | |
| LOW | omnivoice/models/omnivoice.py | 1096 | CODE | |
| LOW | omnivoice/scripts/denoise_audio.py | 237 | CODE | |
| LOW | omnivoice/scripts/jsonl_to_webdataset.py | 267 | CODE | |
| LOW | omnivoice/eval/models/ecapa_tdnn_wavlm.py | 158 | CODE | |
| LOW | omnivoice/eval/models/ecapa_tdnn_wavlm.py | 222 | CODE | |
| LOW | omnivoice/eval/models/ecapa_tdnn_wavlm.py | 272 | CODE | |
| LOW | tests/test_auth_principal.py | 50 | CODE | |
| LOW | tests/test_device_caps.py | 19 | CODE | |
| LOW | backend/core/archetypes.py | 439 | CODE | |
| LOW | backend/api/routers/audiobook.py | 820 | CODE | |
| LOW | backend/api/routers/generation.py | 812 | CODE | |
| LOW | backend/api/routers/generation.py | 1254 | CODE | |
| LOW | backend/api/routers/archetypes.py | 455 | CODE | |
| LOW | backend/api/routers/sonitranslate.py | 60 | CODE | |
| LOW | backend/api/routers/community.py | 395 | CODE | |
| LOW | backend/api/routers/profiles.py | 44 | CODE | |
| LOW | backend/worker/protocol/gen/worker_v1_pb2_grpc.py | 131 | CODE | |
| LOW | backend/worker/protocol/gen/worker_v1_pb2_grpc.py | 158 | CODE | |
| LOW | backend/worker/protocol/gen/worker_v1_pb2_grpc.py | 185 | CODE | |
| LOW | backend/worker/protocol/gen/worker_v1_pb2_grpc.py | 212 | CODE | |
| LOW | backend/worker/protocol/gen/worker_v1_pb2_grpc.py | 372 | CODE | |
| LOW | backend/worker/protocol/gen/worker_v1_pb2_grpc.py | 399 | CODE | |
| LOW | backend/worker/protocol/gen/worker_v1_pb2_grpc.py | 426 | CODE | |
| LOW | backend/worker/inbound/artifacts.py | 96 | CODE | |
| LOW | backend/services/tts_backend.py | 321 | CODE | |
| LOW | backend/services/segmented_download.py | 106 | CODE | |
| LOW | backend/services/asr_backend.py | 1086 | CODE | |
| LOW | backend/services/admin_sessions.py | 103 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_router_smoke.py | 23 | # Create the DB schema explicitly against whatever DB is active *now*. | COMMENT |
| MEDIUM | tests/backend/engines/test_omnivoice_gguf.py | 107 | # Create a fake binary on disk with known contents (valid ELF magic so | COMMENT |
| MEDIUM | backend/core/user_env.py | 32 | # Create the file with 0600 from the start (no world-readable window before | COMMENT |
| MEDIUM | backend/config/models.yaml | 3 | # This file is the source of truth for all known HuggingFace models. | COMMENT |
| MEDIUM | backend/api/routers/marketplace.py | 226 | # Create the profile in the database | COMMENT |
| MEDIUM | backend/worker/protocol/gen/worker_v1_pb2_grpc.py | 124 | # This class is part of an EXPERIMENTAL API. | COMMENT |
| MEDIUM | backend/worker/protocol/gen/worker_v1_pb2_grpc.py | 353 | # This class is part of an EXPERIMENTAL API. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .claude/skills/omnivoice/scripts/record-reference.sh | 4 | # Usage: | COMMENT |
| LOW | scripts/build-omnivoice-tts.sh | 9 | # Usage: | COMMENT |
| LOW | scripts/desktop-prod.sh | 11 | # Usage: | COMMENT |
| LOW⚡ | scripts/verify-remote-worker.sh | 5 | # Usage: | COMMENT |
| LOW | scripts/macos-dev-unquarantine.sh | 13 | # Usage: | COMMENT |
| LOW | scripts/install.sh | 8 | # Usage: | COMMENT |
| LOW | scripts/run.sh | 7 | # Usage: | COMMENT |
| LOW | scripts/build_demos.sh | 13 | # Usage: | COMMENT |
| LOW | scripts/smoke-gguf.sh | 10 | # Usage: | COMMENT |
| LOW | scripts/verify-macos-signing.sh | 24 | # Usage: | COMMENT |
| LOW | scripts/smoke-test.sh | 21 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | omnivoice/models/omnivoice.py | 1563 | Validate and normalise a voice-design instruct string. Supported instruct items (case-insensitive for English): | STRING |
| HIGH | omnivoice/eval/utils.py | 34 | Load an audio file, preprocess it, and convert to a PyTorch tensor. Args: fname (str): Path to the aud | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/data/batching.py | 153 | # Check if adding this sample exceeds the batch token limit | COMMENT |
| LOW⚡ | backend/services/model_manager.py | 3218 | # Check if there's enough free VRAM to skip offloading | COMMENT |
| LOW | scripts/setup.py | 115 | # Check if vcruntime140.dll is already loadable | COMMENT |
| LOW | scripts/setup.py | 228 | # Check if CUDA is available before installing GPU-only libs | COMMENT |
| LOW | scripts/translate_all.py | 140 | # Check if the split parts match the batch keys length | COMMENT |
| LOW | scripts/smoke-test.sh | 221 | # Check if app crashed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | pyproject.toml | 105 | # in AI-generated speech for provenance detection (SynthID-like). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/README.md | 56 | ### Step 1: Prepare Your Data | COMMENT |
| LOW | examples/README.md | 69 | ### Step 2: Configure the Script | COMMENT |
| LOW | examples/README.md | 81 | ### Step 3: Run | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_worker_security_boundaries.py | 56 | CODE | |
| MEDIUM | tests/test_degraded_api_observability.py | 12 | CODE |