Translate the video from one language to another and embed dubbing & subtitles.
This report summarizes scanner evidence for jianchang512/pyvideotrans, a Python project with 19,310 GitHub stars. SynthScan examined 86,447 lines of code across 653 source files, recording 1464 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 24.0 (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? 478 finding(s).
Are imports declared and package/API names verified? 508 finding(s).
Are wrappers, guards, and repeated structures necessary? 780 finding(s).
Which changes need focused human review? 1464 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 1464 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | sp.py | 143 | CODE | |
| LOW | tests/test_help_ffmpeg_split.py | 3 | CODE | |
| LOW | tests/omnivoice-qwentts.py | 29 | CODE | |
| LOW | tests/omnivoice-qwentts.py | 31 | CODE | |
| LOW | tests/omnivoice-qwentts.py | 32 | CODE | |
| LOW | tests/omnivoice-qwentts.py | 32 | CODE | |
| LOW | tests/omnivoice-qwentts.py | 33 | CODE | |
| LOW | tests/omnivoice-qwentts.py | 33 | CODE | |
| LOW | tests/omnivoice-qwentts.py | 34 | CODE | |
| LOW | tests/test_actions_split.py | 2 | CODE | |
| LOW | tests/test_actions_split.py | 4 | CODE | |
| LOW | tests/test_prepare_audio_split.py | 2 | CODE | |
| LOW | tests/test_prepare_audio_split.py | 3 | CODE | |
| LOW | tests/test_trans_split.py | 1 | CODE | |
| LOW | tests/test_base_trans.py | 1 | CODE | |
| LOW | tests/test_base_recogn.py | 3 | CODE | |
| LOW | tests/test_ui_en_split.py | 1 | CODE | |
| LOW | tests/test_cli.py | 9 | CODE | |
| LOW | tests/test_help_srt_split.py | 1 | CODE | |
| LOW | tests/test_help_srt_split.py | 2 | CODE | |
| LOW | tests/test_help_srt_split.py | 3 | CODE | |
| LOW | tests/test_help_srt_split.py | 4 | CODE | |
| LOW | videotrans/ui/transapi.py | 5 | CODE | |
| LOW | videotrans/ui/chatterbox.py | 3 | CODE | |
| LOW | videotrans/ui/chatterbox.py | 5 | CODE | |
| LOW | videotrans/ui/ttsapi.py | 5 | CODE | |
| LOW | videotrans/ui/ttsapi.py | 7 | CODE | |
| LOW | videotrans/ui/refaudio.py | 3 | CODE | |
| LOW | videotrans/ui/refaudio.py | 5 | CODE | |
| LOW | videotrans/ui/openrouter.py | 10 | CODE | |
| LOW | videotrans/ui/qwenttslocal.py | 5 | CODE | |
| LOW | videotrans/ui/gptsovits.py | 5 | CODE | |
| LOW | videotrans/ui/gradiowin.py | 3 | CODE | |
| LOW | videotrans/ui/gradiowin.py | 5 | CODE | |
| LOW | videotrans/ui/gradiowin.py | 5 | CODE | |
| LOW | videotrans/ui/cosyvoice.py | 5 | CODE | |
| LOW | videotrans/ui/minimaxi.py | 5 | CODE | |
| LOW | videotrans/ui/minimaxi.py | 8 | CODE | |
| LOW | videotrans/ui/camb.py | 7 | CODE | |
| LOW | videotrans/ui/en.py | 3 | CODE | |
| LOW | videotrans/ui/en.py | 4 | CODE | |
| LOW | videotrans/ui/en.py | 4 | CODE | |
| LOW | videotrans/ui/en.py | 5 | CODE | |
| LOW | videotrans/ui/en.py | 7 | CODE | |
| LOW | videotrans/ui/fishtts.py | 3 | CODE | |
| LOW | videotrans/ui/fishtts.py | 5 | CODE | |
| LOW | videotrans/winform/fn_hebingsrt.py | 10 | CODE | |
| LOW | videotrans/winform/fn_hebingsrt.py | 13 | CODE | |
| LOW | videotrans/winform/fn_videoandsrt.py | 16 | CODE | |
| LOW | videotrans/winform/fn_videoandsrt.py | 21 | CODE | |
| LOW | videotrans/winform/ai302.py | 6 | CODE | |
| LOW | videotrans/winform/ai302.py | 7 | CODE | |
| LOW | videotrans/winform/fn_audiofromvideo.py | 10 | CODE | |
| LOW | videotrans/winform/fn_audiofromvideo.py | 14 | CODE | |
| LOW | videotrans/winform/openaitts.py | 7 | CODE | |
| LOW | videotrans/winform/transapi.py | 4 | CODE | |
| LOW | videotrans/winform/chatterbox.py | 9 | CODE | |
| LOW | videotrans/winform/ttsapi.py | 8 | CODE | |
| LOW | videotrans/winform/parakeet.py | 6 | CODE | |
| LOW | videotrans/winform/api_route.py | 4 | CODE | |
| 414 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | webui.py | 60 | except Exception: | CODE |
| HIGH | webui.py | 79 | except Exception: | CODE |
| HIGH | webui.py | 200 | except Exception: | CODE |
| HIGH | sp.py | 52 | except: | CODE |
| HIGH | sp.py | 233 | except AttributeError: | CODE |
| HIGH | sp.py | 173 | except Exception: | CODE |
| HIGH | cli.py | 592 | except RuntimeError: | CODE |
| HIGH | tests/test_taskcfg.py | 75 | except TypeError: | CODE |
| HIGH | tests/test_excepts.py | 70 | except VideoTransError: | CODE |
| HIGH | tests/test_excepts.py | 78 | except VideoTransError: | CODE |
| HIGH | videotrans/ui/fn_peiyinrole.py | 205 | except Exception: | CODE |
| HIGH | videotrans/ui/info.py | 158 | except Exception: | CODE |
| HIGH | videotrans/winform/fn_videoandsrt.py | 173 | except (TypeError,ValueError): | CODE |
| HIGH | videotrans/winform/fn_watermark.py | 175 | except (TypeError,ValueError): | CODE |
| HIGH | videotrans/winform/fn_watermark.py | 179 | except (TypeError,ValueError): | CODE |
| HIGH | videotrans/winform/fn_watermark.py | 185 | except (ValueError,AttributeError,IndexError,TypeError): | CODE |
| HIGH | videotrans/winform/fn_vas.py | 480 | except (TypeError, ValueError): | CODE |
| HIGH | videotrans/util/_ffmpeg_misc.py | 27 | except Exception: | CODE |
| HIGH | videotrans/util/help_misc.py | 394 | except Exception: | CODE |
| HIGH | videotrans/util/help_misc.py | 443 | except Exception: | CODE |
| HIGH | videotrans/util/help_misc.py | 584 | except (OSError, NotImplementedError, PermissionError): | CODE |
| HIGH | videotrans/util/_ffmpeg_hwcodec.py | 99 | except OSError: | CODE |
| HIGH | videotrans/util/help_down.py | 438 | except Exception: | CODE |
| HIGH | videotrans/util/help_role.py | 197 | except (OSError, json.JSONDecodeError): | CODE |
| HIGH | videotrans/util/help_role.py | 170 | except (OSError, json.JSONDecodeError): | CODE |
| HIGH | videotrans/util/help_role.py | 215 | except (OSError, json.JSONDecodeError): | CODE |
| HIGH | videotrans/configure/_app_cfg.py | 85 | except KeyError: | CODE |
| HIGH | videotrans/configure/_redact.py | 72 | except Exception: | CODE |
| HIGH | videotrans/configure/_app_params.py | 56 | except (OSError, json.JSONDecodeError): | CODE |
| HIGH | videotrans/configure/excepts.py | 215 | except AttributeError: | CODE |
| HIGH | videotrans/configure/base.py | 300 | except OSError: | CODE |
| HIGH | videotrans/component/onlyone_set_editdubb.py | 352 | except OSError: | CODE |
| HIGH | videotrans/component/onlyone_set_editdubb.py | 797 | except Exception: | CODE |
| HIGH | videotrans/component/onlyone_set_editdubb.py | 868 | except Exception: | CODE |
| HIGH | videotrans/component/onlyone_set_editdubb.py | 872 | except Exception: | CODE |
| HIGH | videotrans/component/onlyone_set_editdubb.py | 749 | except Exception: | CODE |
| HIGH | videotrans/component/onlyone_set_editdubb.py | 806 | except (TypeError, RuntimeError): | CODE |
| HIGH | videotrans/component/onlyone_set_editdubb.py | 820 | except (TypeError, RuntimeError): | CODE |
| HIGH | videotrans/component/onlyone_set_editdubb.py | 1017 | except RuntimeError: | CODE |
| HIGH | videotrans/component/onlyone_set_editdubb.py | 1024 | except RuntimeError: | CODE |
| HIGH | videotrans/component/onlyone_set_editdubb.py | 864 | except (TypeError, RuntimeError): | CODE |
| HIGH | videotrans/component/onlyone_set_recogn.py | 267 | except (TypeError, RuntimeError): | CODE |
| HIGH | videotrans/component/onlyone_set_recogn.py | 303 | except Exception: | CODE |
| HIGH | videotrans/component/onlyone_set_recogn.py | 247 | except BaseException: | CODE |
| HIGH | videotrans/component/onlyone_set_recogn.py | 298 | except (TypeError, RuntimeError): | CODE |
| HIGH | videotrans/component/onlyone_set_recogn2.py | 253 | except (TypeError, RuntimeError): | CODE |
| HIGH | videotrans/component/onlyone_set_recogn2.py | 260 | except Exception: | CODE |
| HIGH | videotrans/component/onlyone_set_recogn2.py | 289 | except Exception: | CODE |
| HIGH | videotrans/component/onlyone_set_recogn2.py | 233 | except BaseException: | CODE |
| HIGH | videotrans/component/onlyone_set_recogn2.py | 284 | except (TypeError, RuntimeError): | CODE |
| HIGH | videotrans/component/onlyone_set_recogn2.py | 438 | except RuntimeError: | CODE |
| HIGH | videotrans/component/onlyone_set_recogn2.py | 444 | except RuntimeError: | CODE |
| HIGH | videotrans/component/onlyone_set_role.py | 696 | except (TypeError, RuntimeError): | CODE |
| HIGH | videotrans/component/onlyone_set_role.py | 728 | except Exception: | CODE |
| HIGH | videotrans/component/onlyone_set_role.py | 677 | except BaseException: | CODE |
| HIGH | videotrans/component/onlyone_set_role.py | 724 | except (TypeError, RuntimeError): | CODE |
| HIGH | videotrans/translator/_hymt2.py | 80 | except BaseException: | CODE |
| HIGH | videotrans/confuciustts/frontend/text_normalizer.py | 40 | except ImportError: | CODE |
| HIGH | videotrans/confuciustts/cli/s2a_lightning.py | 168 | except ValueError: | CODE |
| HIGH | videotrans/tts/_base.py | 267 | except (TypeError,ValueError): | CODE |
| 23 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | webui.py | 229 | def _recogn_index_from_display(d): | CODE |
| LOW | webui.py | 236 | def _translate_index_from_display(d): | CODE |
| LOW | sp.py | 181 | def check_and_run_external_script(): | CODE |
| LOW | tests/test_main_win_split.py | 5 | def test_mixin_modules_importable(): | CODE |
| LOW | tests/test_main_win_split.py | 21 | def test_main_win_class_hierarchy(): | CODE |
| LOW | tests/test_main_win_split.py | 30 | def test_main_win_has_expected_methods(): | CODE |
| LOW | tests/test_main_win_split.py | 50 | def test_main_win_package_importable(): | CODE |
| LOW | tests/test_help_ffmpeg_split.py | 13 | def test_extract_concise_error(self): | CODE |
| LOW | tests/test_help_ffmpeg_split.py | 17 | def test_get_filepath_from_cmd(self): | CODE |
| LOW | tests/test_help_ffmpeg_split.py | 37 | def test_get_video_ms_noaudio(self): | CODE |
| LOW | tests/test_help_ffmpeg_split.py | 53 | def test_change_speed_rubberband(self): | CODE |
| LOW | tests/test_help_ffmpeg_split.py | 57 | def test_precise_speed_up_audio(self): | CODE |
| LOW | tests/test_help_ffmpeg_split.py | 85 | def test_all_names_importable(self): | CODE |
| LOW | tests/test_help_ffmpeg_split.py | 169 | def test_format_video_returns_input_file(self, tmp_path): | CODE |
| LOW | tests/test_help_ffmpeg_split.py | 180 | def test_format_video_with_target_dir(self, tmp_path): | CODE |
| LOW⚡ | tests/test_config_split.py | 40 | def test_temp_root_importable(self): | CODE |
| LOW⚡ | tests/test_config_split.py | 49 | def test_translate_cache_importable(self): | CODE |
| LOW⚡ | tests/test_config_split.py | 58 | def test_tr_returns_key_on_missing(self): | CODE |
| LOW | tests/test_config_split.py | 80 | def test_app_cfg_has_expected_attrs(self): | CODE |
| LOW | tests/test_config_split.py | 93 | def test_app_cfg_rm_uuid_none(self): | CODE |
| LOW | tests/test_config_split.py | 101 | def test_settings_has_expected_attrs(self): | CODE |
| LOW | tests/test_config_split.py | 117 | def test_params_has_expected_attrs(self): | CODE |
| LOW | tests/test_config_split.py | 141 | def test_push_queue_accessible(self): | CODE |
| LOW | tests/test_config_split.py | 145 | def test_update_logging_level_accessible(self): | CODE |
| LOW⚡ | tests/test_job_helpers.py | 16 | def test_none_index_returns_dash(self): | CODE |
| LOW⚡ | tests/test_job_helpers.py | 19 | def test_out_of_range_returns_dash(self): | CODE |
| LOW⚡ | tests/test_job_helpers.py | 22 | def test_negative_index_returns_last_element(self): | CODE |
| LOW⚡ | tests/test_job_helpers.py | 28 | def test_returns_dash_for_none(self): | CODE |
| LOW⚡ | tests/test_job_helpers.py | 31 | def test_returns_name_for_valid_index(self): | CODE |
| LOW⚡ | tests/test_job_helpers.py | 41 | def test_returns_dash_for_none(self): | CODE |
| LOW⚡ | tests/test_job_helpers.py | 44 | def test_returns_name_for_valid_index(self): | CODE |
| LOW⚡ | tests/test_job_helpers.py | 51 | def test_returns_dash_for_none(self): | CODE |
| LOW⚡ | tests/test_job_helpers.py | 54 | def test_returns_name_for_valid_index(self): | CODE |
| LOW | tests/test_azerbaijani_support.py | 5 | def test_azerbaijani_is_available_in_main_language_codes(): | CODE |
| LOW | tests/test_azerbaijani_support.py | 22 | def test_azerbaijani_edge_voices_are_exposed(): | CODE |
| LOW | tests/test_audexum_recogn.py | 55 | def test_request_shape_and_srt_mapping(tmp_path, key): | CODE |
| LOW | tests/test_audexum_recogn.py | 72 | def test_auto_language_is_omitted(tmp_path, key): | CODE |
| LOW | tests/test_audexum_recogn.py | 78 | def test_empty_text_is_dropped(tmp_path, key): | CODE |
| LOW | tests/test_audexum_recogn.py | 90 | def test_no_speech_clip_is_skipped(tmp_path, key): | CODE |
| LOW | tests/test_audexum_recogn.py | 106 | def test_out_of_credits_tells_user_to_top_up(tmp_path, key, code, body): | CODE |
| LOW⚡ | tests/test_contants.py | 23 | def test_punc_flags_contains_common_chars(self): | CODE |
| LOW⚡ | tests/test_contants.py | 31 | def test_half_flags_no_end_punctuation(self): | CODE |
| LOW⚡ | tests/test_contants.py | 38 | def test_end_flags_are_sentence_terminators(self): | CODE |
| LOW⚡ | tests/test_contants.py | 48 | def test_has_common_languages(self): | CODE |
| LOW⚡ | tests/test_contants.py | 57 | def test_listen_text_is_non_empty(self): | CODE |
| LOW⚡ | tests/test_contants.py | 63 | def test_common_models_present(self): | CODE |
| LOW⚡ | tests/test_contants.py | 71 | def test_model_values_are_non_empty(self): | CODE |
| LOW⚡ | tests/test_contants.py | 77 | def test_contains_expected_domains(self): | CODE |
| LOW⚡ | tests/test_contants.py | 81 | def test_formed_into_env_string(self): | CODE |
| LOW⚡ | tests/test_contants.py | 88 | def test_non_word_matches_punctuation(self): | CODE |
| LOW⚡ | tests/test_contants.py | 98 | def test_non_word_does_not_match_text(self): | CODE |
| LOW⚡ | tests/test_contants.py | 108 | def test_audio_exits_has_common_formats(self): | CODE |
| LOW⚡ | tests/test_contants.py | 114 | def test_video_exts_has_common_formats(self): | CODE |
| LOW⚡ | tests/test_actions_split.py | 8 | def test_actions_check_importable(self): | CODE |
| LOW⚡ | tests/test_actions_split.py | 12 | def test_actions_config_importable(self): | CODE |
| LOW⚡ | tests/test_actions_split.py | 16 | def test_actions_task_importable(self): | CODE |
| LOW⚡ | tests/test_actions_split.py | 24 | def test_actions_base_mode_importable(self): | CODE |
| LOW⚡ | tests/test_actions_split.py | 28 | def test_actions_base_file_importable(self): | CODE |
| LOW⚡ | tests/test_actions_split.py | 32 | def test_actions_base_misc_importable(self): | CODE |
| LOW⚡ | tests/test_actions_split.py | 36 | def test_actions_base_importable(self): | CODE |
| 212 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | webui.py | 75 | def _load_settings() -> dict: | CODE |
| MEDIUM | webui.py | 196 | def _load_ass_style(): | CODE |
| LOW⚡ | webui.py | 60 | except Exception: | CODE |
| LOW | webui.py | 79 | except Exception: | CODE |
| LOW | webui.py | 200 | except Exception: | CODE |
| LOW | webui.py | 1665 | except Exception: | STRING |
| LOW | webui.py | 1867 | except Exception: | STRING |
| LOW | webui.py | 1898 | except Exception: | STRING |
| LOW | webui.py | 2144 | except Exception as e: | STRING |
| LOW | webui.py | 2221 | except Exception as e: | STRING |
| LOW | sp.py | 130 | except Exception as e: | CODE |
| LOW | sp.py | 158 | except Exception as e: | CODE |
| LOW | sp.py | 173 | except Exception: | CODE |
| LOW | sp.py | 262 | except Exception as e: | CODE |
| LOW⚡ | cli.py | 275 | except Exception as e: | CODE |
| LOW | cli.py | 212 | except Exception as e: | CODE |
| LOW | cli.py | 231 | except Exception as e: | CODE |
| LOW | cli.py | 249 | except Exception as e: | CODE |
| LOW | cli.py | 583 | except Exception as e: | CODE |
| LOW⚡ | tests/test_winform_split.py | 23 | except Exception as e: | CODE |
| LOW | tests/test_excepts.py | 100 | except Exception as e: | CODE |
| MEDIUM | tests/test_excepts.py | 42 | def test_raises_and_catches(self): | CODE |
| LOW | docs/architecture.md | 175 | except Exception as e: | CODE |
| LOW | videotrans/__init__.py | 37 | except Exception as e: | CODE |
| LOW | videotrans/ui/fn_peiyinrole.py | 151 | except Exception as e: | CODE |
| LOW | videotrans/ui/fn_peiyinrole.py | 205 | except Exception: | CODE |
| LOW | videotrans/ui/info.py | 158 | except Exception: | CODE |
| LOW | videotrans/winform/fn_hebingsrt.py | 44 | except Exception as e: | CODE |
| MEDIUM | videotrans/winform/fn_hebingsrt.py | 29 | def run(self): | CODE |
| LOW | videotrans/winform/fn_videoandsrt.py | 126 | except Exception as e: | CODE |
| LOW | videotrans/winform/fn_audiofromvideo.py | 58 | except Exception as e: | CODE |
| MEDIUM | videotrans/winform/fn_audiofromvideo.py | 29 | def run(self): | CODE |
| LOW | videotrans/winform/fn_subtitlescover.py | 66 | except Exception as e: | CODE |
| MEDIUM | videotrans/winform/fn_subtitlescover.py | 32 | def run(self): | CODE |
| LOW | videotrans/winform/fn_watermark.py | 114 | except Exception as e: | CODE |
| LOW | videotrans/winform/fn_recogn.py | 188 | except Exception as e: | CODE |
| LOW | videotrans/winform/fn_vas.py | 388 | except Exception as e: | CODE |
| LOW | videotrans/winform/camb.py | 47 | except Exception as e: | CODE |
| LOW | videotrans/winform/fn_formatcover.py | 49 | except Exception as e: | CODE |
| MEDIUM | videotrans/winform/fn_formatcover.py | 33 | def run(self): | CODE |
| LOW | videotrans/winform/elevenlabs.py | 31 | except Exception as e: | CODE |
| LOW | videotrans/winform/elevenlabs.py | 65 | except Exception as e: | CODE |
| MEDIUM | videotrans/winform/elevenlabs.py | 25 | def run(self): | CODE |
| LOW | videotrans/winform/fn_videoandaudio.py | 125 | except Exception as e: | CODE |
| LOW | videotrans/winform/fn_hunliu.py | 43 | except Exception as e: | CODE |
| MEDIUM | videotrans/winform/fn_hunliu.py | 29 | def run(self): | CODE |
| LOW | videotrans/mosstts/onnx_tts_runtime.py | 505 | except Exception as exc: | CODE |
| LOW | videotrans/mosstts/text_normalization_pipeline.py | 91 | except Exception as exc: | CODE |
| LOW | videotrans/util/_ffmpeg_runner.py | 78 | except Exception as e: | CODE |
| LOW | videotrans/util/_ffprobe.py | 101 | except Exception as e: | CODE |
| LOW | videotrans/util/_ffprobe.py | 162 | except Exception as e: | CODE |
| LOW | videotrans/util/_ffprobe.py | 169 | except Exception as e: | CODE |
| LOW | videotrans/util/checkgpu.py | 18 | except Exception as e: | CODE |
| MEDIUM | videotrans/util/checkgpu.py | 11 | def run(self): | CODE |
| LOW | videotrans/util/_ffmpeg_misc.py | 27 | except Exception: | CODE |
| LOW | videotrans/util/TestSrtTrans.py | 26 | except Exception as e: | CODE |
| MEDIUM | videotrans/util/TestSrtTrans.py | 15 | def run(self): | CODE |
| LOW | videotrans/util/_srt_ass.py | 41 | except Exception as e: | CODE |
| LOW | videotrans/util/_srt_ass.py | 108 | except Exception as e: | CODE |
| LOW | videotrans/util/_srt_ass.py | 129 | except Exception as e: | CODE |
| 235 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | webui.py | 27 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webui.py | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webui.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webui.py | 35 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webui.py | 48 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webui.py | 50 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webui.py | 96 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webui.py | 98 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webui.py | 104 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webui.py | 106 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 137 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 139 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 212 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 214 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 259 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 261 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 924 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 926 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 1312 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 1314 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 1455 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 1457 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 1525 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 1527 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 1555 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui.py | 1557 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | cli.py | 174 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | cli.py | 176 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | cli.py | 280 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | cli.py | 282 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 35 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 195 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 197 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 318 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 320 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 385 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 387 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 412 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 414 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 496 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 498 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 518 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | cli.py | 520 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 40 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 42 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 76 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 78 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 133 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 135 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 509 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 511 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 555 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 557 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 594 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 596 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_cli.py | 15 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_cli.py | 17 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_cli.py | 270 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_cli.py | 272 | # =========================================================================== | COMMENT |
| 23 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | webui.py | 927 | CODE | |
| LOW | webui.py | 1315 | CODE | |
| LOW | webui.py | 1529 | CODE | |
| LOW | webui.py | 1558 | CODE | |
| LOW | webui.py | 1794 | CODE | |
| LOW | webui.py | 1912 | CODE | |
| LOW | sp.py | 163 | CODE | |
| LOW | cli.py | 521 | CODE | |
| LOW | videotrans/ui/_setup_menus.py | 8 | CODE | |
| LOW | videotrans/ui/fn_peiyinrole.py | 97 | CODE | |
| LOW | videotrans/ui/fn_peiyinrole.py | 176 | CODE | |
| LOW | videotrans/winform/fn_videoandsrt.py | 5 | CODE | |
| LOW | videotrans/winform/fn_videoandsrt.py | 43 | CODE | |
| LOW | videotrans/winform/fn_videoandsrt.py | 62 | CODE | |
| LOW | videotrans/winform/setini.py | 4 | CODE | |
| LOW | videotrans/winform/setini.py | 11 | CODE | |
| LOW | videotrans/winform/fn_subtitlescover.py | 3 | CODE | |
| LOW | videotrans/winform/fn_subtitlescover.py | 32 | CODE | |
| LOW | videotrans/winform/fn_recogn.py | 3 | CODE | |
| LOW | videotrans/winform/fn_recogn.py | 31 | CODE | |
| LOW | videotrans/winform/fn_vas.py | 12 | CODE | |
| LOW | videotrans/winform/fn_vas.py | 419 | CODE | |
| LOW | videotrans/winform/fn_vas.py | 172 | CODE | |
| LOW | videotrans/winform/fn_separate.py | 3 | CODE | |
| LOW | videotrans/winform/fn_separate.py | 23 | CODE | |
| LOW | videotrans/winform/fn_peiyinrole.py | 3 | CODE | |
| LOW | videotrans/winform/fn_peiyinrole.py | 52 | CODE | |
| LOW | videotrans/winform/fn_videoandaudio.py | 3 | CODE | |
| LOW | videotrans/winform/fn_videoandaudio.py | 133 | CODE | |
| LOW | videotrans/winform/fn_videoandaudio.py | 36 | CODE | |
| LOW | videotrans/winform/fn_videoandaudio.py | 59 | CODE | |
| LOW | videotrans/winform/fn_peiyin.py | 4 | CODE | |
| LOW | videotrans/winform/fn_peiyin.py | 53 | CODE | |
| LOW | videotrans/winform/fn_fanyisrt.py | 4 | CODE | |
| LOW | videotrans/winform/fn_fanyisrt.py | 45 | CODE | |
| LOW | videotrans/winform/fn_fanyisrt.py | 211 | CODE | |
| LOW | videotrans/winform/fn_fanyisrt.py | 240 | CODE | |
| LOW | videotrans/mosstts/onnx_tts_runtime.py | 387 | CODE | |
| LOW | videotrans/mosstts/onnx_tts_runtime.py | 501 | CODE | |
| LOW | videotrans/mosstts/ort_cpu_runtime.py | 660 | CODE | |
| LOW | videotrans/util/_ffprobe.py | 48 | CODE | |
| LOW | videotrans/util/cn_tn.py | 565 | CODE | |
| LOW | videotrans/util/cn_tn.py | 651 | CODE | |
| LOW | videotrans/util/cn_tn.py | 439 | CODE | |
| LOW | videotrans/util/cn_tn.py | 586 | CODE | |
| LOW | videotrans/util/cn_tn.py | 620 | CODE | |
| LOW | videotrans/util/helper_supertonic.py | 390 | CODE | |
| LOW | videotrans/util/_srt_ass.py | 9 | CODE | |
| LOW | videotrans/util/_ffmpeg_audio.py | 158 | CODE | |
| LOW | videotrans/util/_srt_parse.py | 99 | CODE | |
| LOW | videotrans/util/_srt_parse.py | 211 | CODE | |
| LOW | videotrans/util/en_tn.py | 68 | CODE | |
| LOW | videotrans/util/en_tn.py | 210 | CODE | |
| LOW | videotrans/util/help_misc.py | 181 | CODE | |
| LOW | videotrans/util/help_misc.py | 351 | CODE | |
| LOW | videotrans/util/_ffmpeg_hwcodec.py | 18 | CODE | |
| LOW | videotrans/util/help_down.py | 45 | CODE | |
| LOW | videotrans/util/help_down.py | 189 | CODE | |
| LOW | videotrans/util/help_down.py | 288 | CODE | |
| LOW | videotrans/util/help_down.py | 402 | CODE | |
| 91 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | videotrans/winform/fn_vas.py | 41 | CODE | |
| LOW | videotrans/mosstts/onnx_tts_runtime.py | 597 | CODE | |
| LOW | videotrans/util/cn_tn.py | 651 | CODE | |
| LOW | videotrans/util/cn_tn.py | 1059 | CODE | |
| LOW | videotrans/configure/_app_settings.py | 216 | CODE | |
| LOW | …transcribe_diarize/modeling_moss_transcribe_diarize.py | 205 | CODE | |
| LOW | …transcribe_diarize/modeling_moss_transcribe_diarize.py | 291 | CODE | |
| LOW | …transcribe_diarize/modeling_moss_transcribe_diarize.py | 351 | CODE | |
| LOW | videotrans/moss_transcribe_diarize/inference_utils.py | 172 | CODE | |
| LOW | videotrans/translator/_deeplx.py | 61 | CODE | |
| LOW | videotrans/confuciustts/llm/llm.py | 65 | CODE | |
| LOW | videotrans/confuciustts/llm/llm.py | 226 | CODE | |
| LOW | videotrans/confuciustts/utils/audio_features.py | 45 | CODE | |
| LOW | videotrans/confuciustts/cli/inference.py | 259 | CODE | |
| LOW | videotrans/confuciustts/flow/modules.py | 21 | CODE | |
| LOW | videotrans/confuciustts/flow/flow_matching.py | 44 | CODE | |
| LOW | videotrans/confuciustts/flow/DiT/dit.py | 88 | CODE | |
| LOW | videotrans/task/_rate.py | 229 | CODE | |
| LOW | videotrans/codes/model.py | 26 | CODE | |
| LOW | videotrans/codes/model.py | 456 | CODE | |
| LOW | videotrans/recognition/__init__.py | 93 | CODE | |
| LOW | videotrans/external/bigvgan/meldataset.py | 191 | CODE | |
| LOW | …external/bigvgan/alias_free_activation/torch/filter.py | 101 | CODE | |
| LOW | videotrans/external/campplus/DTDNN.py | 48 | CODE | |
| LOW | videotrans/external/campplus/layers.py | 253 | CODE | |
| LOW | videotrans/process/stt_paraformer.py | 12 | CODE | |
| LOW | videotrans/process/stt_qwen.py | 14 | CODE | |
| LOW | videotrans/process/stt_faster.py | 14 | CODE | |
| LOW | videotrans/process/vad.py | 116 | CODE | |
| LOW | videotrans/process/stt_openai.py | 12 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | webui.py | 272 | "placeholder": tr("Leave empty to use official API"), | CODE |
| LOW | webui.py | 279 | "placeholder": "API Key", | CODE |
| LOW | webui.py | 292 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 304 | "placeholder": "API Key", | CODE |
| LOW | webui.py | 311 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 330 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 350 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 362 | "placeholder": tr("e.g. http://127.0.0.1:11434/v1"), | CODE |
| LOW | webui.py | 369 | "placeholder": tr("Usually fill in no-key"), | CODE |
| LOW | webui.py | 382 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 400 | "placeholder": tr("Leave empty to use official API"), | CODE |
| LOW | webui.py | 448 | "placeholder": tr("Must start with qwen-mt"), | CODE |
| LOW | webui.py | 455 | "placeholder": tr("Must start with qwen3-asr"), | CODE |
| LOW | webui.py | 473 | "placeholder": tr("Enter endpoint name"), | CODE |
| LOW | webui.py | 497 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 516 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 535 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 559 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 578 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 602 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 621 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 636 | "placeholder": ""}, | CODE |
| LOW | webui.py | 654 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 673 | "placeholder": tr("Leave empty to use official API"), | CODE |
| LOW | webui.py | 686 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 744 | "placeholder": tr("Leave empty to use official API"), | CODE |
| LOW | webui.py | 757 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 775 | "placeholder": tr("e.g. eastasia or full URL"), | CODE |
| LOW | webui.py | 855 | "placeholder": tr("Enter model name"), | CODE |
| LOW | webui.py | 1345 | placeholder=f.get("placeholder", ""), | CODE |
| LOW⚡ | videotrans/codes/model.py | 403 | fake_token = [0] * fake_token_len_i | CODE |
| LOW⚡ | videotrans/codes/model.py | 405 | source_ids += fake_token | CODE |
| LOW⚡ | videotrans/codes/model.py | 406 | fbank_mask_i += [1] * len(fake_token) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | videotrans/translator/_constants.py | 0 | 如果想新增渠道 1. 定义一个常量,值为以下递增的序号 2. 在 id_name_dict 中新增一个键值对,键为新增的常量,值是 channelprovider 实例 3. 当前目录下定义一个实际实现代码文件,可直接复制已有渠道文件 | STRING |
| HIGH | videotrans/tts/_constants.py | 0 | 如果想新增渠道 1. 定义一个常量,值为以下递增的序号 2. 在 id_name_dict 中新增一个键值对,键为新增的常量,值是 channelprovider 实例 3. 当前目录下定义一个实际实现代码文件,可直接复制已有渠道文件 | STRING |
| HIGH | videotrans/recognition/_constants.py | 0 | 如果想新增渠道 1. 定义一个常量,值为以下递增的序号 2. 在 id_name_dict 中新增一个键值对,键为新增的常量,值是 channelprovider 实例 3. 当前目录下定义一个实际实现代码文件,可直接复制已有渠道文件 | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | videotrans/winform/fn_vas.py | 281 | if app_cfg.exit_soft: return | COMMENT |
| LOW | videotrans/util/cn_tn.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | videotrans/util/cn_tn.py | 841 | self.date = date | COMMENT |
| LOW | videotrans/util/en_tn.py | 1 | # 本代码复制自 https://github.com/OpenDocCN/python-code-anls/blob/master/docs/hf-tfm/models----clvp----number_normalizer.py.md | COMMENT |
| LOW | videotrans/configure/_languages_dict.py | 321 | "hye": "arm", | COMMENT |
| LOW | videotrans/confuciustts/llm/text_encoder.py | 1 | # Copyright 2026 The Qwen team, Alibaba Group and the HuggingFace Inc. team. All rights reserved. | COMMENT |
| LOW | videotrans/confuciustts/llm/speaker_encoder.py | 1 | # Copyright 2026 The Qwen team, Alibaba Group and the HuggingFace Inc. team. All rights reserved. | COMMENT |
| LOW | videotrans/confuciustts/frontend/text_normalizer.py | 1 | # Copyright (c) 2024 Alibaba Inc (authors: Xiang Lyu, Zhihao Du) | COMMENT |
| LOW | videotrans/confuciustts/flow/flow.py | 1 | # Copyright (c) 2024 Alibaba Inc (authors: Xiang Lyu, Zhihao Du) | COMMENT |
| LOW | videotrans/confuciustts/flow/length_regulator.py | 1 | # Copyright (c) 2024 Alibaba Inc (authors: Xiang Lyu, Zhihao Du) | COMMENT |
| LOW | videotrans/confuciustts/flow/flow_matching.py | 1 | # Copyright (c) 2024 Alibaba Inc (authors: Xiang Lyu, Zhihao Du) | COMMENT |
| LOW | videotrans/task/_rate.py | 641 | # 如果音频时长小于视频时长,末尾加静音 | COMMENT |
| LOW | videotrans/task/_rate.py | 661 | # cmd = ['-y', '-i', os.path.basename(self.novoice_mp4), | COMMENT |
| LOW | …s/external/bigvgan/alias_free_activation/cuda/compat.h | 21 | #ifndef TORCH_CHECK | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | cli.py | 180 | def set_lang(lang: str) -> None: | CODE |
| LOW | videotrans/mosstts/text_normalization_pipeline.py | 51 | def _set_state(self, *, state: str, message: str, error: str | None = None) -> None: | CODE |
| LOW | videotrans/mosstts/ort_cpu_runtime.py | 827 | __all__ = [ | CODE |
| LOW | videotrans/mosstts/moss_tts_nano/__init__.py | 1 | __all__ = ["__version__"] | CODE |
| LOW | videotrans/util/help_srt.py | 9 | __all__ = [ | CODE |
| LOW | videotrans/util/help_ffmpeg.py | 13 | __all__ = [ | CODE |
| LOW | videotrans/moss_transcribe_diarize/__init__.py | 17 | __all__ = [ | CODE |
| LOW | …anscribe_diarize/processing_moss_transcribe_diarize.py | 273 | __all__ = ["MossTranscribeDiarizeProcessor"] | CODE |
| LOW | videotrans/moss_transcribe_diarize/transcript_parser.py | 289 | __all__ = [ | CODE |
| LOW | videotrans/confuciustts/__init__.py | 10 | __all__ = ["__version__"] | CODE |
| LOW | videotrans/confuciustts/cli/__init__.py | 3 | __all__ = ["ConfuciusTTS"] | CODE |
| LOW | videotrans/external/campplus/__init__.py | 3 | __all__ = ["CAMPPlus"] | CODE |
| LOW | videotrans/process/prepare_audio.py | 6 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/whisper_net_setup.md | 155 | ## Step 1: Download DLL Files | COMMENT |
| LOW | docs/whisper_net_setup.md | 201 | ## Step 2: Download Speech Model | COMMENT |
| LOW | docs/whisper_net_setup.md | 209 | ## Step 3: Verify File Structure | COMMENT |
| LOW | docs/whisper_net_setup.md | 240 | ## Step 4: Start Using | COMMENT |
| LOW⚡ | videotrans/process/stt_qwen.py | 88 | # Step 2: Prepare alignment inputs | COMMENT |
| LOW⚡ | videotrans/process/stt_qwen.py | 95 | # Step 3: Run forced aligner | COMMENT |
| LOW⚡ | videotrans/process/stt_qwen.py | 98 | # Step 4: Decode timestamps | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | videotrans/tts/_azure.py | 5 | from azure.core.exceptions import ResourceExistsError, ClientAuthenticationError, ResourceNotFoundError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | videotrans/process/stt_qwen.py | 88 | # Step 2: Prepare alignment inputs | COMMENT |
| LOW⚡ | videotrans/process/stt_qwen.py | 95 | # Step 3: Run forced aligner | COMMENT |
| LOW⚡ | videotrans/process/stt_qwen.py | 98 | # Step 4: Decode timestamps | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …nal/bigvgan/alias_free_activation/cuda/activation1d.py | 32 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ns/external/bigvgan/alias_free_activation/cuda/load.py | 18 | # Check if cuda 11 is installed for compute capability 8.0 | COMMENT |