Skip to content

Repository structure

  • Directoryvt/ the server: one module per responsibility (details in Architecture)
    • app.py entry point: arguments, model loading and HTTP routes
    • httpws.py own HTTP and WebSocket server on asyncio
    • session.py one session per tab: WebSocket protocol and permissions
    • processor.py processing queue and downloads
    • vad.py energy-based voice detector
    • asr.py Whisper on CTranslate2
    • streaming.py streaming recognition with local agreement
    • translate.py translators on CTranslate2
    • textproc.py text before and after translating
    • glossary.py each library’s glossary
    • speakers.py diarization and voice references
    • dub.py per-sentence dubbing
    • audiofx.py own audio code in numpy (WSOLA, resampling, loudness)
    • tts.py voice process client
    • tts_worker.py the voice process
    • ipc.py frames over pipes between processes
    • enhance_df.py reference cleanup with DeepFilterNet
    • resources.py idle mode and GPU turns (and recent timings of each computation)
    • hardware.py what machine this is: GPU, VRAM, RAM, CPU (and a lab’s machine with TRANSLAY_EMULATE)
    • profiles.py performance profiles with the speeds measured in the labs
    • perf.py Preferences › Rendimiento: profile, limits, warnings and restart
    • limits.py RAM and CPU limits with a Windows Job Object
    • trash.py 30-day trash (deleted videos and libraries)
    • jsonio.py JSON that never ends up half-written (temp file + replace, .bak copy)
    • gpu.py CUDA DLLs on Windows and the CTranslate2 cache
    • store.py each video’s transcript
    • library.py videos and collections
    • vaults.py several libraries, each in its own folder
    • prefs.py preferences schema
    • youtube.py downloads with yt-dlp
    • cookies.py YouTube session
    • exporter.py exports with ffmpeg
    • auth.py access and API keys
    • api.py HTTP API v1 and file guard
    • events.py event catalog
    • webhooks.py sending events to other apps
    • repair_refs.py repair of old voice references
    • __init__.py version (__version__)
  • Directorydesktop/ the desktop app for Windows (Tauri 2; see Desktop app)
    • Directorysrc-tauri/ the Rust part: window, environment installation (runtime.rs), hidden server (server.rs), tray
      • …
    • Directoryui/ start screens: preparing, opening and error (uses the font, colors and buttons from web/)
      • …
    • Directorylocks/ pinned packages with their hashes: server.txt (server) and voice.txt (voice engine)
      • …
    • tools.json tools bundled in the installer (uv, Python, ffmpeg, Node.js) with their SHA-256
    • scripts/prepare.mjs copies what is shared from web/ and downloads and verifies the tools before building
  • Directoryweb/ the interface, no framework and no build step (details in Interface)
    • index.html the single page
    • api.html API reference served by the app
    • Directorycss/ tokens, base, components, shell, views and patterns
      • …
    • Directoryjs/ components, connection, views, menus and routes (desktop.js: the title bar in the desktop app)
      • …
    • Directoryfonts/ Plus Jakarta Sans (OFL), served by Translay itself
      • …
  • Directorytools/ measurement and testing tools, no browser (see Testing and evaluation)
    • Directorylab/ hardware labs: VRAM ballast, benchmark and per-machine runs
      • …
    • dub_file.py dubs a whole video and exports <name>.es.mp4
    • eval_tts.py compares voice engines
    • eval_pipeline.py measures recognition and diarization
    • eval_translation.py compares translators
    • transcribe_file.py simulates live playback
    • make_dialogue.py generates test dialogues with Kokoro and noise
    • make_sample.ps1 generates a test video with the Windows voices
    • Directorysamples/ scripts of the test videos
      • …
  • Directorytests/
    • test_core.py tests without a GPU
  • Directorydocs/ this documentation (Astro + Starlight; see Documentation)
    • astro.config.mjs site and sidebar configuration
    • Directoryscripts/
      • gen_reference.py reads vt/ and generates the reference tables
      • sync.mjs runs gen_reference.py and builds the changelog pages before building
      • check-links.mjs after building, checks every relative link and anchor in both languages
    • Directorysrc/
      • Directorycontent/docs/ the pages in English; es/ the same in Spanish
        • …
      • components/Diagram.astro draw.io-style diagrams (data in src/diagrams.ts, shared by both languages)
      • Directorydata/ JSON generated by gen_reference.py
        • …
  • Directorydata/ everything the app stores; not in git (see Data on disk)
    • …
  • Directorysamples/ test videos and their ground truth; not in git
    • …
  • Directory.venvs/ one environment per voice engine (omnivoice, chatterbox, voxcpm, kokoro); not in git
    • …
  • run.py starts the server (python run.py)
  • iniciar.bat the same with a double click on Windows; passes arguments to run.py
  • requirements.txt server dependencies
  • Dockerfile image with CUDA, the server and the voice engine (see Docker)
  • docker-compose.yml service with GPU, data/ and the models volume
  • .env.example .env template with the owner password for Docker
  • .dockerignore what does not go into the image
  • .gitignore what does not go into the repository
  • README.md project overview in English (README.es.md in Spanish)
  • CHANGELOG.md changes of each version in English (CHANGELOG.es.md in Spanish)