Repository Analysis

Huanshere/VideoLingo

Netflix-level subtitle cutting, translation, alignment, and even dubbing - one-click fully automated AI video subtitle team | Netflix级字幕切割、翻译、对齐、甚至加上配音,一键全自动视频搬运AI字幕组

22.6 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of Huanshere/VideoLingo, a Python project with 18,287 GitHub stars. SynthScan v2.0 examined 17,153 lines of code across 122 source files, recording 258 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 22.6 places this repository in the Moderate AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

22.6
Adjusted Score
22.6
Raw Score
100%
Time Factor
2026-08-23
Last Push
18.3K
Stars
Python
Language
17.2K
Lines of Code
122
Files
258
Pattern Hits
2026-08-29
Scan Date
0.02
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 2MEDIUM 58LOW 198

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 258 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Decorative Section Separators40 hits · 127 pts
SeverityFileLineSnippetContext
MEDIUMconfig.yaml3# -------------------COMMENT
MEDIUMconfig.yaml6# -------------------COMMENT
MEDIUMcore/prompts.py4## ================================================================COMMENT
MEDIUMcore/prompts.py51## ================================================================COMMENT
MEDIUMcore/prompts.py126## ================================================================STRING
MEDIUMcore/prompts.py250## ================================================================STRING
MEDIUMcore/prompts.py300## ================================================================STRING
MEDIUMcore/prompts.py341## ================================================================STRING
MEDIUMcore/spacy_utils/load_nlp_model.py28# --------------------COMMENT
MEDIUMcore/spacy_utils/load_nlp_model.py30# --------------------COMMENT
MEDIUMcore/utils/models.py1# ------------------------------------------COMMENT
MEDIUMcore/utils/models.py3# ------------------------------------------COMMENT
MEDIUMcore/utils/models.py16# ------------------------------------------COMMENT
MEDIUMcore/utils/models.py18# ------------------------------------------COMMENT
MEDIUMcore/utils/models.py28# ------------------------------------------COMMENT
MEDIUMcore/utils/models.py31# ------------------------------------------COMMENT
MEDIUMcore/utils/models.py35# ------------------------------------------COMMENT
MEDIUMcore/utils/models.py37# ------------------------------------------COMMENT
MEDIUMcore/utils/decorator.py6# ------------------------------COMMENT
MEDIUMcore/utils/decorator.py8# ------------------------------COMMENT
MEDIUMcore/utils/decorator.py30# ------------------------------COMMENT
MEDIUMcore/utils/decorator.py32# ------------------------------COMMENT
MEDIUMcore/utils/ask_gpt.py10# ------------COMMENT
MEDIUMcore/utils/ask_gpt.py12# ------------COMMENT
MEDIUMcore/utils/ask_gpt.py39# ------------COMMENT
MEDIUMcore/utils/ask_gpt.py41# ------------COMMENT
MEDIUMcore/utils/config_utils.py10# -----------------------COMMENT
MEDIUMcore/utils/config_utils.py12# -----------------------COMMENT
MEDIUMcore/asr_backend/elevenlabs_asr.py11# ----------------------------------------COMMENT
MEDIUMcore/asr_backend/elevenlabs_asr.py13# ----------------------------------------COMMENT
MEDIUMcore/asr_backend/elevenlabs_asr.py28# ----------------------------COMMENT
MEDIUMcore/asr_backend/elevenlabs_asr.py30# ----------------------------COMMENT
MEDIUMcore/asr_backend/whisperX_local.py11# =============================================================================COMMENT
MEDIUMcore/asr_backend/whisperX_local.py13# =============================================================================COMMENT
MEDIUMcore/asr_backend/whisperX_local.py29# =============================================================================COMMENT
MEDIUMcore/asr_backend/whisperX_local.py31# =============================================================================COMMENT
MEDIUMcore/asr_backend/whisperX_local.py147 # -------------------------COMMENT
MEDIUMcore/asr_backend/whisperX_local.py149 # -------------------------COMMENT
MEDIUMcore/asr_backend/whisperX_local.py165 # -------------------------COMMENT
MEDIUMcore/asr_backend/whisperX_local.py167 # -------------------------COMMENT
Unused Imports89 hits · 89 pts
SeverityFileLineSnippetContext
LOWsetup_env.py8CODE
LOWst.py14CODE
LOWst.py16CODE
LOWinstaller.py13CODE
LOWinstall.py8CODE
LOWcore/_3_1_split_nlp.py1CODE
LOWcore/_11_merge_audio.py7CODE
LOWcore/_11_merge_audio.py8CODE
LOWcore/translate_lines.py6CODE
LOWcore/_9_refer_audio.py5CODE
LOWcore/_9_refer_audio.py6CODE
LOWcore/_9_refer_audio.py11CODE
LOWcore/_8_1_audio_task.py8CODE
LOWcore/_8_1_audio_task.py9CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py20CODE
LOWcore/__init__.py21CODE
LOWcore/__init__.py22CODE
LOWcore/_7_sub_into_vid.py6CODE
LOWcore/_6_gen_sub.py7CODE
LOWcore/_6_gen_sub.py8CODE
LOWcore/_4_2_translate.py8CODE
LOWcore/_4_2_translate.py12CODE
LOWcore/_1_ytdlp.py6CODE
LOWcore/prompts.py2CODE
LOWcore/_5_split_sub.py10CODE
LOWcore/_5_split_sub.py11CODE
LOWcore/_3_2_split_meaning.py6CODE
LOWcore/_10_gen_audio.py13CODE
LOWcore/_10_gen_audio.py14CODE
LOWcore/_2_asr.py1CODE
LOWcore/_2_asr.py5CODE
LOWcore/_8_2_dub_chunks.py7CODE
LOWcore/_8_2_dub_chunks.py8CODE
LOWcore/_4_1_summarize.py4CODE
LOWcore/_12_dub_to_vid.py10CODE
LOWcore/_12_dub_to_vid.py11CODE
LOWcore/spacy_utils/__init__.py1CODE
LOWcore/spacy_utils/__init__.py2CODE
LOWcore/spacy_utils/__init__.py3CODE
LOWcore/spacy_utils/__init__.py4CODE
LOWcore/spacy_utils/__init__.py5CODE
LOWcore/spacy_utils/split_by_comma.py4CODE
LOWcore/spacy_utils/split_long_by_root.py5CODE
LOWcore/utils/__init__.py3CODE
LOWcore/utils/__init__.py4CODE
29 more matches not shown…
Excessive Try-Catch Wrapping53 hits · 74 pts
SeverityFileLineSnippetContext
LOWinstaller.py81 except Exception as exc:CODE
LOWinstaller.py104 except Exception:CODE
LOWinstaller.py121 except Exception:CODE
LOWinstaller.py164 except Exception:CODE
LOWinstaller.py174 except Exception:CODE
LOWinstaller.py211 except Exception as exc:CODE
LOWinstaller.py346 except Exception as exc:CODE
MEDIUMinstaller.py168def detect_cuda_version_from_smi() -> tuple[int, int] | None:CODE
LOWcore/_8_1_audio_task.py38 except Exception:CODE
LOWcore/_7_sub_into_vid.py105 except Exception as e:CODE
MEDIUMcore/_7_sub_into_vid.py36def check_gpu_available():CODE
LOWcore/_1_ytdlp.py134 except Exception:CODE
MEDIUMcore/_1_ytdlp.py20def update_ytdlp():CODE
LOWcore/_10_gen_audio.py92 except Exception as e:CODE
LOWcore/_10_gen_audio.py114 except Exception as e:CODE
LOWcore/utils/delete_retry_dubbing.py15 except Exception as e:CODE
MEDIUMcore/utils/delete_retry_dubbing.py16 print(f"Error deleting {file_path}: {str(e)}")CODE
LOWcore/utils/delete_retry_dubbing.py25 except Exception as e:CODE
MEDIUMcore/utils/delete_retry_dubbing.py26 print(f"Error deleting folder {segs_folder}: {str(e)}")CODE
LOWcore/utils/decorator.py18 except Exception as e:CODE
LOWcore/utils/__init__.py19 except Exception:CODE
LOWcore/utils/pypi_autochoose.py81 except Exception as exc:CODE
LOWcore/utils/onekeycleanup.py64 except Exception as e:CODE
MEDIUMcore/utils/onekeycleanup.py66 print(f"Error message: {str(e)}")CODE
LOWcore/utils/onekeycleanup.py67 except Exception as e:CODE
MEDIUMcore/utils/onekeycleanup.py69 print(f"Error message: {str(e)}")CODE
MEDIUMcore/utils/onekeycleanup.py41def move_file(src, dst):CODE
LOWcore/tts_backend/sf_cosyvoice2.py28 except Exception as e:CODE
LOWcore/tts_backend/tts_main.py82 except Exception as e:CODE
MEDIUMcore/tts_backend/openai_tts.py35 print(f"Error: {response.status_code}")CODE
LOWcore/tts_backend/gpt_sovits_tts.py96 except Exception as e:CODE
LOWcore/tts_backend/_302_f5tts.py74 except Exception as e:CODE
LOWcore/tts_backend/_302_f5tts.py133 except Exception as e:CODE
MEDIUMcore/tts_backend/_302_f5tts.py134 print(f"Error in f5_tts_for_videolingo: {str(e)}")CODE
LOWcore/tts_backend/custom_tts.py29 except Exception as e:CODE
MEDIUMcore/tts_backend/custom_tts.py30 print(f"Error occurred during TTS conversion: {str(e)}")CODE
LOWcore/st_utils/download_video_section.py91 except Exception:STRING
LOWcore/st_utils/download_video_section.py123 except Exception:STRING
LOWcore/st_utils/sidebar_setting.py30 except Exception:CODE
LOWcore/st_utils/sidebar_setting.py352 except Exception:CODE
MEDIUMcore/st_utils/sidebar_setting.py344def check_api():CODE
LOWcore/st_utils/task_runner.py170 except Exception as e:CODE
LOWcore/asr_backend/audio_preprocess.py19 except Exception:CODE
LOWcore/asr_backend/audio_preprocess.py87 except Exception as e:CODE
LOWbatch/utils/batch_processor.py77 except Exception as e:CODE
LOWbatch/utils/video_processor.py56 except Exception as e:CODE
LOWtranslations/translations.py45 except Exception:CODE
LOWtranslations/translations.py64 except Exception:CODE
LOWtranslations/translations.py78 except Exception:CODE
LOWtranslations/translations.py90 except Exception:CODE
LOWtranslations/translations.py96 except Exception:CODE
MEDIUMtranslations/translations.py40def _config_language():CODE
MEDIUMtranslations/translations.py49def _streamlit_language():CODE
Deep Nesting36 hits · 36 pts
SeverityFileLineSnippetContext
LOWst.py35CODE
LOWst.py224CODE
LOWst.py302CODE
LOWinstaller.py316CODE
LOWcore/_11_merge_audio.py54CODE
LOWcore/_8_1_audio_task.py52CODE
LOWcore/_4_2_translate.py55CODE
LOWcore/_5_split_sub.py16CODE
LOWcore/_5_split_sub.py18CODE
LOWcore/_10_gen_audio.py30CODE
LOWcore/_10_gen_audio.py76CODE
LOWcore/_10_gen_audio.py148CODE
LOWcore/spacy_utils/split_by_connector.py8CODE
LOWcore/spacy_utils/split_by_connector.py84CODE
LOWcore/spacy_utils/split_long_by_root.py10CODE
LOWcore/spacy_utils/split_long_by_root.py64CODE
LOWcore/utils/decorator.py10CODE
LOWcore/utils/decorator.py11CODE
LOWcore/utils/decorator.py13CODE
LOWcore/utils/ask_gpt.py29CODE
LOWcore/utils/pypi_autochoose.py60CODE
LOWcore/tts_backend/tts_main.py25CODE
LOWcore/tts_backend/sf_fishtts.py23CODE
LOWcore/tts_backend/sf_fishtts.py180CODE
LOWcore/tts_backend/estimate_duration.py24CODE
LOWcore/tts_backend/estimate_duration.py64CODE
LOWcore/tts_backend/gpt_sovits_tts.py56CODE
LOWcore/tts_backend/gpt_sovits_tts.py125CODE
LOWcore/st_utils/imports_and_utils.py8CODE
LOWcore/st_utils/download_video_section.py65CODE
LOWcore/st_utils/sidebar_setting.py47CODE
LOWcore/asr_backend/whisperX_302.py13CODE
LOWcore/asr_backend/elevenlabs_asr.py67CODE
LOWcore/asr_backend/audio_preprocess.py130CODE
LOWbatch/utils/batch_processor.py25CODE
LOWbatch/utils/video_processor.py19CODE
Hyper-Verbose Identifiers17 hits · 17 pts
SeverityFileLineSnippetContext
LOWst.py156def _subtitle_length_controls():CODE
LOWinstaller.py168def detect_cuda_version_from_smi() -> tuple[int, int] | None:CODE
LOWinstaller.py230def install_base_requirements(force: bool = False) -> None:CODE
LOWcore/prompts.py190def get_prompt_expressiveness(faithfulness_result, lines, shared_prompt):STRING
LOWcore/_3_2_split_meaning.py111def split_sentences_by_meaning():CODE
LOWcore/_8_2_dub_chunks.py58def analyze_subtitle_timing_and_speed(df):CODE
LOWcore/_4_1_summarize.py17def search_things_to_note_in_prompt(sentence):CODE
LOWcore/spacy_utils/split_long_by_root.py43def split_extremely_long_sentence(doc):CODE
LOWcore/tts_backend/sf_cosyvoice2.py13def cosyvoice_tts_for_videolingo(text, save_as, number, task_df):CODE
LOWcore/tts_backend/sf_fishtts.py180def siliconflow_fish_tts_for_videolingo(text, save_as, number, task_df):CODE
LOWcore/tts_backend/gpt_sovits_tts.py56def gpt_sovits_tts_for_videolingo(text, save_as, number, task_df):CODE
LOWcore/tts_backend/gpt_sovits_tts.py109def find_and_check_config_path(dubbing_character):CODE
LOWcore/st_utils/imports_and_utils.py8def download_subtitle_zip_button(text: str):CODE
LOWcore/asr_backend/elevenlabs_asr.py67def transcribe_audio_elevenlabs(raw_audio_path, vocal_audio_path, start = None, end = None):CODE
LOWcore/asr_backend/whisperX_local.py43def _has_complete_hf_snapshot(cache_root, repo_id):CODE
LOWbatch/utils/video_processor.py98def process_and_align_subtitles():CODE
LOWtranslations/translations.py32def _language_from_accept_language(header):CODE
Magic Placeholder Names2 hits · 12 pts
SeverityFileLineSnippetContext
HIGHconfig.yaml14 key: 'YOUR_API_KEY'CODE
HIGHconfig.yaml79 api_key: 'YOUR_API_KEY'CODE
Self-Referential Comments4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMcore/_7_sub_into_vid.py56 # Create a black frameCOMMENT
MEDIUMcore/_12_dub_to_vid.py44 # Create a black frameCOMMENT
MEDIUMcore/tts_backend/sf_fishtts.py103 # Create an empty audio segmentCOMMENT
MEDIUMcore/tts_backend/_302_f5tts.py56 # Create an empty audio segmentCOMMENT
Modern Structural Boilerplate4 hits · 4 pts
SeverityFileLineSnippetContext
LOWcore/__init__.py26__all__ = [CODE
LOWcore/spacy_utils/__init__.py7__all__ = [CODE
LOWcore/utils/models.py39__all__ = [CODE
LOWcore/utils/__init__.py24__all__ = [CODE
Redundant / Tautological Comments3 hits · 4 pts
SeverityFileLineSnippetContext
LOWcore/tts_backend/tts_main.py27 # Check if text is empty or single character, single character voiceovers are prone to bugsCOMMENT
LOWcore/tts_backend/gpt_sovits_tts.py88 # Check if the reference audio file existsCOMMENT
LOWcore/tts_backend/gpt_sovits_tts.py127 # Check if port 9880 is already in useCOMMENT
Over-Commented Block4 hits · 4 pts
SeverityFileLineSnippetContext
LOWcore/spacy_utils/split_long_by_root.py101 # nlp = init_nlp()COMMENT
LOWcore/tts_backend/sf_fishtts.py221 # siliconflow_fish_tts("使用动态音色测试", "dynamic_test.wav", mode="dynamic", ref_audio="output/audio/refers/1.wav", ref_teCOMMENT
LOWcore/tts_backend/edge_tts.py1from pathlib import PathCOMMENT
LOWdocs/next-env.d.ts1/// <reference types="next" />COMMENT
Verbosity Indicators2 hits · 3 pts
SeverityFileLineSnippetContext
LOWcore/translate_lines.py42 ## Step 1: Faithful to the Original TextCOMMENT
LOWcore/translate_lines.py66 ## Step 2: Express SmoothlyCOMMENT
Structural Annotation Overuse2 hits · 3 pts
SeverityFileLineSnippetContext
LOWcore/translate_lines.py42 ## Step 1: Faithful to the Original TextCOMMENT
LOWcore/translate_lines.py66 ## Step 2: Express SmoothlyCOMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWcore/_1_ytdlp.py138 # Example usageCOMMENT
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOWcore/utils/decorator.py47 def test_function():CODE