diff --git a/scripts/livecoding_video_pipeline.py b/scripts/livecoding_video_pipeline.py index a3aa0394ef..5067d3a3cb 100644 --- a/scripts/livecoding_video_pipeline.py +++ b/scripts/livecoding_video_pipeline.py @@ -1,4 +1,4 @@ -"""V0 narrow du pipeline livecoding-video (issue #15604, hommage SwitchAngel). +"""V0 narrow du pipeline livecoding-video (issue #15604, homage a une voix tierce). **Scope V0 narrow** (c.573, fenetre 30 min) : Cette V0 livre UNIQUEMENT l'etape 1 du pipeline (composition Strudel @@ -29,7 +29,7 @@ - Etape 6 mixage ffmpeg : `scripts/audiobook_pipeline.py` a deja l'integration loudnorm -14 LUFS + fade-out. -**Voie 3 B.0** : voie du retrait consenti SwitchAngel tenue +**Voie 3 B.0** : voie du retrait consenti d'une voix tierce tenue (bibliography-hygiene §2, audit-cross-source-distillation §3.1, 02-2-XTTS-Voice-Cloning l.2018). Aucune voix clonee, aucun verbatim, aucune archive media dans le depot. La methode (narration + composition diff --git a/scripts/tests/test_livecoding_video_pipeline.py b/scripts/tests/test_livecoding_video_pipeline.py index 1de442acc1..c1e89878df 100644 --- a/scripts/tests/test_livecoding_video_pipeline.py +++ b/scripts/tests/test_livecoding_video_pipeline.py @@ -149,10 +149,12 @@ def test_output_path_is_documented_not_created(self): def test_no_voice_cloning_legal_proof(self): """Aucune voix clonee de tiers (regle 02-2-XTTS-Voice-Cloning.ipynb ligne 2018 'consentement ecrit obligatoire'). Le test verifie - qu'aucun IDENTIFIER ou APPEL lie au clonage n'est expose, sans - interdire la mention textuelle du nom SwitchAngel dans la - docstring (mention de retrait consenti, c.647 INLINE substance - autorisee — voir 'hommage' et 'voie 3 B.0' dans la docstring). + qu'aucun IDENTIFIER ou APPEL lie au clonage n'est expose dans le + code source. La docstring peut mentionner la voie de retrait + consenti d'une voix tierce en termes generiques ('homage', + 'voie 3 B.0'), mais aucun identifiant personnel ne doit + apparaitre dans le code ni dans la docstring (CHANGES_REQUESTED + myia-ai-01 c.578 -- anonymisation stricte). """ # 1. Aucune constante de voix clonee et aucun appel XTTS / clonage. forbidden = [ @@ -170,6 +172,15 @@ def test_no_voice_cloning_legal_proof(self): f"{src_file} contient {token!r} : c.647 / 02-2-XTTS " "violees. Refuser." ) + # 1b. Aucun identifiant personnel litteral dans la source + # (CHANGES_REQUESTED myia-ai-01 c.578 -- anonymisation stricte : + # la docstring peut mentionner le retrait consenti en termes + # generiques, mais aucun identifiant reel). + assert "switchangel" not in src.lower(), ( + f"{src_file} contient le token 'switchangel' : " + "CHANGES_REQUESTED myia-ai-01 c.578 violee. " + "Anonymiser en prose generique." + ) # 2. Verdict explicite qu'aucune voix tierce n'est clonee. result = run_pipeline(style_name="ambient", duration_seconds=120, output_path="out/x.mp4") # Le run_pipeline ne capture PAS de voix tierce : il delegue