Generate audiobooks from e-books, voice cloning & 1158+ languages!
This report summarizes scanner evidence for DrewThomasson/ebook2audiobook, a Python project with 20,328 GitHub stars. SynthScan examined 63,161 lines of code across 221 source files, recording 1046 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 24.3 (Elevated 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? 213 finding(s).
Are imports declared and package/API names verified? 227 finding(s).
Are wrappers, guards, and repeated structures necessary? 655 finding(s).
Which changes need focused human review? 1046 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 1046 distinct pattern matches across 14 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 |
|---|---|---|---|---|
| HIGH | app.py | 15 | except RuntimeError: | CODE |
| HIGH | app.py | 49 | except OSError: | CODE |
| HIGH | app.py | 402 | except Exception: | CODE |
| HIGH | components/rocmfix.py | 255 | except Exception: | CODE |
| HIGH | components/rocmfix.py | 316 | except Exception: | CODE |
| HIGH | components/rocmfix.py | 382 | except OSError: | CODE |
| HIGH | components/rocmfix.py | 820 | except Exception: pass | CODE |
| HIGH | components/rocmfix.py | 1235 | except Exception: | CODE |
| HIGH | components/rocmfix.py | 1460 | except Exception: pass | CODE |
| HIGH | components/rocmfix.py | 1472 | except Exception: pass | CODE |
| HIGH | components/rocmfix.py | 265 | except Exception: | CODE |
| HIGH | components/rocmfix.py | 306 | except Exception: pass | CODE |
| HIGH | components/rocmfix.py | 401 | except OSError: pass | CODE |
| HIGH | components/rocmfix.py | 774 | except Exception: pass | CODE |
| HIGH | components/rocmfix.py | 1003 | except Exception: | CODE |
| HIGH | components/rocmfix.py | 1065 | except Exception: | CODE |
| HIGH | components/rocmfix.py | 1212 | except: pass | CODE |
| HIGH | components/rocmfix.py | 1340 | except Exception: pass | CODE |
| HIGH | components/rocmfix.py | 239 | except Exception: | CODE |
| HIGH | components/rocmfix.py | 284 | except Exception: | CODE |
| HIGH | components/rocmfix.py | 435 | except OSError: pass | CODE |
| HIGH | components/rocmfix.py | 738 | except OSError: pass | CODE |
| HIGH | components/rocmfix.py | 807 | except Exception: pass | CODE |
| HIGH | components/rocmfix.py | 1174 | except: pass | CODE |
| HIGH | components/rocmfix.py | 170 | except OSError: | CODE |
| HIGH | components/rocmfix.py | 711 | except FileNotFoundError: pass | CODE |
| HIGH | components/rocmfix.py | 803 | except Exception: pass | CODE |
| HIGH | components/rocmfix.py | 1605 | except Exception: | CODE |
| HIGH | components/rocmfix.py | 237 | except Exception: | CODE |
| HIGH | components/rocmfix.py | 373 | except FileNotFoundError: pass | CODE |
| HIGH | components/rocmfix.py | 376 | except FileNotFoundError: pass | CODE |
| HIGH | components/detect_gpu.py | 26 | except Exception: | CODE |
| HIGH | lib/core.py | 3944 | except ImportError: | CODE |
| HIGH | lib/core.py | 3951 | except Exception: | CODE |
| HIGH | lib/core.py | 2828 | except (OSError, ValueError): | CODE |
| HIGH | lib/core.py | 4833 | except Exception: | CODE |
| HIGH | lib/core.py | 2306 | except Exception: | CODE |
| HIGH | lib/core.py | 2935 | except Exception: | CODE |
| HIGH | lib/core.py | 4108 | except Exception as e: | CODE |
| HIGH | lib/core.py | 4776 | except Exception: | CODE |
| HIGH | lib/core.py | 4782 | except Exception: | CODE |
| HIGH | lib/core.py | 4788 | except Exception: | CODE |
| HIGH | lib/core.py | 4797 | except Exception: | CODE |
| HIGH | lib/core.py | 4823 | except Exception: | CODE |
| HIGH | lib/core.py | 1221 | except OSError: | CODE |
| HIGH | lib/core.py | 2928 | except Exception: | CODE |
| HIGH | lib/core.py | 4121 | except Exception: | CODE |
| HIGH | lib/core.py | 4758 | except Exception: | CODE |
| HIGH | lib/core.py | 1416 | except Exception: | CODE |
| HIGH | lib/core.py | 3376 | except Exception: | CODE |
| HIGH | lib/core.py | 1378 | except Exception: | CODE |
| HIGH | lib/core.py | 3385 | except id3_error: | CODE |
| HIGH | lib/core.py | 3722 | except (OSError, ValueError): | CODE |
| HIGH | lib/core.py | 4651 | except FileNotFoundError: | CODE |
| HIGH | lib/core.py | 4653 | except OSError: | CODE |
| HIGH | lib/core.py | 3619 | except (OSError, ValueError): | CODE |
| HIGH | lib/core.py | 1078 | except (AttributeError, ValueError): | CODE |
| HIGH | lib/core.py | 4456 | except Exception as e: | CODE |
| HIGH | lib/gradio.py | 1789 | except (OSError, ValueError): | CODE |
| HIGH | lib/gradio.py | 1624 | except (OSError, ValueError): | CODE |
| 72 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | uninstall.sh | 12 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 14 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 20 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 22 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 46 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 48 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 57 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 59 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 69 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 71 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 84 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 86 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 95 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 97 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 209 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 211 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 219 | # ========================================================= | COMMENT |
| MEDIUM⚡ | uninstall.sh | 221 | # ========================================================= | COMMENT |
| MEDIUM | uninstall.sh | 126 | # ========================================================= | COMMENT |
| MEDIUM | uninstall.sh | 128 | # ========================================================= | COMMENT |
| MEDIUM | uninstall.sh | 180 | # ========================================================= | COMMENT |
| MEDIUM | uninstall.sh | 182 | # ========================================================= | COMMENT |
| MEDIUM | uninstall.sh | 246 | # ========================================================= | COMMENT |
| MEDIUM | uninstall.sh | 248 | # ========================================================= | COMMENT |
| MEDIUM | app.py | 423 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | components/sitecustomize.py | 51 | # ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/sitecustomize.py | 54 | # ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/sitecustomize.py | 65 | # ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/sitecustomize.py | 67 | # ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/sitecustomize.py | 181 | # ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/sitecustomize.py | 183 | # ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/rocmfix.py | 116 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/rocmfix.py | 118 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/rocmfix.py | 290 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/rocmfix.py | 292 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/rocmfix.py | 326 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/rocmfix.py | 328 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/rocmfix.py | 551 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/rocmfix.py | 553 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/rocmfix.py | 747 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/rocmfix.py | 749 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | components/rocmfix.py | 846 | # ─── 11. GLOBAL INSTALLER ───────────────────────────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 54 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 56 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 82 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 84 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 154 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 156 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 186 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 188 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 620 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 622 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 896 | # ─── 12. DUAL-BACKEND BENCHMARK HELPER (VULKAN VS HIP) ───────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 1320 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/rocmfix.py | 1322 | # ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | lib/conf.py | 40 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/conf.py | 42 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/conf.py | 49 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/conf.py | 51 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/conf.py | 58 | # --------------------------------------------------------------------- | COMMENT |
| 33 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app.py | 402 | except Exception: | CODE |
| LOW | app.py | 413 | except Exception: | CODE |
| LOW | app.py | 462 | except Exception as e: | CODE |
| LOW | app.py | 558 | except Exception as e: | CODE |
| LOW | tools/icons/generate-icons.py | 61 | except Exception as e: | CODE |
| LOW | tools/icons/generate-icons.py | 86 | except Exception as e: | CODE |
| LOW⚡ | tools/icons/generate-icons.py | 139 | except Exception as e: | CODE |
| LOW⚡ | tools/icons/generate-icons.py | 145 | except Exception as e: | CODE |
| LOW⚡ | tools/icons/generate-icons.py | 149 | except Exception as e: | CODE |
| LOW | tools/icons/generate-icons.py | 165 | except Exception as e: | CODE |
| MEDIUM | tools/icons/generate-icons.py | 37 | def resize_image(source_path, output_dir, sizes): | CODE |
| MEDIUM | tools/icons/generate-icons.py | 65 | def create_windows_ico(output_dir): | CODE |
| LOW | tools/readme_i18n/update_translations.py | 113 | except Exception as e: | CODE |
| MEDIUM | components/rocmfix.py | 120 | def _run(cmd, shell=False, timeout=10): | CODE |
| MEDIUM | components/rocmfix.py | 131 | def safe_run(cmd, shell=False, env=None, timeout=30) -> tuple[str, str, int]: | CODE |
| LOW⚡ | components/rocmfix.py | 128 | except Exception: | CODE |
| LOW⚡ | components/rocmfix.py | 284 | except Exception: | CODE |
| LOW⚡ | components/rocmfix.py | 287 | except Exception as e: | CODE |
| LOW⚡ | components/rocmfix.py | 297 | except Exception: return (0, 0, 0) | CODE |
| LOW⚡ | components/rocmfix.py | 306 | except Exception: pass | CODE |
| LOW⚡ | components/rocmfix.py | 316 | except Exception: | CODE |
| LOW⚡ | components/rocmfix.py | 548 | except Exception as e: | CODE |
| LOW⚡ | components/rocmfix.py | 744 | except Exception as e: | CODE |
| LOW⚡ | components/rocmfix.py | 792 | except Exception: | CODE |
| LOW⚡ | components/rocmfix.py | 801 | except Exception: | CODE |
| LOW⚡ | components/rocmfix.py | 803 | except Exception: pass | CODE |
| LOW⚡ | components/rocmfix.py | 807 | except Exception: pass | CODE |
| LOW⚡ | components/rocmfix.py | 856 | except Exception: return False | CODE |
| LOW⚡ | components/rocmfix.py | 864 | except Exception: path_val = "" | CODE |
| LOW⚡ | components/rocmfix.py | 872 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 105 | except Exception: | CODE |
| LOW | components/rocmfix.py | 140 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 237 | except Exception: | CODE |
| LOW | components/rocmfix.py | 239 | except Exception: | CODE |
| LOW | components/rocmfix.py | 255 | except Exception: | CODE |
| LOW | components/rocmfix.py | 265 | except Exception: | CODE |
| LOW | components/rocmfix.py | 461 | except Exception: | CODE |
| LOW | components/rocmfix.py | 569 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 602 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 645 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 678 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 717 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 774 | except Exception: pass | CODE |
| LOW | components/rocmfix.py | 820 | except Exception: pass | CODE |
| LOW | components/rocmfix.py | 883 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 929 | except Exception: | CODE |
| LOW | components/rocmfix.py | 942 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 992 | except Exception: | CODE |
| LOW | components/rocmfix.py | 1003 | except Exception: | CODE |
| LOW | components/rocmfix.py | 1065 | except Exception: | CODE |
| LOW | components/rocmfix.py | 1083 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 1100 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 1166 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 1208 | except Exception as e: | CODE |
| LOW | components/rocmfix.py | 1235 | except Exception: | CODE |
| LOW | components/rocmfix.py | 1340 | except Exception: pass | CODE |
| LOW | components/rocmfix.py | 1380 | except Exception: ch = "n" | CODE |
| LOW | components/rocmfix.py | 1460 | except Exception: pass | CODE |
| LOW | components/rocmfix.py | 1472 | except Exception: pass | CODE |
| LOW | components/rocmfix.py | 1501 | except Exception as e: | CODE |
| 319 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app.py | 4 | CODE | |
| LOW | lib/conf.py | 1 | CODE | |
| LOW | lib/conf.py | 2 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| LOW | lib/__init__.py | 1 | CODE | |
| 157 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app.py | 18 | CODE | |
| LOW | app.py | 142 | CODE | |
| LOW | tools/icons/generate-icons.py | 91 | CODE | |
| LOW | tools/readme_i18n/update_translations.py | 206 | CODE | |
| LOW | tools/readme_i18n/update_translations.py | 240 | CODE | |
| LOW | components/rocmfix.py | 96 | CODE | |
| LOW | components/rocmfix.py | 221 | CODE | |
| LOW | components/rocmfix.py | 346 | CODE | |
| LOW | components/rocmfix.py | 429 | CODE | |
| LOW | components/rocmfix.py | 472 | CODE | |
| LOW | components/rocmfix.py | 557 | CODE | |
| LOW | components/rocmfix.py | 697 | CODE | |
| LOW | components/rocmfix.py | 897 | CODE | |
| LOW | components/rocmfix.py | 984 | CODE | |
| LOW | components/rocmfix.py | 1462 | CODE | |
| LOW | components/rocmfix.py | 1544 | CODE | |
| LOW | components/rocmfix.py | 1587 | CODE | |
| LOW | components/rocmfix.py | 1620 | CODE | |
| LOW | components/detect_gpu.py | 11 | CODE | |
| LOW | lib/core.py | 377 | CODE | |
| LOW | lib/core.py | 413 | CODE | |
| LOW | lib/core.py | 483 | CODE | |
| LOW | lib/core.py | 531 | CODE | |
| LOW | lib/core.py | 800 | CODE | |
| LOW | lib/core.py | 900 | CODE | |
| LOW | lib/core.py | 967 | CODE | |
| LOW | lib/core.py | 1297 | CODE | |
| LOW | lib/core.py | 1326 | CODE | |
| LOW | lib/core.py | 1434 | CODE | |
| LOW | lib/core.py | 1745 | CODE | |
| LOW | lib/core.py | 2214 | CODE | |
| LOW | lib/core.py | 2418 | CODE | |
| LOW | lib/core.py | 2500 | CODE | |
| LOW | lib/core.py | 2669 | CODE | |
| LOW | lib/core.py | 2792 | CODE | |
| LOW | lib/core.py | 2938 | CODE | |
| LOW | lib/core.py | 3141 | CODE | |
| LOW | lib/core.py | 3185 | CODE | |
| LOW | lib/core.py | 3842 | CODE | |
| LOW | lib/core.py | 3980 | CODE | |
| LOW | lib/core.py | 4022 | CODE | |
| LOW | lib/core.py | 4085 | CODE | |
| LOW | lib/core.py | 4542 | CODE | |
| LOW | lib/core.py | 4681 | CODE | |
| LOW | lib/core.py | 4748 | CODE | |
| LOW | lib/core.py | 4839 | CODE | |
| LOW | lib/core.py | 4857 | CODE | |
| LOW | lib/core.py | 1436 | CODE | |
| LOW | lib/core.py | 1802 | CODE | |
| LOW | lib/core.py | 1829 | CODE | |
| LOW | lib/core.py | 1866 | CODE | |
| LOW | lib/core.py | 2229 | CODE | |
| LOW | lib/core.py | 3192 | CODE | |
| LOW | lib/core.py | 3278 | CODE | |
| LOW | lib/gradio.py | 13 | CODE | |
| LOW | lib/gradio.py | 418 | CODE | |
| LOW | lib/gradio.py | 604 | CODE | |
| LOW | lib/gradio.py | 864 | CODE | |
| LOW | lib/gradio.py | 928 | CODE | |
| LOW | lib/gradio.py | 988 | CODE | |
| 74 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | app.py | 250 | {"book1.epub": "/voices/eng/adult/female/alice.wav", "/abs/path/book2.epub": null}''') | CODE |
| HIGH⚡ | lib/gradio.py | 3264 | const hide=()=>{const tip=document.getElementById('gr_tooltip_box');if(tip){tip.style.display='none';}wi | CODE |
| HIGH⚡ | lib/gradio.py | 3268 | let timer=null; | CODE |
| HIGH⚡ | lib/gradio.py | 3271 | if(!state||!state.enabled||!target||!target.closest){return null;} | CODE |
| HIGH⚡ | lib/gradio.py | 3273 | if(!btn){return null;} | CODE |
| HIGH⚡ | lib/gradio.py | 3277 | return null; | CODE |
| HIGH⚡ | lib/gradio.py | 3685 | const gr_root = (window.gradioApp && window.gradioApp()) || document; | CODE |
| HIGH⚡ | lib/gradio.py | 3694 | if(found && sentence){ | CODE |
| HIGH⚡ | lib/gradio.py | 3698 | cue = JSON.stringify(found ? {idx: (found.sentence_idx ?? found.idx), text: found.text, inte | CODE |
| HIGH | lib/gradio.py | 3608 | const gr_root = (window.gradioApp && window.gradioApp()) || document; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | lib/conf_interlude.py | 8 | interlude_classifier_repo = 'MoritzLaurer/mDeBERTa-v3-base-mnli-xnli' # multilingual zero-shot (NLI) classifier | CODE |
| MEDIUM | lib/conf_interlude.py | 11 | # zero-shot classifier sentences, {} is the genre, the mood family or the mood | COMMENT |
| MEDIUM | lib/core.py | 2610 | # Replace punctuations causing hallucinations | STRING |
| MEDIUM | lib/conf_lang.py | 24 | # Quotes causing hallucinations in some TTS engines | STRING |
| MEDIUM | lib/conf_lang.py | 44 | # Misinterpreted punctuation that can lead to hallucinations | STRING |
| MEDIUM | lib/classes/tts_engines/fairseq.py | 117 | # always ready: an inline [voice:…] tag can switch to zero-shot in the middle of the sentence | COMMENT |
| MEDIUM | lib/classes/tts_engines/fairseq.py | 128 | # recomputed both ways: [/voice] back to a builtin voice must leave zero-shot again | COMMENT |
| MEDIUM | lib/classes/tts_engines/glowtts.py | 111 | # always ready: an inline [voice:…] tag can switch to zero-shot in the middle of the sentence | COMMENT |
| MEDIUM | lib/classes/tts_engines/piper.py | 128 | # always ready: an inline [voice:…] tag can switch to zero-shot in the middle of the sentence | COMMENT |
| MEDIUM | lib/classes/tts_engines/piper.py | 139 | # recomputed both ways: [/voice] back to a builtin voice must leave zero-shot again | COMMENT |
| MEDIUM | lib/classes/tts_engines/vits.py | 130 | # always ready: an inline [voice:…] tag can switch to zero-shot in the middle of the sentence | COMMENT |
| MEDIUM | lib/classes/tts_engines/vits.py | 141 | # recomputed both ways: [/voice] back to a builtin voice must leave zero-shot again | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | components/sitecustomize.py | 68 | def wrapped_check_torch_load_is_safe(*args: Any, **kwargs: Any) -> None: | CODE |
| LOW⚡ | components/rocmfix.py | 320 | def maybe_print_update_banner(): | CODE |
| LOW | components/rocmfix.py | 395 | def _get_linux_driver_version() -> str: | CODE |
| LOW | lib/core.py | 724 | def count_blocks_global_voice(db_path:str)->tuple: | STRING |
| LOW | lib/core.py | 3192 | def _generate_ffmpeg_metadata(part_chapters:list[tuple[str,str]], output_metadata_path:str, default_audio_proc_forma | STRING |
| LOW | lib/core.py | 3933 | def sanitize_meta_chapter_title(title:str, max_bytes:int=140)->str: | STRING |
| LOW | lib/core.py | 3939 | def strip_invalid_filename_characters(filename:str, max_bytes:int=200)->str: | STRING |
| LOW | lib/core.py | 4015 | def get_compatible_tts_engines(language:str)->list[str]: | STRING |
| LOW | lib/core.py | 4681 | def restore_session_from_data(data:dict, session:DictProxy, force:bool, filter_keys:bool)->None: | STRING |
| LOW⚡ | lib/gradio.py | 791 | def _restore_audiobook_player(session_id:str, audiobook:str|None)->tuple: | STRING |
| LOW⚡ | lib/gradio.py | 914 | def _change_gr_audiobook_list(session_id:str, selected:str|None)->tuple: | STRING |
| LOW⚡ | lib/gradio.py | 928 | def _update_gr_audiobook_player(session_id:str)->tuple: | STRING |
| LOW⚡ | lib/gradio.py | 1223 | def _click_gr_custom_model_del_btn(session_id:str, selected:str)->tuple: | STRING |
| LOW⚡ | lib/gradio.py | 1237 | def _click_gr_audiobook_del_btn(session_id:str, selected:str)->tuple: | STRING |
| LOW⚡ | lib/gradio.py | 1251 | def _change_gr_audiobook_edit_btns(session_id:str, selected:str|None)->tuple: | STRING |
| LOW⚡ | lib/gradio.py | 1290 | def _update_audiobook_edit_input(session_id:str)->tuple: | STRING |
| LOW⚡ | lib/gradio.py | 1303 | def _click_gr_audiobook_edit_btn(session_id:str, audiobook:str|None, cue:str|None)->tuple: | STRING |
| LOW⚡ | lib/gradio.py | 2350 | def _change_gr_custom_model_list(session_id:str, selected:str|None)->tuple: | STRING |
| LOW⚡ | lib/gradio.py | 2365 | def _change_gr_tts_engine_list(session_id:str, engine:str)->tuple: | STRING |
| LOW⚡ | lib/gradio.py | 2417 | def _change_gr_output_format_list(session_id:str, val:str)->None: | STRING |
| LOW⚡ | lib/gradio.py | 2424 | def _change_gr_output_channel_list(session_id:str, val:str)->None: | STRING |
| LOW⚡ | lib/gradio.py | 2805 | def _click_gr_override_cancel_btn(session_id:str)->dict: | STRING |
| LOW⚡ | lib/gradio.py | 2812 | def _click_gr_override_confirm_btn(session_id:str, event:int, audiobook_files_state:bool)->tuple: | STRING |
| LOW | lib/gradio.py | 483 | def _disable_on_custom_upload()->tuple: | STRING |
| LOW | lib/gradio.py | 956 | def _build_voice_highlight_css(row_index:int|None)->str: | STRING |
| LOW | lib/gradio.py | 967 | def _row_voice_player_visible(ebook_mode, selected)->bool: | STRING |
| LOW | lib/gradio.py | 1073 | def _change_gr_ebook_textarea(session_id:str, ebook_textarea:str)->None: | STRING |
| LOW | lib/gradio.py | 1273 | def _update_audiobook_edit_lock(session_id:str)->tuple: | STRING |
| LOW | lib/gradio.py | 1467 | def _click_gr_audiobook_edit_sentence_btn(session_id:str, text:str|None)->tuple: | STRING |
| LOW | lib/gradio.py | 1601 | def _click_gr_audiobook_edit_save_btn(session_id:str, text:str|None)->tuple: | STRING |
| LOW | lib/gradio.py | 1758 | def _click_gr_audiobook_edit_cancel_btn(session_id:str)->tuple: | STRING |
| LOW | lib/gradio.py | 1816 | def _click_gr_audiobook_export_btn(session_id:str, audiobook:str|None)->tuple: | STRING |
| LOW | lib/gradio.py | 2160 | def _update_gr_translate_list(session_id:str)->dict: | STRING |
| LOW | lib/gradio.py | 2187 | def _update_gr_tts_engine_list(session_id:str)->dict: | STRING |
| LOW | lib/gradio.py | 2204 | def _update_gr_custom_model_list(session_id:str)->dict: | STRING |
| LOW | lib/gradio.py | 2226 | def _update_gr_fine_tuned_list(session_id:str)->dict: | STRING |
| LOW | lib/gradio.py | 2270 | def _click_gr_translate_enabled(session_id:str, checked:bool)->tuple: | STRING |
| LOW | lib/gradio.py | 2310 | def _change_gr_custom_model_file(session_id:str, custom_file:str|None, tts_engine:str)->tuple: | STRING |
| LOW | lib/gradio.py | 2399 | def _change_gr_fine_tuned_list(session_id:str, selected:str)->dict: | STRING |
| LOW | lib/gradio.py | 2437 | def _click_gr_session_switch_btn(session_id:str, backup_session_id:str|None)->tuple: | STRING |
| LOW | lib/gradio.py | 2682 | def _update_gr_audiobook_list(session_id:str)->dict: | STRING |
| LOW | lib/gradio.py | 2973 | def _click_gr_blocks_cancel_btn(session_id:str, page:int, blocks:list[dict], *args)->tuple: | STRING |
| LOW | lib/gradio.py | 2981 | def _click_gr_blocks_confirm_btn(session_id:str, event:int, page:int, blocks:list[dict], *args)->tuple: | STRING |
| LOW | lib/gradio.py | 2993 | def _change_gr_restore_session(data:DictProxy|None, state:dict, req:gr.Request)->tuple: | STRING |
| LOW⚡ | lib/classes/device_installer.py | 1706 | def finalize_exclusive_packages(self)->int: | CODE |
| LOW | lib/classes/redirect_console.py | 41 | def setup_transformers_logger(self)->None: | CODE |
| LOW | lib/classes/tts_engines/common/xpu_workarounds.py | 6 | def patch_coqui_hifigan_for_xpu(engine): | CODE |
| LOW | lib/classes/tts_engines/common/utils.py | 585 | def _sanitize_sampling_params(self, params:dict)->dict: | CODE |
| LOW | lib/classes/tts_engines/common/utils.py | 643 | def _check_xtts_builtin_speakers(self, current_voice:str, speaker:str)->str|bool: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | podman-compose.yml | 1 | # podman-compose.yml — universal across cpu / cuda / rocm / xpu (+ jetson), | COMMENT |
| LOW | podman-compose.yml | 21 | # | COMMENT |
| LOW | docker-compose.yml | 1 | # docker-compose.yml — universal across cpu / cuda / rocm / xpu (+ jetson), | COMMENT |
| LOW | docker-compose.yml | 21 | # DEVICE_TAG=xpu docker compose --profile xpu up | COMMENT |
| LOW | .github/workflows/Stale.yml | 21 | stale-pr-message: 'This pull request has been automatically marked as stale due to inactivity. It will be clos | COMMENT |
| LOW | .github/workflows/Stale.yml | 41 | #close-issue-label: # optional | COMMENT |
| LOW | .github/workflows/Stale.yml | 61 | #exempt-all-issue-milestones: # optional, default is | COMMENT |
| LOW | .github/workflows/Stale.yml | 81 | #remove-issue-stale-when-updated: # optional, default is | COMMENT |
| LOW | .github/workflows/Stale.yml | 101 | #exempt-all-issue-assignees: # optional, default is | COMMENT |
| LOW | .github/workflows/Build-Torchcodec-aarch64.yml | 161 | rm "$RAW" | COMMENT |
| LOW | lib/header.css | 421 | max-height: 100px !important; | COMMENT |
| LOW | lib/classes/device_installer.py | 1601 | def select_pkg(self, pkg:str)->str: | COMMENT |
| LOW | lib/classes/device_installer.py | 1621 | # torch and onnxruntime must share the same CUDA major, or the | COMMENT |
| LOW | lib/classes/device_installer.py | 1641 | if not self.has_directml_gpu(): | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | lib/classes/argos_translator.py | 129 | # Create a custom pivot translator object | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lib/__init__.py | 40 | __all__ = [ | CODE |
| LOW | lib/classes/tts_engines/common/headers.py | 14 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app.py | 321 | # Check if the port is already in use to prevent multiple launches | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | lib/core.py | 1334 | # Step 1: Extract TOC (Table of Contents) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | lib/core.py | 1334 | # Step 1: Extract TOC (Table of Contents) | STRING |