Communitygithub.com

SonuSV7719/real-sound

Créez des bandes-son premium et réalistes pour vidéos et animations générées par code, à partir d'enregistrements sous licence réelle.

Qu'est-ce que real-sound ?

real-sound est un agent spécialisé dans la conception sonore professionnelle pour les vidéos générées par code (Remotion, HyperFrames, three.js, GSAP, etc.). Il agit comme un superviseur sonore qui construit la bande-son exclusivement à partir d'enregistrements réels et sous licence : un morceau de musique, des bruitages (SFX), des ambiances et des sons Foley. L'agent ne génère aucun son synthétiquement ; il sélectionne, coupe, place, mixe et masterise les fichiers audio existants à l'aide d'outils déterministes. Le processus est structuré en étapes rigoureuses : création de listes de repères (cue lists) à partir des images, rédaction d'un brief, recherche et téléchargement des assets (sur Freesound, Mixkit, bibliothèques de compositeurs), vérification des licences, édition musicale, design des fragments sonores, intégration, QA objective (mesures de clics, masquage, dureté, synchronisation, loudness), critique multi-agent, correction, mastering et mux final. Chaque étape est vérifiée par des tests automatisés et des mesures, garantissant une qualité professionnelle, comme une bande-son de film de lancement. L'agent utilise des outils Python (numpy, scipy, soundfile, earshot) et des scripts dédiés (analyze.py, mix.py, qa.py, audit.py, etc.) pour exécuter chaque étape de manière reproductible et mesurable. Il est conçu pour les développeurs et les créateurs de contenu qui veulent des bandes-son réalistes et de haute qualité sans effort manuel de montage audio complexe. La cible est toute vidéo ou animation nécessitant une conception sonore : films de lancement, démos de produits, vidéos de fonctionnalités, parcours UI, logos animés, explainers, bandes-annonces et courts métrages animés.

Compatible avec~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/SonuSV7719/ai-video-studio/tree/master/skills/real-sound

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait real-sound ?

Vous êtes le superviseur sonore d'un film que vous ne pouvez pas entendre. La bande-son est construite UNIQUEMENT à partir d'audio réel, enregistré ou produit professionnellement (un morceau de musique sous licence, des bruitages et SFX réels, des ambiances réelles), placé sur les images de repère du film par un mixeur déterministe, mesuré plutôt qu'écouté, critiqué à travers cinq lentilles, corrigé par un agent, masterisé, crédité et multiplexé. Le code sélectionne, coupe, place, nivelle, panoramique, égalise, modifie la hauteur par rééchantillonnage, étire temporellement la musique et masterise ; le code ne génère jamais un son.

La référence est un film de lancement professionnel : chaque son causé par quelque chose à l'écran, une palette de matériaux, le drop de la musique sur la révélation du héros, de la retenue partout ailleurs, un logo résolu, une queue dans le silence. Règles : references/sound-design.md (et le dépôt earshot docs/launch-video-sound.md pour le profil de référence groupé : 7 films de lancement professionnels).

<skill> ci-dessous est ce dossier. Python : {{PY}} ci-dessous (et dans chaque modèle d'invite) est UN interpréteur qui a numpy, scipy, soundfile et le package earshot : l'environnement virtuel du dépôt earshot (<repo earshot>/.venv/Scripts/python.exe sur Windows, <repo earshot>/.venv/bin/python ailleurs), ou tout Python où <python> -c "import earshot" fonctionne. python nu sur Windows est souvent le stub du Microsoft Store et échoue. Remplacez le chemin complet pour {{PY}} lorsque vous exécutez une commande ou passez une invite à un sous-agent (les autres espaces réservés sont listés dans references/process.md). Exécutez les scripts avec -I (isolé : les fichiers téléchargés ne peuvent jamais masquer un module) ; chaque script sauf scripts/licences.py (le module de politique de licence que audit.py et credits.py importent) imprime --help.

Le processus

étapequisortieporte de validation
0. liste de repèreschefout/cues.jsonimages de synchronisation calculées à partir du code de l'image
1. briefchefaudio/SOUND_BRIEF.mdchaque repère a un besoin sonore (ou "rien")
2. recherche (par catégorie, en parallèle)agents de rechercheaudio/assets/<cat>/, manifesteschaque fichier mesuré + earshot realness "réel ou produit professionnellement" sur la coupe utilisée (un "incertain" uniquement avec ses preuves et une revérification au niveau de la coupe écrite dans le manifeste)
3. audit de licenceauditeuraudit.jsonaudit.py exit 0 pour ce que le film utilise
4. édition musicalesuperviseur musicalaudio/design/music.jsongrille vérifiée, drop sur la révélation, coupures propres
5. fragments de design (par catégorie, en parallèle)designersaudio/design/<cat>.jsonrendu solo + QA propre
6. intégrationchefbande-son, stems, rapport, traceporte de mastering (+-0.5 LU, <= -1.5 dBTP)
7. QA + écoutechefout/qa/qa.json, timeline / feuille / critique earshotaucun échec QA
8. critique (5 lentilles, en parallèle, lecture seule)critiquesproblèmes classés + opérations testées
9. correctionUN seul correcteurle designQA : pas de régression
10. master, crédits, muxchefCREDITS.md, texte de description, le filmcrédits exit 0, lag 0

Le détail de chaque étape, les rôles et ce que chaque critique mesure : references/process.md. Chaque invite de sous-agent est un brief prêt à remplir dans templates/prompts/.

0. Liste de repères à partir de l'image

Chaque son repose sur une image que le code de l'image calcule : une image de contact, l'image à 50 % d'un pop-in, le pic de vélocité d'un mouvement, le coup d'un riser, l'image où le mot-clé devient lisible. Les films cinétiques ont déjà out/cues.json (export-cues.ts) ; pour tout le reste, écrivez le même format (templates/cues.json) à partir des constantes de la timeline. Des identifiants stables (act:chose:n) permettent aux règles de faire correspondre des classes d'action avec une regex.

1. Brief

Copiez templates/SOUND_BRIEF.md vers audio/SOUND_BRIEF.md : concept (palette, l'arc de la musique, lieux), la carte de l'image (chaque repère : ce qui est à l'écran, le besoin sonore), zones d'ambiance, licences autorisées, barre de qualité, disposition des fichiers. C'est le contrat que chaque sous-agent reçoit textuellement. Choisissez la ligne de personnalité de la marque (references/sound-design.md §3).

2. Recherche, par catégorie (templates/prompts/sourcing.md)

Catégories typiques d'un film de lancement : ui (clics, tapotements, toggles, pops), keyboard, motion (whooshes, risers), impacts (coups de révélation, le logo), ambience, music ; un film avec personnages ajoute foley, ses mondes, ses objets. Freesound (CC0 / CC BY ; prévisualisation HQ cdn.freesound.org/previews/<id//1000>/<id>_<user>-hq.ogg), Mixkit (WAV assets.mixkit.co/active_storage/sfx/<id>/<id>.wav), bibliothèques de compositeurs pour la musique ; les licences sont lues sur la propre page de chaque élément (references/licences.md) ; téléchargements séquentiels polis ; chaque fichier mesuré :

{{PY}} -I <skill>/scripts/analyze.py audio/assets/ui/* --png out/audio-review/ui --out out/audio-review/ui.json
{{PY}} -m earshot realness audio/assets/ui/                  # porte : "réel ou produit professionnellement" (revérifier les coupes : --start --end)
{{PY}} -m earshot rank "un seul clic de trackpad net" audio/assets/ui/ --top 5
{{PY}} -m earshot match <file> "un pop de liège doux" --alts "un coup de feu" "une explosion de ballon"
{{PY}} -m earshot find <long take> "une seule pression de touche mécanique" --top 8   # coupes ; ignorer toute marquée head cut / tail cut

3. Audit de licence (templates/prompts/licence_audit.md)

L'auditeur enregistre ce que chaque page dit (licence_seen, licence_confirmed) dans audio/assets/manifests/audit.json ; le script vérifie le reste (classification, ids vs URLs, fichiers décodent, durées, lignes de crédit) :

{{PY}} -I <skill>/scripts/audit.py --root . --report out/qa/mix_report.json [--fetch]

Autorisé : CC0, domaine public, CC BY 2.0-4.0, licences gratuites Mixkit, Pixabay. Interdit : NC, ND, SA, Sampling+, personnel, personnalisé, contesté. Non vérifié = bloqué.

4. Musique (templates/prompts/music_supervisor.md)

Un morceau sous licence dont la structure correspond au film. Écrivez l'arc par barre de film (templates/arc.json), puis :

{{PY}} -I <skill>/scripts/arrange.py audio/assets/music/<track> --film-bpm 120 --arc audio/arc.json --out out/audio-review/music/arrange.json

Il ajuste le tempo, déplace la grille sur les attaques mesurées (les trackers de tempo ont un retard de 20 à 50 ms), propose la phase de downbeat, ancre le drop de la barre de film sur le candidat de drop le plus fort et rédige des segments aux lignes de barre (un bloc music prêt à coller). Le downbeat est le point faible : lorsqu'il imprime une confiance FAIBLE (sur l'un des deux morceaux testés, il était décalé d'une demi-mesure), décidez entre les deux grilles imprimées à partir de la première note, des entrées de section et des changements d'accords dans le tableau de barres, et relancez avec --phase N. Ensuite, éditez par jugement : l'harmonie continue à travers chaque coupure, le downbeat du drop sur l'image du héros, l'accord final sur le logo, tail_fade jusqu'à la fin.

5. Fragments de design, par catégorie (templates/prompts/designer.md)

audio/design/<category>.json avec des échantillons (coupes), des tranches (couper une prise de nombreux coups en coups uniques), des pools, des règles sur les événements de repère, des placements libres, des lits d'ambiance, le bloc de musique. Référence avec chaque clé et des exemples réels : references/design-format.md ; un exemple complet de vidéo de lancement : templates/design_fragment.json (ses noms de fichiers sont des espaces réservés tels que mk-0000_mouse-click.wav : il se rend une fois que chacun est remplacé par un enregistrement réel de vos manifestes ; mix.py s'arrête et liste les fichiers manquants jusqu'à ce moment). Vérifiez seul :

{{PY}} -I <skill>/scripts/mix.py --only ui --dump out/audio-review/ui/dump        # chaque coupe en WAV + nombres
{{PY}} -I <skill>/scripts/mix.py --only ui --trace out/audio-review/ui/adds.json --out out/audio-review/ui/solo.wav
{{PY}} -I <skill>/scripts/qa.py --only ui --report out/audio-review/ui/solo_report.json --stems out/audio-review/ui/solo_stems --trace out/audio-review/ui/adds.json --out out/audio-review/ui/qa.json
{{PY}} -m earshot timeline out/audio-review/ui/solo.wav --cues out/cues.json

6-7. Intégration, QA, écoute

{{PY}} -I <skill>/scripts/mix.py --root . --design audio/sounddesign.json --cues out/cues.json --trace out/qa/adds.json
{{PY}} -I <skill>/scripts/qa.py --layers                      # clics, bords, audibilité, dureté, loudness, couverture, sync, densité
{{PY}} -I <skill>/scripts/qa.py --listen --realness --video out/film.mp4   # + timeline earshot, feuille, critique, realness
{{PY}} -m earshot critique out/audio/soundtrack.wav --video out/film.mp4    # scorecard vs films de lancement professionnels
{{PY}} -m earshot sheet out/audio/soundtrack.wav -o out/qa/sheet.png --video out/film.mp4 --cues out/qa/cues_sounded.json

qa.py lie chaque constatation à la règle et à l'échantillon qui l'ont causée (la trace). Il est utilisable sans les modèles ; --listen ajoute la transcription d'earshot (out/qa/qa_timeline.txt), la feuille annotée et le scorecard.

8-9. Critique et correction

Cinq critiques en lecture seule en parallèle, chacun avec son invite : critic_sync.md, critic_edges.md, critic_masking.md, critic_tonal.md, critic_director.md. Chacun teste ses corrections comme une variante dans son propre dossier :

{{PY}} -I <skill>/scripts/variant.py --ops out/audio-review/critic_tonal/ops_v1.json --out out/audio-review/critic_tonal/v1 --render --qa

et retourne les problèmes classés avec les opérations exactes et les nombres avant -> après. Ensuite, UN seul correcteur (fixer.md) fusionne les opérations, résout les conflits, vérifie la variante fusionnée par rapport au qa.json précédent, et l'applique (variant.py --apply, originaux sauvegardés). Accusez réception des exceptions délibérées confirmées avec "qa_ok": "<raison>". Au moins un tour ; un second lorsque les niveaux ou l'édition musicale ont changé.

10. Master, crédits, mux

mix.py masterise avec master.py (-14 LUFS, limiteur de pic vrai, plafond 0.77 linéaire ; porte +-0.5 LU et <= -1.5 dBTP).

{{PY}} -I <skill>/scripts/audit.py --root . --report out/qa/mix_report.json            # exit 0
{{PY}} -I <skill>/scripts/credits.py --root . --design audio/sounddesign.json --audit audio/assets/manifests/audit.json
node <skill>/scripts/mux.mjs --video out/film.mp4 --audio out/audio/soundtrack.wav --out out/film_sound.mp4
{{PY}} -m earshot timeline out/film_sound.mp4 --cues out/qa/cues_sounded.json          # le fichier fini, entendu

CREDITS.md + out/CREDITS_description.txt (à coller dans la description de la vidéo : les crédits CC BY sont obligatoires là-bas). mux.mjs copie en flux l'image et coupe l'audio AAC à la durée de l'image.

Vidéos de lancement : la carte son

imagesonrepose sur
curseur se déplace, survole, défile, progression, texte défilantrien (la musique le porte)
clic / tapotementUNE voix de clic réel pour le film, appui + relâchement ~85 ms plus tard, même niveau à chaque foisl'image d'appui
frappeun vrai clavier, tranché ; <= ~12 touches/s, un mot au-dessus de ~25 car/s ; la musique descend de 6-10 dBchaque caractère sonné
une carte / puce / badge apparaîtun vrai pop doux ou tic, montant à travers une série50 % de son trajet
toggle, verrouillage, valeur finale d'un compteurun vrai loquet / clic / tic netl'image de contact / verrouillage
mouvement de caméra-scale, coup de fouet, zoom (~2 par film)un vrai swish, apex sur le pic de vélocitépic de vélocité
coupes franchesrien
tension jusqu'à la révélationla montée de la musique, ou un vrai riser se terminant 30-250 ms avant le couple coup
révélation du hérosle DROP de la musique (éditez le morceau pour que son downbeat atterrisse ici) + optionnellement un impact réell'image
logo / lockupla musique s'arrête sur une ligne de barre ou se filtre, 0.2-0.7 s de quasi-silence, UNE note douce dans la tonalité, queue jusqu'au silencel'image où le mot-clé se lit

Niveaux : -14 LUFS, pic vrai <= -1 dBTP après AAC, LRA 5-9 LU, le moment le plus fort sur le drop (30-60 % dedans), le logo 8-20 dB en dessous, environ 5 effets conçus par 10 s, effets secs et centrés. Normes mesurées et signes révélateurs bon marché : references/sound-design.md.

Outils

besoinoutil
mesurer les enregistrements (format, plancher, bande passante, attaques, pics, tempo / tonalité) + PNG de spectrogrammescripts/analyze.py
entendre les enregistrements : réel vs synthétisé, à quoi ça ressemble, meilleure correspondance, meilleure prise dans un fichier long{{PY}} -m earshot realness / describe / match / rank / find / compare / ab
niveaux / luminosité / attaques d'un fichier ou d'un extrait (--start --end){{PY}} -m earshot measure (Python : from earshot import api; api.measure(...), de même api.find, api.realness ...)
audit de licence + fichierscripts/audit.py (politique dans scripts/licences.py)
grille musicale, downbeats, ébauche d'édition aux lignes de barrescripts/arrange.py
rendre le design (+ solo --only, --dump des coupes, --trace pour QA)scripts/mix.py
master et mesure de loudnessscripts/master.py (--measure)
QA objective liée aux placementsscripts/qa.py (--layers, --listen, --realness)
variantes de critique, application du correcteurscripts/variant.py
crédits pour CREDITS.md et la description vidéoscripts/credits.py
mettre la bande-son sur l'imagescripts/mux.mjs
écouter un mix complet / film ; image annotée ; scorecard de film de lancement{{PY}} -m earshot timeline / sheet / critique

Fichiers

audio/SOUND_BRIEF.md                 le contrat              (templates/SOUND_BRIEF.md)
audio/assets/<category>/             enregistrements téléchargés     (<source>-<id>_<slug>.<ext> ; ne jamais commit ou publier)
audio/assets/manifests/<cat>.json    une entrée par enregistrement   (templates/manifest_entry.json)
audio/assets/manifests/audit.json    audit de licence             (templates/audit_entry.json)
audio/sounddesign.json               niveau supérieur : inclut, bus, master   (templates/sounddesign.json)
audio/design/<category>.json         un fragment par designer             (templates/design_fragment.json)
out/cues.json                        les événements de repère de l'image              (templates/cues.json)
out/audio/soundtrack.wav, stems/     le master et ses stems
out/qa/                              mix_report.json, adds.json, cues_sounded.json, master.json, qa.json
out/audio-review/                    travail par catégorie et par critique, variantes, dumps (la piste d'audit)
CREDITS.md, out/CREDITS_description.txt

Références

  • references/process.md : rôles, étapes, ce que chaque critique mesure, seuils et leur source

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills associés