Imaginez éditer automatiquement des podcasts de plusieurs dizaines de minutes en quelques minutes seulement. Ce serait de la magie !
Un week-end je devais éditer un podcast, j’avais vu un plugin sur Premiere Pro qui permettait d’éditer rapidement les pistes vidéo en fonction des pistes audio.
Pour éditer j’utilise DaVinci, et je n’ai pas trouvé d’équivalent sur ce logiciel. Alors j’ai décidé de le faire.
Voilà le résultat après un weekend sur le sujet.
Pour réaliser ça en un week-end, je me suis armé de ChatGPT. Mais attention, ce ne fut pas un long fleuve tranquille.
Les débuts difficiles
Le scripting sur DaVinci n’est pas aussi répandue que sur Adobe Premiere ou After Effect. Et donc, une communauté moins grande = moins de ressources et d’aide en ligne.
Pour commencer, je devais trouver la bonne documentation sur l’API de DaVinci Resolve, c’était pas si évident. Une doc sur GitHub m’a été d’une grande aide, mais il m’a fallu de nombreuses itérations pour que tout fonctionne.
Voici un extrait de code qui permet de dupliquer une timeline puis de supprimer les pistes audio et vidéo dont je n’ai pas besoin pour exporter uniquement l’audio voulu. J’en avais besoin pour pouvoir exporter l’audio final d’une piste audio.
Le rôle de ChatGPT
Au départ je suis aller voir ChatGPT en expliquant mon projet et en lui demandant de tout me faire et de me le servir sur un plateau.
Erreur.
Au départ ChatGPT m’a proposé des script en LUA un langage de programmation assez pratique mais qui ne permettait pas de traiter le son comme je le souhaitais.
On a tout refait avec Python.
Assez souvent ChatGPT inventait des fonctions qui n’existaient pas.
Comme j’avais la main sur la doc, plus ou moins claire, de DaVinci, j’ai pu l’exporter en format texte pour la donner à ChatGPT.
En expliquant mes objectifs sur des fonctions précises j’ai quand même pu obtenir de bonnes suggestions de code de sa part.
Surtout sur la partie traitement de son avec Python où surement plus de ressources avaient été ingérées dans son entraînement.
Le processus n’était pas aussi simple que ce que j’imagine.
J’ai dû corriger et ajuster le code à plusieurs reprises avant d’obtenir un résultat satisfaisant.
Mais quand même, en un weekend j’ai pu obtenir un POC fonctionnel et que je peux déjà utiliser en condition réelle.
L’optimisation
Initialement, le script était long pour exporter et traiter les fichiers audio.
Pour améliorer cela, j’ai utiliser des sous-processus (threads) pour paralléliser le traitement de l’audio et l’ajout à la timeline.
Également, pour améliorer le temps de traitement perçu, au lieu de tout traiter en arrière plan avec juste une icône de chargement, puis de tout ajouter à la timeline, j’ai fais en sorte que les clips traités s’ajoutent en temps réel sur la piste vidéo.
Autre exemple de code qui permet de traiter des parties de clips selon s’ils respectent des conditions (les paramètres sont ajustables, comme le nombre de secondes minimum de parole requises pour afficher la piste vidéo ou encore le nombre de frame où l’on affiche la personne avant le début de sa prise de parole…)
Le résultat final
Aujourd’hui, mon script fonctionne presque parfaitement. En quelques minutes, il est capable d’éditer automatiquement des podcasts assez long (<10min pour 50min de podcast) en utilisant des pistes audio distinctes pour chaque caméra. Le processus est fluide et peut être personnalisé selon les besoins spécifiques de chaque projet.
Prochaines étapes
Les deux prochaines étapes principales :
- Améliorer la vitesse de traitement
- Incorporer l’IA pour utiliser la diarisation afin d’identifier et traiter automatiquement les différentes voix dans une seule piste audio
Conclusion
Créer ce script a bien occupé mon weekend, j’aime beaucoup Python et j’ai c’était une bonne expérience avec DaVinci.
Sur premiere le plugin que j’ai croisé coûte 20€/mois 😅
Pour rendre ce script user-friendly j’ai encore un peu de boulot, actuellement il faut s’y connaitre un peu en technique pour lancer le script car je n’ai pas réussi à lancer du multi-processus via l’interface de DaVinci, il faut donc lancer manuellement le script Python en dehors du logiciel.
Si vous souhaitez être prévenu lorsque le script est disponible, rendez-vous ici : https://panja.typeform.com/to/BVWubjYD