Kinodioraptor, l’avaleur de bruit pour Kinomap

Je vais vous parler d’un petit projet personnel sur lequel je bosse depuis quelques jours. Un projet qui, à ma grande surprise, avance à pas de géants. En fait, il est à toutes fins pratiques terminé, il ne reste plus qu’à ajouter quelques fonctions secondaires et à rendre la mécanique interne compréhensible en vue d’un éventuel partage en source libre pour ceux que ça pourra éventuellement intéresser, quand j’aurai terminé la phase d’essais.

C’est un truc qui tourne principalement en Python, tout en exploitant ffmpeg et le lecteur MPV. Je l’appelle « Kinodioraptor », parce qu’il se nourrit de sons et de bruits indésirables sur les vidéos de vélo que je prépare pour Kinomap. Ce peut être, par exemple, une motocyclette qui arrive par derrière et me double sur une route de campagne, transformant pendant quelques secondes la trame sonore bucolique de la balade en une désagréable pétarade. Ce peut être aussi un commentaire tout à fait inutile de ma part, genre : « Oh, il y a un joli papillon posé sur cette clôture, là », alors que sur la vidéo, filmée en mode Wide sur la GoPro, on ne distingue pas vraiment la clôture, sans parler du papillon… Autre cas de figure, ce peut être encore, quand je roule près de l’Aéroport International de Narita, un avion intercontinental qui fend le ciel et pourfend le silence juste au-dessus de moi.

De tout cela, Kinodioraptor est friand. Laissez-moi vous montrer à quoi il ressemble.

Quand on l’appelle, il jaillit des buissons sous cette forme :

De gauche à droite, sur la première ligne, les boutons servent à ouvrir le fichier vidéo et à y naviguer.

[Ouvrir le fichier] [Reculer de 5 sec] [Reculer de 1 sec] [Lecture/Pause] [Avancer de 1 sec] [Avancer de 5 sec] [Lecture 1x] [Lecture 2x] [Lecture 3x] [Lecture 4x]

La stratégie consiste, pour sauver du temps, à faire d’abord une lecture à vitesse 3x ou 4x pour chercher les véhicules rencontrés au cours de la balade.

Quand on en trouve un, on utilise les boutons de sélection

pour indiquer à notre avaleur de bruit la section de la vidéo qu’on lui offre en pâture. Exemple :

Ce motocycliste m’a dépassé et, sur la vidéo, ça provoque dans les écouteurs un bruit de moteur qui fait sursauter le pauvre Kinomapien en train de visionner la vidéo sur l’appli Kinomap. C’est ici que Kinodioraptor entre en scène.

J’ai sélectionné la section de 7 secondes pendant laquelle on entend le bruit du moteur. Dans les paramètres de mixage (Blending parameters sur l’image), je peux choisir le niveau sonore de ces 7 secondes (Volume of the original audio), ainsi que celui de l’audio que je vais fusionner à ces 7 secondes (Volume of the added audio).

Sur cet exemple, je réduis à 30% le son de la section originale, et lui superpose le son des 7 secondes qui précèdent (ou, si ce son ne me convient pas pour une raison quelconque, le son des 7 secondes qui suivent le passage de la moto). Tout en bas de cette fenêtre de paramètres de mixage, il y a un bouton d’écoute ([Listen]). Quand on clique dessus, Kinodioraptor prépare un échantillon audio de la nouvelle section de 7 secondes, sur laquelle, comme par magie, le motard remplace son affreux moteur à combustion par un agréable moteur électrique dont le niveau de doux ronronnement dépend simplement du volume choisi (30 sur cet exemple). Pour une balade très zen, on couperait complètement le bruit du moteur en choisissant 0 (zéro) pour l’audio original, mais dans le cas d’une vidéo conçue pour Kinomap, où le réalisme et l’expérience immersive passent avant tout, 30 est généralement un bon choix.

Il se peut aussi, je le sais par expérience, que ni le son qui précède, ni celui qui suit, ne puissent être utilisés. C’est le cas, par exemple, quand je traverse un bourg où, par malheur, il y a beaucoup de trafic à ce moment précis. La meilleure solution consiste à trouver, ailleurs sur la vidéo, un passage adéquat (même genre de route, donc même sonorité, mais sans véhicules), et à cliquer sur le bouton [Manual] pour indiquer la section à utiliser pour la superposition.

L’option de paramétrage manuel permet de spécifier le début et la fin de la partie audio à utiliser pour le mixage. Ici, j’utilise le son qui commence à la 325e seconde de la vidéo pour atténuer celui de la moto indésirable (926,9 à 933,9).


J’ai aussi prévu une autre option, à utiliser avec parcimonie, qui permet de commenter la vidéo avec le microphone de l’ordinateur. C’est le bouton [Talk], qu’on peut utiliser après avoir coché « Voice recording ».

Le volume du micro ne se règle pas dans les paramètres de Kinodioraptor, mais dans ceux du système d’exploitation. Il suffit, après s’être enregistré, d’utiliser le bouton [Listen] pour écouter le résultat. (Dans le cas de cette option manuelle, le son enregistré se superpose au son original, dont le volume, dans ce cas-là aussi, est défini sous « Volume of the original audio ».

Je sais que Kinomap préfère des balades où l’on n’entend que l’environnement naturel ou ambiant, mais je pense que ce bouton [Talk] peut être utile dans deux situations :

  1. Une vidéo de coaching à l’extérieur, sur laquelle le coach ajoute des commentaires depuis son ordinateur.

  2. Une section de balade qui exige, selon le cycliste, une explication. J’ai un exemple très concret à ce sujet : je suis passé sur un feu rouge récemment, mais c’était un feu rouge clignotant. J’ai donc précisé dans un commentaire, ajouté depuis l’ordinateur, que je n’étais pas en infraction. Bon, je sais bien que les vidéos de Kinomap sont visionnées par des gens partout sur la planète et qu’une partie d’entre eux, seulement, comprendront mon commentaire articulé en français. Mais c’est, comme qui dirait, un cas de conscience (peut-être exagéré, j’en conviens).


Toutes les sections de la vidéo sélectionnées pour le mixage audio sont mémorisées par le programme.

On peut aussi supprimer la dernière section créée avec [Undo Last], ou carrément toutes les sections pour repartir à zéro ([Undo All]).

Et finalement, le bouton [Proceed] du menu lance le traitement, qui produit une nouvelle piste audio sans convertir la piste vidéo, pour sauver du temps et préserver la qualité initiale de l’image.


Voilà où j’en suis. Tout fonctionne, mais si je veux éventuellement partager ce programme, il va falloir un gros travail d’explication du code, car pour l’instant aucun programmeur ne s’y retrouverait si je lui donnais le code tel quel.

Je précise, et j’aurais sans doute dû le faire tout au début, que je ne suis pas programmeur. J’avais en tête une idée très claire de ce que je voulais faire, mais aucune compétence informatique pour le mettre en œuvre. Je suis donc allé discuter avec une IA (Perplexity) en me disant qu’elle pourrait peut-être m’aider. Elle l’a fait, à grands coups d’essais et d’erreurs, et ça a donné naissance à Kinodioraptor. J’ai plusieurs dizaines, voire plus d’une centaine de versions avortées de ma petite bête, complètement inutilisables. Elle a bien souffert, mais aujourd’hui elle tient la route et est très docile.

À suivre



Billet n° 186


➕ Commenter

Notez le n° de billet qui figure ci-dessus. Le formulaire s'ouvrira dans une nouvelle fenêtre.