High-Quality Voice Cloning TTS for 600+ Languages
This report summarizes scanner evidence for k2-fsa/OmniVoice, a Python project with 14,445 GitHub stars. SynthScan examined 18,719 lines of code across 83 source files, recording 252 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 23.7 (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? 103 finding(s).
Are imports declared and package/API names verified? 6 finding(s).
Are wrappers, guards, and repeated structures necessary? 178 finding(s).
Which changes need focused human review? 252 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 252 distinct pattern matches across 13 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 |
|---|---|---|---|---|
| MEDIUM | omnivoice/utils/duration.py | 33 | # ========================================== | COMMENT |
| MEDIUM | omnivoice/utils/duration.py | 35 | # ========================================== | COMMENT |
| MEDIUM | omnivoice/utils/duration.py | 68 | # ========================================== | COMMENT |
| MEDIUM | omnivoice/utils/duration.py | 70 | # ========================================== | COMMENT |
| MEDIUM | omnivoice/utils/duration.py | 252 | # ========================================== | COMMENT |
| MEDIUM | omnivoice/utils/duration.py | 254 | # ========================================== | COMMENT |
| MEDIUM | omnivoice/utils/text.py | 228 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/utils/text.py | 230 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | omnivoice/utils/audio.py | 40 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | omnivoice/utils/audio.py | 42 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/utils/audio.py | 124 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/utils/audio.py | 126 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/models/omnivoice.py | 115 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/models/omnivoice.py | 117 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/models/omnivoice.py | 238 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/models/omnivoice.py | 240 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/models/omnivoice.py | 386 | # ------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/models/omnivoice.py | 388 | # ------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/models/omnivoice.py | 579 | # ------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/models/omnivoice.py | 581 | # ------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/models/omnivoice.py | 1455 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/models/omnivoice.py | 1457 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/models/omnivoice.py | 1722 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/models/omnivoice.py | 1724 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | omnivoice/cli/demo.py | 39 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | omnivoice/cli/demo.py | 41 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | omnivoice/cli/demo.py | 45 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | omnivoice/cli/demo.py | 47 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/cli/demo.py | 100 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/cli/demo.py | 102 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/cli/demo.py | 147 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/cli/demo.py | 149 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | omnivoice/cli/demo.py | 219 | # ===================================================================== | COMMENT |
| MEDIUM⚡ | omnivoice/cli/demo.py | 221 | # ===================================================================== | COMMENT |
| MEDIUM | omnivoice/cli/demo.py | 312 | # ============================================================== | STRING |
| MEDIUM | omnivoice/cli/demo.py | 314 | # ============================================================== | STRING |
| MEDIUM | omnivoice/cli/demo.py | 397 | # ============================================================== | STRING |
| MEDIUM | omnivoice/cli/demo.py | 399 | # ============================================================== | STRING |
| MEDIUM | omnivoice/cli/demo.py | 497 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | omnivoice/cli/demo.py | 499 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | omnivoice/scripts/denoise_audio.py | 220 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/scripts/denoise_audio.py | 222 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/scripts/denoise_audio.py | 400 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/scripts/denoise_audio.py | 402 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/scripts/denoise_audio.py | 471 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/scripts/denoise_audio.py | 473 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/scripts/denoise_audio.py | 519 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/scripts/denoise_audio.py | 521 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/scripts/denoise_audio.py | 736 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | omnivoice/scripts/denoise_audio.py | 738 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/run_emilia.sh | 40 | # ================================= | COMMENT |
| MEDIUM | examples/run_finetune_lora.sh | 38 | # ================================= | COMMENT |
| MEDIUM | examples/run_finetune.sh | 38 | # ================================= | COMMENT |
| MEDIUM | examples/run_eval.sh | 63 | # ============================================================ | COMMENT |
| MEDIUM | examples/run_eval.sh | 65 | # ============================================================ | COMMENT |
| MEDIUM | examples/run_eval.sh | 111 | # ============================================================ | COMMENT |
| MEDIUM | examples/run_eval.sh | 113 | # ============================================================ | COMMENT |
| MEDIUM | examples/run_eval.sh | 147 | # ============================================================ | COMMENT |
| MEDIUM | examples/run_eval.sh | 149 | # ============================================================ | COMMENT |
| MEDIUM | examples/run_eval.sh | 183 | # ============================================================ | COMMENT |
| 5 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/utils/text.py | 316 | except Exception: # pragma: no cover - lang_map should be importable | CODE |
| LOW | omnivoice/utils/text.py | 332 | except Exception: | CODE |
| LOW | omnivoice/utils/text.py | 351 | except Exception as e: # pragma: no cover - defensive | CODE |
| MEDIUM | omnivoice/utils/text.py | 329 | def _repl(match): | CODE |
| LOW | omnivoice/utils/audio.py | 59 | except Exception: | CODE |
| LOW | omnivoice/utils/audio.py | 106 | except Exception: | CODE |
| LOW | omnivoice/cli/infer_batch.py | 275 | except Exception: | CODE |
| LOW | omnivoice/cli/infer_batch.py | 539 | except Exception as e: | CODE |
| LOW⚡ | omnivoice/cli/demo.py | 210 | 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 | 608 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/denoise_audio.py | 671 | except Exception: | CODE |
| LOW | omnivoice/scripts/denoise_audio.py | 931 | except Exception as exc: | CODE |
| LOW | omnivoice/scripts/denoise_audio.py | 1003 | except Exception: | CODE |
| LOW | omnivoice/scripts/jsonl_to_webdataset.py | 192 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/jsonl_to_webdataset.py | 406 | except Exception as e: | CODE |
| MEDIUM | omnivoice/scripts/jsonl_to_webdataset.py | 426 | print(f"Error details: {error_log_path}") | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 332 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 343 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 378 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 444 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 505 | except Exception as e: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 699 | except Exception as exc: | CODE |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 777 | except Exception: | CODE |
| LOW | omnivoice/eval/mos/utmos.py | 128 | except Exception as e: | CODE |
| LOW | omnivoice/eval/mos/utmos.py | 158 | except Exception as e: | CODE |
| LOW | omnivoice/eval/mos/utmos.py | 198 | except Exception as e: | CODE |
| LOW | omnivoice/eval/speaker_similarity/sim.py | 181 | 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 | 308 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 192 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 212 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 227 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 326 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 367 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 483 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 514 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/fleurs.py | 221 | except Exception as e: | STRING |
| LOW | omnivoice/eval/wer/fleurs.py | 237 | except Exception: | STRING |
| LOW | omnivoice/eval/wer/fleurs.py | 251 | except Exception as e: | STRING |
| LOW | omnivoice/eval/wer/fleurs.py | 319 | except Exception: | STRING |
| LOW | omnivoice/eval/wer/fleurs.py | 423 | except Exception as e: | STRING |
| LOW | omnivoice/eval/wer/hubert.py | 103 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/hubert.py | 116 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/hubert.py | 193 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/seedtts.py | 195 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/seedtts.py | 211 | except Exception as e: | CODE |
| LOW | omnivoice/eval/wer/seedtts.py | 274 | except Exception: | CODE |
| LOW | omnivoice/eval/wer/seedtts.py | 353 | except Exception as e: | CODE |
| LOW | omnivoice/data/batching.py | 97 | except Exception as e: | CODE |
| LOW | omnivoice/data/batching.py | 168 | except Exception as e: | CODE |
| LOW | omnivoice/data/dataset.py | 437 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| 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 |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/training/config.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/training/checkpoint.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/training/builder.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/training/trainer.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/utils/duration.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/utils/data_utils.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/utils/common.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/utils/text.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/utils/text.py | 221 | is_chinese = any("\u4e00" <= char <= "\u9fff" for char in text) | COMMENT |
| LOW | omnivoice/utils/audio.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/utils/lora.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/utils/lang_map.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/utils/voice_design.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/models/omnivoice.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/cli/merge_lora.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/cli/train.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/cli/infer_batch.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/cli/demo.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/scripts/extract_audio_tokens.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/scripts/denoise_audio.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/scripts/denoise_audio.py | 521 | # --------------------------------------------------------------------------- | COMMENT |
| LOW | omnivoice/scripts/jsonl_to_webdataset.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/eval/utils.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/eval/mos/utmos.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/eval/models/utmos.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/eval/models/ecapa_tdnn_wavlm.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/eval/speaker_similarity/sim.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/eval/wer/sensevoice.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/eval/wer/minimax.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/eval/wer/common.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/eval/wer/fleurs.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/eval/wer/hubert.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/eval/wer/seedtts.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/data/batching.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/data/collator.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/data/processor.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | omnivoice/data/dataset.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | tests/test_lora.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | examples/run_emilia.sh | 41 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/training/builder.py | 56 | def build_model_and_tokenizer( | CODE |
| LOW | omnivoice/training/trainer.py | 165 | def create_optimizer_and_scheduler(self): | CODE |
| LOW | omnivoice/utils/common.py | 57 | def get_best_device_with_count(): | CODE |
| LOW | omnivoice/models/omnivoice.py | 729 | def create_voice_clone_prompt( | CODE |
| LOW | omnivoice/models/omnivoice.py | 1198 | def _prepare_inference_inputs( | CODE |
| LOW | omnivoice/models/omnivoice.py | 1429 | def _predict_tokens_with_scoring(self, c_logits, u_logits, gen_config): | CODE |
| LOW | omnivoice/models/omnivoice.py | 1658 | def _tokenize_with_nonverbal_tags(text: str, tokenizer) -> torch.Tensor: | CODE |
| LOW | omnivoice/models/omnivoice_flashinfer.py | 92 | def _fi_attention_module_forward( | CODE |
| LOW | omnivoice/models/omnivoice_flashinfer.py | 222 | def _generate_iterative_packed( | CODE |
| LOW | omnivoice/models/omnivoice_flashinfer.py | 546 | def _get_or_capture_bucket_graph(model, B, U_b, C_b): | CODE |
| LOW | omnivoice/cli/infer_batch.py | 280 | def estimate_sample_total_duration( | CODE |
| LOW | omnivoice/cli/infer_batch.py | 312 | def _sort_samples_by_duration( | CODE |
| LOW | omnivoice/cli/infer_batch.py | 328 | def cluster_samples_by_duration( | CODE |
| LOW | omnivoice/cli/infer_batch.py | 358 | 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 | 49 | def read_language_mapping_from_tsv( | CODE |
| LOW | omnivoice/eval/wer/minimax.py | 335 | def run_eval_worker_paraformer(data_chunk, batch_size): | CODE |
| LOW | omnivoice/eval/wer/fleurs.py | 91 | def read_language_mapping_from_tsv( | CODE |
| LOW | omnivoice/data/dataset.py | 63 | def prepare_data_manifests_from_json( | CODE |
| LOW | omnivoice/data/dataset.py | 158 | def webdataset_manifest_reader( | CODE |
| LOW | tests/test_lora.py | 57 | def test_training_config_lora_defaults(): | CODE |
| LOW | tests/test_lora.py | 68 | def test_training_config_lora_json_roundtrip(tmp_path): | CODE |
| LOW | tests/test_lora.py | 85 | def test_build_model_with_lora_freezes_base_and_keeps_io_heads_trainable(tmp_path): | CODE |
| LOW | tests/test_lora.py | 106 | def test_build_model_without_lora_is_plain_omnivoice(tmp_path): | CODE |
| LOW | tests/test_lora.py | 117 | def test_lora_forward_and_backward(tmp_path): | CODE |
| LOW | tests/test_lora.py | 140 | def test_lora_checkpoint_save_and_resume(tmp_path): | CODE |
| LOW | tests/test_lora.py | 179 | def test_merge_lora_produces_deployable_model(tmp_path): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/training/checkpoint.py | 85 | CODE | |
| LOW | omnivoice/training/trainer.py | 250 | CODE | |
| LOW | omnivoice/utils/text.py | 125 | CODE | |
| LOW | omnivoice/utils/text.py | 298 | CODE | |
| LOW | omnivoice/cli/infer_batch.py | 437 | CODE | |
| LOW | omnivoice/cli/demo.py | 152 | CODE | |
| LOW | omnivoice/scripts/extract_audio_tokens.py | 322 | CODE | |
| LOW | omnivoice/scripts/denoise_audio.py | 741 | CODE | |
| LOW | omnivoice/scripts/denoise_audio.py | 427 | CODE | |
| LOW | omnivoice/scripts/jsonl_to_webdataset.py | 196 | CODE | |
| LOW | omnivoice/scripts/jsonl_to_webdataset.py | 273 | CODE | |
| LOW | omnivoice/scripts/extract_audio_tokens_add_noise.py | 510 | CODE | |
| LOW | omnivoice/eval/mos/utmos.py | 166 | CODE | |
| LOW | omnivoice/eval/speaker_similarity/sim.py | 186 | CODE | |
| LOW | omnivoice/eval/wer/sensevoice.py | 230 | CODE | |
| LOW | omnivoice/eval/wer/minimax.py | 374 | CODE | |
| LOW | omnivoice/eval/wer/fleurs.py | 328 | CODE | |
| LOW | omnivoice/eval/wer/seedtts.py | 216 | CODE | |
| LOW | omnivoice/eval/wer/seedtts.py | 283 | CODE | |
| LOW | omnivoice/data/dataset.py | 63 | CODE | |
| LOW | omnivoice/data/dataset.py | 219 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | omnivoice/utils/text.py | 392 | Normalize numbers, dates, currency, etc. into their spoken form. Chinese is routed to WeTextProcessing's ``ZhNormal | STRING |
| HIGH | omnivoice/models/omnivoice.py | 1495 | 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 |
|---|---|---|---|---|
| HIGH | omnivoice/utils/text.py | 316 | except Exception: # pragma: no cover - lang_map should be importable | CODE |
| HIGH | omnivoice/scripts/denoise_audio.py | 671 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/__init__.py | 29 | __all__ = [ | CODE |
| LOW | omnivoice/training/checkpoint.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | omnivoice/training/builder.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | omnivoice/training/trainer.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | omnivoice/utils/text.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | omnivoice/utils/audio.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | omnivoice/utils/lora.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | omnivoice/models/omnivoice.py | 87 | logger = logging.getLogger(__name__) | CODE |
| LOW | omnivoice/cli/merge_lora.py | 44 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/models/omnivoice.py | 584 | CODE | |
| LOW | omnivoice/models/omnivoice.py | 1024 | CODE | |
| LOW | omnivoice/scripts/denoise_audio.py | 238 | CODE | |
| LOW | omnivoice/scripts/jsonl_to_webdataset.py | 273 | 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 | omnivoice/data/batching.py | 54 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/__init__.py | 22 | CODE | |
| LOW | omnivoice/__init__.py | 22 | CODE | |
| LOW | omnivoice/__init__.py | 22 | CODE | |
| LOW | omnivoice/__init__.py | 22 | CODE | |
| LOW | omnivoice/scripts/denoise_audio.py | 50 | CODE | |
| LOW | omnivoice/data/dataset.py | 38 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/README.md | 55 | ### Step 1: Prepare Your Data | COMMENT |
| LOW | examples/README.md | 68 | ### Step 2: Configure the Script | COMMENT |
| LOW | examples/README.md | 80 | ### Step 3: Run | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omnivoice/data/batching.py | 177 | # Check if adding this sample exceeds the batch token limit | COMMENT |