Skip to content
Projets

timoncool/dub-studio has 268 GitHub stars and 46 forks. GitHot measured +4 stars in 24 hours. Last checked 2026-11-13 00:33 UTC. Last push 2026-11-11.

Comment ces chiffres sont mesurés

Free offline AI video dubbing studio for Windows — voice cloning, translation, subtitles & on-screen-text localization. 100% local, one native .exe, zero Python.

What you can do

  • Voice cloning — the original timbre is cloned and speaks the new language: Higgs Audio v3 (default), Qwen3-TTS, Fish Audio Drama 3 and Audio8 TTS clone, Supertonic 3 speaks its own voices, and OpenRouter or Google Gemini voice in the cloud. Each speaker is cloned separately, or takes a voice from the library.
  • Speakers & voices — every speaker in one row with the detected gender: create a voice from that speaker, pick a library voice or keep cloning from the video, preview it, or Pick by gender for everyone at once.
  • Voice library — the cloud catalogue of 1,600 voices with name, gender, age, language, description and length: filter, search, listen and download the picked ones or all shown; import your own voices (WAV, MP3, FLAC, M4A, OGG or a .zip).
  • Interface scale — the whole window from 90 to 150 % (Settings → Interface, Ctrl + plus / minus / 0).

Progression mesurée des étoiles

in 24h
+4
in 7 days
Historique en cours
in 15 days
Historique en cours
in 1 month
Historique en cours

Variations nettes sur des périodes qui se chevauchent, pas des totaux quotidiens. Les mesures absentes restent vides. Les étoiles indiquent l’intérêt, pas la qualité.

README.fr.md

Original
Dub Studio

Dub Studio

Studio de doublage vidéo par IA, gratuit et hors ligne, pour Windows —— redouble n'importe quelle vidéo dans une autre langue avec voix clonée, sous-titres traduits et localisation du texte à l'écran. 100% local, zéro Python : un .exe natif (Rust + C++/CUDA) ; tous les modèles et moteurs se téléchargent d'un bouton.

License Stars Latest release Downloads

English · Русский · 中文 · Español · Português · Français

🌐 Démo en ligne et showcase avant/après →



En action

▶ Voir le showcase avant/après sur le site → — de vrais clips doublés de bout en bout sur un GPU local : vidéos, modes et langues différents.

dub voiceover dub CJK
🎙️ Doublage · EN→RU 🗣️ Voix off · EN→ES 🈶 Doublage · 中文 à l'image
subtitles widescreen transcript
📝 Sous-titres · langue d'origine 🎬 Doublage · large 16:9 🔤 Transcription · diarisation

Qu'est-ce que c'est

Dub Studio transforme n'importe quelle vidéo en une version doublée dans une autre langue —— avec le timbre du locuteur cloné, des sous-titres traduits et le texte incrusté localisé à même l'image. Déposez un clip : une passe automatique intelligente produit le premier jet ; puis un éditeur en direct met chaque sous-titre, voix, zone de flou, police et titre sous votre contrôle avec un aperçu instantané.

Par défaut, tout tourne localement sur votre machine —— sans cloud ni abonnement : ni vos rushes ni votre voix ne quittent l'ordinateur. Et si votre PC est limité (ne fait pas tourner le Gemma/Higgs local) ou que vous voulez plus de vitesse et de qualité, les parties lourdes (traduction, vision, TTS, transcription) peuvent en option être déléguées au cloud via OpenRouter —— chaque moteur choisi séparément (local ↔ cloud), avec des voix attribuées automatiquement selon le sexe du locuteur (bêta). La clé est stockée localement ; tout est désactivé par défaut.

C'est une réécriture entièrement native. Pas de Python embarqué, pas de torch, pas de wheels CUDA. Tout le pipeline est en Rust + moteurs natifs C++/CUDA (GGUF/ONNX) : un processus, démarrage rapide, faible VRAM. Les modèles, moteurs, runtime CUDA/VC++ et ffmpeg sont téléchargés et installés par l'application elle-même au premier lancement. L'application est conçue et testée pour un GPU NVIDIA : la voix, la traduction et la vision tournent en local sur CUDA, et les sous-titres sont incrustés dans la vidéo avec NVENC. La séparation, la diarisation et la reconnaissance peuvent tourner sur le CPU et les étapes lourdes peuvent partir vers OpenRouter, mais une machine sans NVIDIA n'est pas une configuration testée : voir Ce qui tourne où plus bas.

Pour les agents IA

Tant que Dub Studio est ouvert, il sert un serveur MCP à l'adresse http://127.0.0.1:8793/mcp : un agent comme Claude Code, Claude Desktop, Cursor ou Codex fait tout ce que fait la fenêtre, avec le même code — il crée des projets à partir de fichiers vidéo, les analyse, corrige la traduction, les timings et les locuteurs ligne par ligne, attribue les voix, met en forme les sous-titres, ajoute des titres et des zones de flou, fait le rendu, exporte la même vidéo dans d'autres langues, écrit des SRT et des TXT et enregistre les résultats dans un dossier. Dans les réglages, Agent IA (MCP) indique si un agent est connecté et ce qu'il faut coller dans le client.

Avec ce dépôt, un agent peut tout installer et piloter le studio lui-même :

  1. Installer le studio depuis la dernière version et le lancer.
  2. Se connecter à son serveur MCP :
    claude mcp add --transport http dub-studio http://127.0.0.1:8793/mcp
    
    Autres clients : { "mcpServers": { "dub-studio": { "type": "streamable-http", "url": "http://127.0.0.1:8793/mcp" } } }
  3. Lire la skill que sert le serveur (ressource studio://skill, prompt studio), le même texte que docs/mcp-skill.md — tous les outils, les règles de base et des recettes pas à pas — puis commencer par l'outil studio_status.

llms.txt dit la même chose pour les outils qui le cherchent. Pour garder la skill dans Claude Code, enregistrez docs/mcp-skill.md sous ~/.claude/skills/dub-studio/SKILL.md. Seuls les agents de cet ordinateur et la fenêtre du studio peuvent se connecter.

Cinq modes, permutables à la volée

Mode Ce qu'il fait
🎙️ Doublage Re-doublage complet dans la langue cible avec le timbre original cloné —— distribution auto par locuteur ou voix au choix
🗣️ Voix off Voix traduite par-dessus l'original atténué —— l'original reste audible en dessous ; équilibre réglable
📝 Sous-titres Sous-titres dans la langue d'origine, audio original conservé —— sans doublage ni traduction
✨ Remix amusant Donnez un thème (« comme un pirate », « comme un JT ») → le modèle réécrit tout le script et redouble
🎬 Transcription Transcription diarisée propre avec disposition par locuteur, lecture façon karaoké, création de voix en un clic, export .srt/.txt

Chargez un clip une fois et envoyez-le dans n'importe quel mode depuis l'éditeur.

Fonctionnalités

  • Clonage de voix —— le timbre original est cloné et parle la nouvelle langue : Higgs Audio v3 (par défaut), Qwen3-TTS, Fish Audio Drama 3 et Audio8 TTS clonent, Supertonic 3 parle avec ses propres voix, et dans le cloud OpenRouter et Google Gemini. Chaque locuteur est cloné à part ou prend une voix de la bibliothèque.
  • Locuteurs et voix —— chaque locuteur sur une ligne avec le genre détecté : créer une voix à partir de ce locuteur, choisir une voix de la bibliothèque ou garder le clonage depuis la vidéo, l'écouter, ou Attribuer par genre à tous d'un coup.
  • Bibliothèque de voix —— le catalogue cloud de 1 600 voix avec nom, genre, âge, langue, description et durée : filtrer, chercher, écouter et télécharger les voix choisies ou toutes celles affichées ; importer vos propres voix (WAV, MP3, FLAC, M4A, OGG ou un .zip).
  • Échelle de l'interface —— toute la fenêtre de 90 à 150 % (Réglages → Interface, Ctrl + plus / moins / 0).
  • Diarisation des locuteurs —— qui parle et quand (NVIDIA Nemotron 3 Diarization, jusqu'à 8 voix), une voix distincte par locuteur.
  • Casting des personnages (bêta) —— un personnage est une paire « visage + voix ». L'app rassemble les visages de toute la vidéo, reconnaît la même personne et la lie à un locuteur par cooccurrence (celui en gros plan reçoit la voix, un auditeur en arrière-plan non) ; elle choisit automatiquement l'image-avatar la plus nette et enregistre un profil de casting pour toute la série —— vous attribuez voix et descriptions une fois, et l'épisode suivant les applique tout seul. Un interrupteur « visages réels / dessin·anime » adapte la détection des visages au contenu.
  • Choix du moteur ASR — Parakeet-TDT v3 (par défaut), Parakeet Ultra ou CrisperWhisper 2.0 turbo (99 langues, horodatage des mots), sur la carte ou le processeur ; en « Auto » la langue est reconnue par VoxLingua107.
  • Importer des sous-titres prêts — utilisez votre .srt/.ass comme transcription exacte : le texte et le timing viennent du fichier au lieu de la reconnaissance auto (les locuteurs sont quand même attribués par diarisation). Cochez « sous-titres déjà dans la langue cible » et la traduction est aussi ignorée — une vidéo anglaise + vos sous-titres russes → un doublage russe directement à partir d'eux.
  • Export multilingue — la ▾ à côté d'Exporter envoie une vidéo dans plusieurs langues d'un coup ; chacune hérite de toutes vos modifications (mise en page des sous-titres, styles, zones de flou, voix clonée) — seuls la traduction et le doublage changent.
  • Sauvegarder et rouvrir des projets — sauvegarde auto, liste des projets récents sur l'écran d'accueil, et reprenez le travail inachevé en un clic.
  • Recherche dans les listes de voix et de langues — tapez une partie d'un nom pour filtrer des centaines de voix ou plus de 100 langues ; les langues correspondent aussi par leur nom dans la langue de l'interface.
  • Pipeline composable — interrupteurs indépendants à l'entrée : audio (original / doublage / voix off / transcription) × sous-titres (aucun / original / traduits) × incrustation dans la vidéo oui/non × remix humoristique. N'importe quelle combinaison — doublage sans sous-titres, sous-titres traduits sans doublage, doublage humoristique avec vos propres voix — aussi en lot et dans l'éditeur.
  • Localisation du texte à l'écran —— l'OCR détecte le texte incrusté (PP-OCR ONNX), floute l'original et imprime par-dessus un titre localisé dans un style assorti —— une fonction qu'aucun autre outil n'a.
  • Traduction + analyse visuelle du style —— la transcription est traduite localement via Gemma-4 12B (GGUF, llama.cpp) ; une passe de vision lit la mise en page : style des sous-titres, titres, marques, zones de texte.
  • Séparation vocale SOTA —— Mel-Band Roformer (BSRoformer.cpp natif sur CUDA) sépare la voix de la musique : la piste de fond est préservée et le clone s'accroche à une parole propre.
  • 26 préréglages de sous-titres —— karaoké / mot à mot / hormozi / néon et plus, rendus sur votre image (WYSIWYG, JASSUB sur le même .ass que grave ffmpeg).
  • Transcription karaoké —— lisez la vidéo et suivez la ligne et le mot en cours qui s'illuminent dans la transcription.
  • Éditeur en direct —— modifiez transcription, voix, style des sous-titres, zones de flou, titres ; aperçu ~0,17 s/image, chaque changement visible aussitôt.
  • Re-génération intelligente —— à l'export, seuls les segments modifiés sont resynthétisés, pas tout le clip.
  • Vos propres répliques —— insérez des phrases personnalisées dans la transcription ; chacune est doublée avec la voix clonée du locuteur et affichée dans les sous-titres.
  • Traitement par lot —— file de fichiers, tous avec un même réglage, progression par fichier.
  • Comparaison avant/après —— original et doublage côte à côte.
  • 100+ langues —— doublage vers toute langue majeure (espagnol, chinois, japonais, arabe, hindi et plus), détection auto de la langue source.
  • Tout format vidéo —— MP4, MOV, MKV, WEBM, AVI et plus (décodé via ffmpeg).
  • Installation en un bouton + mise à jour auto —— modèles, moteurs, runtime CUDA/VC++ et ffmpeg se téléchargent au premier lancement ; l'app se met à jour seule.
  • Téléchargements reprenables —— les gros modèles (10 Go+) reprennent là où ils se sont arrêtés après une coupure, au lieu de tout recommencer.
  • Calculez chaque étape où vous voulez —— la séparation, la diarisation et la reconnaissance basculent indépendamment entre GPU et CPU, et la reconnaissance, la traduction, la vision et la voix peuvent être déléguées à OpenRouter. Le tableau Ce qui tourne où ci-dessous indique ce que chaque étape peut réellement utiliser.
  • Adaptez à votre matériel —— chaque moteur propose plusieurs quantifications (TTS Q8/Q6/Q4, traduction Q4…Q8, séparation Q8/Q5/Q4), à changer dans les réglages ; limitez le lot de prefill et la longueur de la référence vocale pour des GPU de 8–12 Go et 32 Go de RAM ; sur une carte de 8 Go ou moins, le serveur de traduction ajuste lui-même ses couches à la mémoire libre.
  • Toute l'app dans votre langue — progression, erreurs, installation, casting et rapports lus par un agent arrivent dans les six langues de la fenêtre.
  • Voix Google Gemini — Gemini TTS à côté du moteur local et d'OpenRouter, avec sa propre clé et une liste de modèles à jour ; Batch coûte moitié moins cher et un rendu arrêté reprend le même lot déjà payé.
  • Nombre de locuteurs — automatique ou de 1 à 8 personnes ; les voix sont appariées sur tout un long enregistrement, transcrit par fenêtres d'environ 90 secondes.
  • Égaliser le volume — un interrupteur activé par défaut : phrases au même niveau et doublage à -14 LUFS avec un plafond de -1 dBTP ; désactivé, le mixage reste tel quel.
  • Entièrement portable —— rien n'est écrit dans votre profil ; supprimez le dossier, aucune trace.

Captures

Écran d'accueil —— cinq modes, aperçu de la vidéo choisie, choix de langue, tout format :

Écran d'accueil de Dub Studio

Mode transcription —— transcription diarisée avec disposition par locuteur, karaoké et création de voix depuis chaque locuteur en un clic :

Mode transcription de Dub Studio

Prérequis

  • OS : Windows 10 / 11 (x64) ; Linux x86-64 en version expérimentale (voir Linux (expérimental))
  • GPU : NVIDIA avec 8 Go de VRAM ou plus (des préréglages existent pour 8, 12, 16, 24 et 32 Go) et un pilote récent. La voix locale (Higgs Audio), la traduction et la vision (Gemma) tournent sur CUDA, et les sous-titres sont incrustés avec NVENC. Sans NVIDIA, seules les étapes que Ce qui tourne où indique pour le CPU ou le cloud peuvent fonctionner, et cette configuration n'est pas testée
  • WebView2 —— préinstallé sur Windows 11 ; sur Windows 10, l'installateur le télécharge (en cas d'échec, voir Dépannage)
  • Disque : ~15 Go pour les modèles par défaut, les moteurs et le runtime (récupérés au premier lancement), plus de la place pour vos projets ; les quantifications alternatives et les modèles Whisper sont en plus

Sur une machine NVIDIA, la seule chose à installer à la main est un pilote NVIDIA récent. Tout le reste —modèles (Higgs Audio v3, Gemma-4 12B + vision, Parakeet-TDT, Nemotron 3 Diarization, Mel-Band Roformer), moteurs, runtime CUDA et ffmpeg— l'application le télécharge d'un bouton au premier lancement.

Démarrage rapide

  1. Téléchargez la version portable depuis Releases et décompressez où vous voulez (ou installez via -setup.exe).
  2. Lancez Dub Studio.exe.
  3. Dans le panneau premier lancement, cliquez Tout télécharger —— l'app récupère modèles, moteurs et runtime (~15 Go, une fois).
  4. Déposez une vidéo, choisissez la langue cible → la passe auto produit le premier jet. Réglez tout dans l'éditeur puis cliquez Exporter.

Tout se télécharge et vit dans le dossier de l'app. Modèles, caches et projets ne vont nulle part ailleurs.

Ce qui a changé et quand se trouve dans CHANGELOG.md, et le bouton d'étincelles en haut de l'application l'affiche. Règles pour les contributeurs et les agents de programmation : AGENTS.md.

Tout ce que l'application télécharge

Le panneau de premier lancement récupère tout cela d'un seul bouton. Derrière un proxy, ou là où Hugging Face est bloqué, réglez le proxy dans Paramètres → Réseau : comme dans Windows, le vôtre (HTTP, HTTPS, SOCKS5 ou SOCKS4 ; la forme du vendeur host:port:identifiant:mot de passe marche telle quelle) ou aucun. Les téléchargements de modèles, le cloud et les mises à jour de l'application passent tous par lui. Vous pouvez aussi télécharger vous-même les fichiers directs, les placer là où l'indique la dernière colonne, à partir du dossier de l'application (celui qui contient models\), puis appuyer sur **Importer depuis un dossier** ; les composants en archives (.zip, .whl), l'application les télécharge elle-même.

Un fichier à l'emplacement indiqué est considéré comme installé quand sa taille est exactement celle indiquée ; chaque téléchargement est vérifié par rapport au SHA-256 fixé du fichier avant d'être utilisé, et un fichier déjà en place est vérifié de la même façon avant d'être ignoré. Importer depuis un dossier (dans le panneau de premier lancement et dans les paramètres des modèles) cherche les fichiers d'un composant par nom et taille exacte dans le dossier choisi et les met en place par lien physique ou copie. Les composants livrés en archives zip ou wheel (moteurs, runtimes) ne sont pas importés et ne comptent comme installés que si l'application les a téléchargés elle-même : elle garde un enregistrement de l'archive vérifiée à côté des fichiers décompressés. Les tailles et les empreintes viennent du manifeste de l'application elle-même, crates/dub-server/src/setup.rs, et ce tableau est vérifié par rapport à lui.

Le runtime Visual C++ et les modèles PP-OCR sont fournis dans la version et ne sont pas téléchargés ; le pilote NVIDIA s'installe à part.

Composant Besoin Fichiers (liens directs) Taille Où le placer
Higgs Audio v3 Q8_0 obligatoire q8_0.gguf → models\higgs-q8_0\q8_0.gguf
config.json → models\higgs-q8_0\config.json
chat_template.jinja → models\higgs-q8_0\chat_template.jinja
tokenizer.json → models\higgs-q8_0\tokenizer.json
tokenizer_config.json → models\higgs-q8_0\tokenizer_config.json
higgs_audio_v2_tokenizer_config.json → models\higgs-q8_0\higgs_audio_v2_tokenizer_config.json
5.5 GB tel quel, au chemin indiqué après la flèche
audio.cpp server (Higgs, CrisperWhisper, Parakeet, Supertonic, Audio8, Nemotron) obligatoire audiocpp-server-win-cuda13-x64.zip 138 MB décompresser les fichiers, sans sous-dossiers, dans tools\audiocpp\
Gemma-4 12B QAT q4_0 + vision obligatoire gemma-4-12b-it-qat-q4_0.gguf → models\mt\gemma-4-12b-it-qat-q4_0.gguf
mmproj-gemma-4-12b-it-qat-q4_0.gguf → models\mt\mmproj-gemma-4-12b-it-qat-q4_0.gguf
7.2 GB tel quel, au chemin indiqué après la flèche
Gemma-4 12B Q5_K_M + vision facultatif gemma-4-12b-it-Q5_K_M.gguf → models\mt-q5_0\gemma-4-12b-it-Q5_K_M.gguf
mmproj-F16.gguf → models\mt-q5_0\mmproj-F16.gguf
8.6 GB tel quel, au chemin indiqué après la flèche
Gemma-4 12B Q6_K + vision facultatif gemma-4-12b-it-Q6_K.gguf → models\mt-q6_k\gemma-4-12b-it-Q6_K.gguf
mmproj-F16.gguf → models\mt-q6_k\mmproj-F16.gguf
10.0 GB tel quel, au chemin indiqué après la flèche
Gemma-4 12B Q8_0 + vision facultatif gemma-4-12b-it-Q8_0.gguf → models\mt-q8_0\gemma-4-12b-it-Q8_0.gguf
mmproj-F16.gguf → models\mt-q8_0\mmproj-F16.gguf
12.8 GB tel quel, au chemin indiqué après la flèche
Parakeet-TDT 0.6B v3 Q8_0 (transcribe.cpp) obligatoire parakeet-tdt-0.6b-v3-Q8_0.gguf → models\asr-gguf-parakeet-v3\parakeet-tdt-0.6b-v3-Q8_0.gguf 740 MB tel quel, au chemin indiqué après la flèche
transcribe.cpp engine (CUDA) obligatoire transcribe-windows-cuda13-x64.zip 131 MB décompresser les fichiers, sans sous-dossiers, dans models\transcribe-engine\
transcribe.cpp engine (CPU) facultatif transcribe-windows-cpu-x64.zip 5 MB décompresser les fichiers, sans sous-dossiers, dans models\transcribe-engine-cpu\
transcribe.cpp engine (CUDA 12) facultatif transcribe-windows-cuda12-x64.zip 159 MB décompresser les fichiers, sans sous-dossiers, dans models\transcribe-engine-cuda12\
transcribe.cpp engine (Vulkan) facultatif transcribe-windows-vulkan-x64.zip 19 MB décompresser les fichiers, sans sous-dossiers, dans models\transcribe-engine-vulkan\
Higgs Audio v3 Q6_K facultatif q6_k.gguf → models\higgs-q6_k\q6_k.gguf
config.json → models\higgs-q6_k\config.json
chat_template.jinja → models\higgs-q6_k\chat_template.jinja
tokenizer.json → models\higgs-q6_k\tokenizer.json
tokenizer_config.json → models\higgs-q6_k\tokenizer_config.json
higgs_audio_v2_tokenizer_config.json → models\higgs-q6_k\higgs_audio_v2_tokenizer_config.json
5.0 GB tel quel, au chemin indiqué après la flèche
Higgs Audio v3 Q4_K_M facultatif q4_k_m.gguf → models\higgs-q4_k_m\q4_k_m.gguf
config.json → models\higgs-q4_k_m\config.json
chat_template.jinja → models\higgs-q4_k_m\chat_template.jinja
tokenizer.json → models\higgs-q4_k_m\tokenizer.json
tokenizer_config.json → models\higgs-q4_k_m\tokenizer_config.json
higgs_audio_v2_tokenizer_config.json → models\higgs-q4_k_m\higgs_audio_v2_tokenizer_config.json
4.1 GB tel quel, au chemin indiqué après la flèche
Fish Audio Drama 3 Q4 + drama_engine (24 GB+ GPU) facultatif .gitattributes → models\drama3\.gitattributes
LICENSE → models\drama3\LICENSE
NOTICE → models\drama3\NOTICE
README.md → models\drama3\README.md
codec.safetensors → models\drama3\codec.safetensors
drama.json → models\drama3\drama.json
globals.safetensors → models\drama3\globals.safetensors
layer00.safetensors → models\drama3\layer00.safetensors
layer01.safetensors → models\drama3\layer01.safetensors
layer02.safetensors → models\drama3\layer02.safetensors
layer03.safetensors → models\drama3\layer03.safetensors
layer04.safetensors → models\drama3\layer04.safetensors
layer05.safetensors → models\drama3\layer05.safetensors
layer06.safetensors → models\drama3\layer06.safetensors
layer07.safetensors → models\drama3\layer07.safetensors
layer08.safetensors → models\drama3\layer08.safetensors
layer09.safetensors → models\drama3\layer09.safetensors
layer10.safetensors → models\drama3\layer10.safetensors
layer11.safetensors → models\drama3\layer11.safetensors
layer12.safetensors → models\drama3\layer12.safetensors
layer13.safetensors → models\drama3\layer13.safetensors
layer14.safetensors → models\drama3\layer14.safetensors
layer15.safetensors → models\drama3\layer15.safetensors
layer16.safetensors → models\drama3\layer16.safetensors
layer17.safetensors → models\drama3\layer17.safetensors
layer18.safetensors → models\drama3\layer18.safetensors
layer19.safetensors → models\drama3\layer19.safetensors
layer20.safetensors → models\drama3\layer20.safetensors
layer21.safetensors → models\drama3\layer21.safetensors
layer22.safetensors → models\drama3\layer22.safetensors
layer23.safetensors → models\drama3\layer23.safetensors
layer24.safetensors → models\drama3\layer24.safetensors
layer25.safetensors → models\drama3\layer25.safetensors
layer26.safetensors → models\drama3\layer26.safetensors
layer27.safetensors → models\drama3\layer27.safetensors
layer28.safetensors → models\drama3\layer28.safetensors
layer29.safetensors → models\drama3\layer29.safetensors
layer30.safetensors → models\drama3\layer30.safetensors
layer31.safetensors → models\drama3\layer31.safetensors
layer32.safetensors → models\drama3\layer32.safetensors
layer33.safetensors → models\drama3\layer33.safetensors
layer34.safetensors → models\drama3\layer34.safetensors
layer35.safetensors → models\drama3\layer35.safetensors
layer36.safetensors → models\drama3\layer36.safetensors
layer37.safetensors → models\drama3\layer37.safetensors
layer38.safetensors → models\drama3\layer38.safetensors
layer39.safetensors → models\drama3\layer39.safetensors
tokenizer.json → models\drama3\tokenizer.json
tower.safetensors → models\drama3\tower.safetensors
drama_engine.dll → models\drama-engine\drama_engine.dll
23.0 GB tel quel, au chemin indiqué après la flèche
qwen.dll + ggml (Qwen3-TTS engine) facultatif qwen-windows-x64.zip 4 MB décompresser les fichiers, sans sous-dossiers, dans models\qwen3-tts\
Qwen3-TTS 1.7B Q4_K_M facultatif qwen-talker-1.7b-customvoice-Q4_K_M.gguf → models\qwen3-tts\qwen-talker-1.7b-customvoice-Q4_K_M.gguf
qwen-talker-1.7b-base-Q4_K_M.gguf → models\qwen3-tts\qwen-talker-1.7b-base-Q4_K_M.gguf
2.4 GB tel quel, au chemin indiqué après la flèche
Qwen3-TTS 1.7B Q8_0 facultatif qwen-talker-1.7b-customvoice-Q8_0.gguf → models\qwen3-tts\qwen-talker-1.7b-customvoice-Q8_0.gguf
qwen-talker-1.7b-base-Q8_0.gguf → models\qwen3-tts\qwen-talker-1.7b-base-Q8_0.gguf
4.1 GB tel quel, au chemin indiqué après la flèche
Qwen3-TTS Russian stress facultatif adapter.safetensors → models\qwen3-tts\qwen-talker-1.7b-base-ru-stress-lora.safetensors 35 MB tel quel, au chemin indiqué après la flèche
Supertonic 3 int8 facultatif LICENSE → models\supertonic3\LICENSE
duration_predictor.onnx → models\supertonic3\onnx\duration_predictor.onnx
text_encoder.onnx → models\supertonic3\onnx\text_encoder.onnx
vector_estimator.onnx → models\supertonic3\onnx\vector_estimator.onnx
vocoder.onnx → models\supertonic3\onnx\vocoder.onnx
tts.json → models\supertonic3\onnx\tts.json
unicode_indexer.json → models\supertonic3\onnx\unicode_indexer.json
F1.json → models\supertonic3\voice_styles\F1.json
F2.json → models\supertonic3\voice_styles\F2.json
F3.json → models\supertonic3\voice_styles\F3.json
F4.json → models\supertonic3\voice_styles\F4.json
F5.json → models\supertonic3\voice_styles\F5.json
M1.json → models\supertonic3\voice_styles\M1.json
M2.json → models\supertonic3\voice_styles\M2.json
M3.json → models\supertonic3\voice_styles\M3.json
M4.json → models\supertonic3\voice_styles\M4.json
M5.json → models\supertonic3\voice_styles\M5.json
108 MB tel quel, au chemin indiqué après la flèche
Audio8 TTS Realistic-Air Q8_0 facultatif Audio8-TTS-Realistic-Air-Q8_0.gguf → models\audio8\Audio8-TTS-Realistic-Air-Q8_0.gguf 1.5 GB tel quel, au chemin indiqué après la flèche
RUAccent facultatif model.onnx → models\ruaccent\nn\nn_accent\model.onnx
config.json → models\ruaccent\nn\nn_accent\config.json
vocab.txt → models\ruaccent\nn\nn_accent\vocab.txt
model.onnx → models\ruaccent\nn\nn_omograph\tiny2\model.onnx
tokenizer.json → models\ruaccent\nn\nn_omograph\tiny2\tokenizer.json
accents.json.gz → models\ruaccent\dictionary\accents.json.gz
omographs.json.gz → models\ruaccent\dictionary\omographs.json.gz
yo_words.json.gz → models\ruaccent\dictionary\yo_words.json.gz
yo_homographs.json.gz → models\ruaccent\dictionary\yo_homographs.json.gz
34 MB tel quel, au chemin indiqué après la flèche
RUAccent omograph big_poetry int8 facultatif model.onnx → models\ruaccent\nn\nn_omograph\big_poetry\model.onnx
tokenizer.json → models\ruaccent\nn\nn_omograph\big_poetry\tokenizer.json
182 MB tel quel, au chemin indiqué après la flèche
Parakeet Ultra 0.6B Q8_0 (Moondream, transcribe.cpp) facultatif parakeet-ultra-Q8_0.gguf → models\asr-gguf-parakeet-ultra\parakeet-ultra-Q8_0.gguf 740 MB tel quel, au chemin indiqué après la flèche
CrisperWhisper 2.0 turbo (audio.cpp) facultatif LICENSE.md → models\crisperwhisper2-turbo\LICENSE.md
README.md → models\crisperwhisper2-turbo\README.md
added_tokens.json → models\crisperwhisper2-turbo\added_tokens.json
config.json → models\crisperwhisper2-turbo\config.json
generation_config.json → models\crisperwhisper2-turbo\generation_config.json
merges.txt → models\crisperwhisper2-turbo\merges.txt
model.safetensors → models\crisperwhisper2-turbo\model.safetensors
normalizer.json → models\crisperwhisper2-turbo\normalizer.json
preprocessor_config.json → models\crisperwhisper2-turbo\preprocessor_config.json
special_tokens_map.json → models\crisperwhisper2-turbo\special_tokens_map.json
tokenizer.json → models\crisperwhisper2-turbo\tokenizer.json
tokenizer_config.json → models\crisperwhisper2-turbo\tokenizer_config.json
vocab.json → models\crisperwhisper2-turbo\vocab.json
1.6 GB tel quel, au chemin indiqué après la flèche
DPDFNet noise reduction recommandé dpdfnet2_48khz_hr.onnx → models\dpdfnet\dpdfnet2_48khz_hr.onnx 10 MB tel quel, au chemin indiqué après la flèche
Silero VAD v6.2 recommandé silero-vad-v6.2-F32.gguf → models\silero-vad\silero-vad-v6.2-F32.gguf 1 MB tel quel, au chemin indiqué après la flèche
VoxLingua107 language id (transcribe.cpp) facultatif lang-id-voxlingua107-ecapa-Q8_0.gguf → models\langid-voxlingua107\lang-id-voxlingua107-ecapa-Q8_0.gguf 27 MB tel quel, au chemin indiqué après la flèche
Nemotron 3 Diarization recommandé nemotron3_diar_v3.onnx → models\nemotron-diar\nemotron3_diar_v3.onnx
LICENSE → models\nemotron-diar\LICENSE
401 MB tel quel, au chemin indiqué après la flèche
Mel-Band Roformer voc_fv6 Q8_0 recommandé voc_fv6-Q8_0.gguf → models\bsroformer\voc_fv6-Q8_0.gguf 252 MB tel quel, au chemin indiqué après la flèche
Mel-Band Roformer voc_fv6 Q5_0 facultatif voc_fv6-Q5_0.gguf → models\bsroformer\voc_fv6-Q5_0.gguf 167 MB tel quel, au chemin indiqué après la flèche
Mel-Band Roformer voc_fv6 Q4_0 facultatif voc_fv6-Q4_0.gguf → models\bsroformer\voc_fv6-Q4_0.gguf 139 MB tel quel, au chemin indiqué après la flèche
Modèles de casting (visages et voix) recommandé model.onnx → models\faces\det_10g.onnx
LVFace-L_Glint360K.onnx → models\faces\LVFace-L_Glint360K.onnx
model_feat.onnx → models\faces\ccip\model_feat.onnx
model.onnx → models\faces\anime_face\model.onnx
xseg_1.onnx → models\faces\occluder\xseg_1.onnx
voxceleb_resnet34_LM.onnx → models\faces\wespeaker\voxceleb_resnet34_LM.onnx
1.3 GB tel quel, au chemin indiqué après la flèche
BSRoformer.cpp (CUDA) recommandé BSRoformer-windows-cuda13-x64.zip 119 MB décompresser les fichiers, sans sous-dossiers, dans tools\bsroformer\
BSRoformer.cpp (CPU) facultatif BSRoformer-windows-cpu-x64.zip 3 MB décompresser les fichiers, sans sous-dossiers, dans tools\bsroformer-cpu\
BSRoformer.cpp (Vulkan) facultatif BSRoformer-windows-vulkan-x64.zip 26 MB décompresser les fichiers, sans sous-dossiers, dans tools\bsroformer-vulkan\
llama.cpp server (CUDA) obligatoire llama-b12248-bin-win-cuda-13.5-x64.zip 171 MB décompresser les fichiers, sans sous-dossiers, dans tools\llama\
ONNX Runtime obligatoire onnxruntime-win-x64-1.31.1.zip 83 MB décompresser avec son arborescence dans models\runtime\
ONNX Runtime GPU (CUDA) recommandé onnxruntime-win-x64-gpu_cuda13-1.31.1.zip 309 MB décompresser avec son arborescence dans models\runtime\
FFmpeg (static build) obligatoire ffmpeg-N-128227-g4811625b5f-win64-gpl.zip 202 MB prendre ffmpeg.exe et ffprobe.exe de l'archive et les mettre dans tools\ffmpeg\
yt-dlp + deno facultatif yt-dlp.exe → tools\yt-dlp\yt-dlp.exe
deno-x86_64-pc-windows-msvc.zip
66 MB tel quel, au chemin indiqué après la flèche
décompresser les fichiers, sans sous-dossiers, dans tools\yt-dlp\
CUDA runtime (cudart, cuBLAS, cuFFT) obligatoire nvidia_cuda_runtime-13.4.92-py3-none-win_amd64.whl
nvidia_cublas-13.8.0.4-py3-none-win_amd64.whl
libcufft-windows-x86_64-12.4.0.43-archive.zip
586 MB prendre tous les .dll de l'archive et les mettre dans models\higgs-engine\
cuDNN 9 recommandé nvidia_cudnn_cu13-9.27.0.42-py3-none-win_amd64.whl 436 MB prendre tous les .dll de l'archive et les mettre dans models\higgs-engine\

Ce qui tourne où

Chaque étape a son propre sélecteur de périphérique. Oui signifie que le code contient ce chemin ; le tableau ne dit rien de la vitesse ni de la couverture de tests, et les chemins CPU sont plus lents. Les chemins cloud nécessitent une clé OpenRouter (Paramètres) et sont désactivés par défaut.

Étape Moteur GPU NVIDIA CPU OpenRouter (cloud)
Séparation Mel-Band Roformer (BSRoformer.cpp) oui (build CUDA) oui (build CPU distinct, plus lent) non
Diarisation Nemotron 3 Diarization (audio.cpp) oui (CUDA 13 ou 12.9 ; Vulkan sur les autres cartes) oui non
Reconnaissance vocale Parakeet-TDT v3, CrisperWhisper (audio.cpp), Parakeet Ultra (transcribe.cpp) oui oui oui
Traduction et vision Gemma-4 12B (llama.cpp) oui (build CUDA ; Vulkan sur les autres cartes) oui (plus lent) oui
Voix et clonage Higgs Audio v3, Supertonic 3, Audio8 (audio.cpp), Qwen3-TTS, Fish Audio Drama 3 oui (Drama 3 en CUDA seulement) oui (tous sauf Drama 3, plus lent) oui (OpenRouter, Google)
Texte à l'écran PP-OCR non oui non
Casting (visages et voix) SCRFD, LVFace, anime_face, CCIP, WeSpeaker oui (ONNX Runtime CUDA) oui non
Sous-titres incrustés dans la vidéo ffmpeg oui (NVENC) non non

Sans NVIDIA, la voix, la traduction, la vision et la reconnaissance peuvent partir dans le cloud et la séparation et la diarisation sur le CPU, mais l'incrustation n'a pas de chemin CPU : une telle machine n'est donc pas une configuration testée.

Dépannage

L'installateur s'arrête sur WebView2. La fenêtre de l'application repose sur Microsoft Edge WebView2, et l'installateur le télécharge quand Windows ne l'a pas. Sur une connexion bloquée ou instable, ou sur les versions de Windows 10 qui refusent le petit programme d'amorçage de Microsoft (erreur 0x80040902), ce téléchargement échoue. Installez WebView2 avec l'installateur autonome de Microsoft, Evergreen Standalone x64, puis relancez l'installateur de Dub Studio.

Les téléchargements se bloquent ou échouent. Les gros fichiers reprennent là où ils se sont arrêtés : appuyez de nouveau sur le bouton. Si Hugging Face ou GitHub sont bloqués chez vous, réglez un proxy dans Paramètres → Réseau, ou téléchargez à la main les fichiers directs du tableau, placez-les là où l'indique la dernière colonne et appuyez sur Importer depuis un dossier.

L'export s'arrête avec Unrecognized option 'filter_complex_script'. C'était un échec sur ffmpeg 8 et plus récent, corrigé dans la 3.1.1 : mettez l'application à jour. L'application utilise le ffmpeg de tools\ffmpeg et, s'il n'y en a pas, accepte celui trouvé dans le PATH. Pour signaler une erreur d'export, joignez la sortie complète de ffmpeg tirée du journal.

La reconnaissance échoue avec MemcpyToHost ou Failed to allocate memory. Le GPU a manqué de mémoire pendant la reconnaissance vocale d'un fichier long ou volumineux (issue #4). Fermez les autres programmes qui utilisent le GPU, ou réglez l'étape de reconnaissance sur CPU dans les paramètres, puis relancez.

CUDA execution provider is not enabled, ou tout tombe sur un seul locuteur. Les bibliothèques GPU manquent ou sont trop anciennes pour le pilote. Installez le pilote NVIDIA actuel, appuyez sur le bouton de téléchargement du runtime CUDA, de cuDNN et d'ONNX Runtime GPU dans les paramètres des modèles, ou basculez l'étape sur le CPU.

Comment ça marche

analyze() est une première passe fixe : séparation → ASR avec timing par mot → diarisation → traduction contextuelle + vision (style des sous-titres / titres / marques) → OCR (mise en page / zones de flou). Le résultat est un document Project éditable. Chaque modification est un patch dessus avec aperçu ~0,17 s/image ; l'export ne rejoue que les étapes salies.

Stack : une coque native Tauri 2 (Rust) exécute dub-server (axum) dans le même processus sur 127.0.0.1:8793 (le MCP pour les agents est /mcp sur le même port) et ouvre une fenêtre sur la SPA —— React 19 + Vite + Tailwind + react-konva sur JASSUB. Moteurs : Parakeet-TDT ou Whisper (ASR) · Nemotron 3 Diarization (diarisation) · Gemma-4-12B GGUF (traduction + vision, llama.cpp) · Higgs Audio v3 (TTS) · Mel-Band Roformer (séparation, BSRoformer.cpp) · PP-OCR (ONNX) · ffmpeg/NVENC. Aucun processus Python à l'exécution.

Compiler depuis les sources

git clone https://github.com/timoncool/dub-studio.git
cd dub-studio

cd frontend && npm install && npm run build && cd ..   # 1) SPA
cargo build --release -p dub-server                     # 2) serveur natif (axum)
cd desktop && npm install && npx tauri build            # 3) coque bureau (Tauri)

Nécessite Node 20+, Rust (toolchain MSVC) et WebView2. Les moteurs natifs n'ont pas besoin d'être recompilés —— l'app télécharge des binaires précompilés.

Linux (expérimental)

Le .deb et l'AppImage pour Linux x86-64 sont expérimentaux. Ils viennent du même code avec les versions Linux des mêmes moteurs (llama.cpp, ONNX Runtime, BSRoformer.cpp, ffmpeg, le serveur audio.cpp, transcribe.cpp, yt-dlp), mais l'auteur travaille sous Windows et ne les a pas lancés sur un vrai bureau Linux. Si vous vivez sous Linux, ce serait génial que vous les peaufiniez et renvoyiez les corrections en pull request.

  • La voix locale demande une NVIDIA à partir de Turing (GTX 16, RTX 20 et plus récentes), comme sous Windows. Les voix dans le cloud fonctionnent sur n'importe quelle machine.
  • Le pilote NVIDIA (580 ou plus récent), libgomp1 et libssl3 viennent du système ; les modèles, moteurs et bibliothèques CUDA, l'application les télécharge au premier lancement dans ~/.local/share/dub-studio ($XDG_DATA_HOME).
  • Compilés à la main : le workflow Linux build (experimental) (.github/workflows/release-linux.yml) ou scripts/build-release-linux.sh <dossier avec models/ocr>.

Statistiques anonymes et actualités

L'app demande les actualités au serveur de l'auteur au démarrage puis toutes les heures. La requête ne porte aucun id : les actualités arrivent quel que soit votre choix ci-dessous. Les nouvelles s'affichent en haut de Nouveautés ou en bandeau en haut de la fenêtre et, sans connexion, l'app montre les actualités de sa version.

L'écran du premier lancement a une case Envoyer des statistiques d'utilisation anonymes, cochée par défaut. Le même interrupteur se trouve dans Paramètres → Statistiques anonymes, à côté de Ce qui est envoyé (le rapport exact du jour) et Nouvel identifiant d'installation. Tant qu'elle est cochée, l'app envoie le rapport du jour une minute après le démarrage, toutes les six heures, deux minutes après la fin d'un travail et à la fermeture (un rapport plus récent du même jour remplace le précédent) :

  • un id d'installation aléatoire créé sur cet ordinateur, lié ni au matériel ni à un compte ; décocher la case le supprime ;
  • l'app et sa version, le nom et la version du système, la langue de la fenêtre ;
  • la carte graphique : fabricant, tranche de mémoire vidéo (jusqu'à 8, 12, 16, 24+ Go) et si CUDA fonctionne ;
  • combien de tâches (analyse, doublage, rendu, export, téléchargement et les autres) se sont terminées, ont échoué ou ont été annulées ce jour-là.
  • les modèles de chaque étape (voix, reconnaissance, traduction, analyse d’images, séparation) et combien de tâches les ont utilisés ;
  • la raison d’un échec, en une ligne dont les chemins, noms, liens et tout texte entre guillemets sont retirés sur cet ordinateur avant l’envoi ; le serveur garde ces raisons 30 jours.

Jamais : vidéos, transcriptions, traductions, voix, noms de fichiers ou chemins, rien de personnel. Le serveur garde le pays que Cloudflare indique pour la connexion, pas l'adresse IP. DO_NOT_TRACK=1 ou STUDIO_TELEMETRY=0 dans l'environnement coupent entièrement les statistiques : aucun id n'existe et rien n'est compté.

Contributions et forks

Les collaborateurs sont les bienvenus. Je serais vraiment ravi de voir Dub Studio porté sur d'autres plateformes et GPU — l'architecture le permet, je n'ai simplement pas le temps de faire les portages moi-même. Si vous le voulez sur GPU AMD / Intel, macOS ou Linux, forkez-le — les PR sont les bienvenues. Linux a déjà une version expérimentale (voir Linux (expérimental)) : la peaufiner est l'aide la plus bienvenue.

Les localisations supplémentaires sont tout aussi bienvenues : l'app et la landing existent en 6 langues aujourd'hui — traduisez les fichiers de langue (frontend/src/locales/ et le dictionnaire dans docs/index.html) et ouvrez une PR pour ajouter la vôtre.

Auteurs

Crédits

Soutenir l'auteur

Je crée des logiciels open source et je fais de la recherche en IA —— l'essentiel est en accès libre. Les dons me permettent de créer et chercher davantage.

Toutes les façons de soutenir | dalink.to/nerual_dreming | boosty.to/neuro_art

  • BTC : 1E7dHL22RpyhJGVpcvKdbyZgksSYkYeEBC
  • ETH (ERC20) : 0xb5db65adf478983186d4897ba92fe2c25c594a0c
  • USDT (TRC20) : TQST9Lp2TjK6FiVkn4fwfGUee7NmkxEE7C

Licence

Le code de l'application est sous MIT. Les modèles ne le sont pas : chacun garde sa propre licence, et ce qui suit est ce qu'indiquent aujourd'hui leurs pages. Lisez-les avant de publier ou de vendre une vidéo doublée.

Composant Licence Ce que cela signifie
Higgs Audio v3 (Boson AI) Boson Higgs TTS 3 Research and Non-Commercial License Gratuit pour la recherche, l'usage personnel et, avec le Creator Use Grant, pour les créateurs numériques qui publient et monétisent leur propre contenu en créditant Higgs Audio de Boson AI. L'héberger, le redistribuer ou l'intégrer dans un produit ou un service destiné à des tiers, service de doublage compris, exige une licence commerciale de Boson
Parakeet-TDT 0.6B v3 (NVIDIA) et son export ONNX CC-BY-4.0 Créditer NVIDIA
Parakeet Ultra (Moondream, basé sur NVIDIA Parakeet-TDT) CC-BY-4.0 Créditer Moondream et NVIDIA
Nemotron 3 Diarization (NVIDIA) OpenMDW-1.1 Créditer NVIDIA ; l'export ONNX vient de altunenes/parakeet-rs
CrisperWhisper 2.0 turbo (nyra health) nyra health non-commercial research license Recherche non commerciale uniquement
VoxLingua107 language id (SpeechBrain) Apache-2.0
Supertonic 3 (Supertone) BigScience OpenRAIL-M Lisez ses restrictions d'usage
Audio8 TTS Realistic-Air (Edge0) Apache-2.0
Qwen3-TTS (Qwen) et son affinage des accents russes Apache-2.0
Fish Audio Drama 3 Fish Audio Research License Recherche non commerciale uniquement
WeSpeaker ResNet34 CC-BY-4.0 Citer WeSpeaker
DPDFNet (Ceva) Apache-2.0
Silero VAD v6.2 MIT
RUAccent MIT
Gemma-4 12B (Google) Apache-2.0 sur la page du modèle, qui renvoie aux conditions Gemma 4 de Google Lisez les deux
Mel-Band Roformer voc_fv6 (GaboxR67), GGUF de chenmozhijin Aucune licence indiquée sur les pages des modèles ; le moteur BSRoformer.cpp est sous MIT Demandez aux auteurs avant tout usage commercial
Détecteur de visages SCRFD (InsightFace buffalo_l) InsightFace : modèles préentraînés pour la recherche non commerciale uniquement Le casting de visages réels est soumis à cette restriction
LVFace (ByteDance) MIT
CCIP (deepghs) OpenRAIL Lisez ses restrictions d'usage
anime_face_detection (deepghs) MIT
Occulteur xseg_1 (modèles FaceFusion) Aucune licence indiquée sur la page du modèle Demandez aux auteurs avant tout usage commercial
WeSpeaker ResNet34-LM CC-BY-4.0 Créditer WeSpeaker
PP-OCR (PaddleOCR) Apache-2.0
llama.cpp, ONNX Runtime, BSRoformer.cpp, JASSUB MIT
FFmpeg (build BtbN) Build GPL de FFmpeg Fourni comme programme séparé, non lié à l'application
NVIDIA CUDA runtime, cuBLAS, cuFFT, cuDNN Conditions de licence propres à NVIDIA Téléchargés chez NVIDIA et sur PyPI, absents du dépôt

Explorer des projets similaires