FunClip : découper une vidéo à partir de sa transcription
FunASR-powered video transcription, subtitle generation, and LLM-assisted clipping tool with a local Gradio UI.
En bref
- De quoi s’agit-il ?
- FunClip est un outil Python sous licence MIT qui transcrit une vidéo avec les modèles Paraformer de FunASR, puis laisse sélectionner des segments par texte ou par locuteur dans une interface Gradio locale. La promesse est claire, la dépendance à FunASR l'est tout autant.
- À qui s’adresse-t-il ?
- FunClip convient aux équipes qui traitent des vidéos majoritairement en chinois et qui acceptent de gérer un environnement Python avec FunASR 1.4.9 ou plus récent, ffmpeg et le téléchargement des poids de modèles. Il ne convient pas à ceux qui cherchent un service hébergé sans dépendances, ni à ceux qui veulent une interface de montage complète : le README liste d'ailleurs le découpage par périodes inversées et la suppression des silences comme non implémentés.
- Puis-je l’utiliser commercialement ?
- Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Les derniers commits datent d’il y a 5 jours.
- En quel langage est-il écrit ?
- Principalement Python, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Le problème : retrouver un passage dans une vidéo longue
Personne ne veut réécouter quarante minutes d'entretien pour isoler une réponse de deux minutes. FunClip part de ce constat et propose une chaîne complète : reconnaissance vocale, horodatage, sélection dans le texte, export du clip et des sous-titres. Le public visé est celui qui produit du contenu en chinois, puisque le modèle par défaut est Paraformer-Large, décrit dans le README comme l'un des meilleurs modèles ASR chinois open source, avec plus de treize millions de téléchargements sur ModelScope. Cette dernière donnée vient du projet lui-même et ne dit rien de la qualité du résultat sur votre audio. Le README annonce aussi une prise en charge de l'anglais via l'option `-l en`, et la version 2.2.0 ajoute un chemin MOSS pour les enregistrements longs avec étiquettes de locuteur anonymes. Le coeur de l'outil reste toutefois le flux chinois : Paraformer, SeACo-Paraformer pour les mots personnalisés, CAM++ pour l'identification du locuteur.
De l'audio au clip : quatre modèles enchaînés
Le mécanisme tient en une phrase : FunASR transcrit, FunClip découpe. La transcription produit des segments horodatés et, selon le modèle choisi, des identifiants de locuteur. L'interface Gradio affiche ce texte ; vous sélectionnez des passages à la souris ou vous indiquez un locuteur cible, puis vous déclenchez le découpage. Deux fichiers SRT sont générés : les sous-titres de la vidéo complète et ceux du segment extrait. Trois modèles se répartissent le travail. Paraformer-Large fournit la transcription et prédit les horodatages de façon intégrée, ce qui évite un modèle d'alignement séparé. SeACo-Paraformer ajoute les mots personnalisés, utiles pour les noms propres et les entités métier. CAM++ attribue un identifiant de locuteur, que vous pouvez utiliser comme critère de découpe. Depuis la version 2.2.0, un quatrième chemin existe : MOSS-Transcribe-Diarize, présenté comme capable de produire transcription, horodatages et étiquettes de locuteur anonymes sans modèle VAD ni modèle de locuteur externe. C'est une architecture différente, pas un réglage. Le README précise que le chemin MOSS nécessite l'adaptateur vLLM de FunASR, donc une pile plus lourde que le flux Paraformer de base.
Installation : trois commandes et une contrainte de version
Le socle fonctionnel ne demande qu'un environnement Python. Le README donne la séquence : `git clone https://github.com/modelscope/FunClip.git`, `cd FunClip`, puis `pip install -r ./requirements.txt`. Le service se lance avec `python funclip/launch.py`. Les options documentées sont `-m fun-asr-nano` pour le modèle Fun-ASR-Nano (mandarin, anglais, japonais, sept groupes de dialectes chinois et vingt-six accents régionaux), `-m sensevoice` pour SenseVoice (ASR multilingue avec détection d'émotion et d'événements audio), `--model moss` pour le chemin OpenMOSS, `-l en` pour l'anglais, `-p xxx` pour le port et `-s True` pour exposer le service publiquement. La contrainte à ne pas manquer est la version de FunASR : les chemins de modèles et de sous-titres actuels exigent `funasr>=1.4.9`. Si votre installation est antérieure, il faut exécuter `pip install -U "funasr>=1.4.9"` avant de démarrer le service, sinon la mise à niveau des dépendances se fait avec `pip install -U -r requirements.txt`. ImageMagick n'est plus nécessaire pour le rendu standard des sous-titres depuis la 2.2.1, qui utilise Pillow et une police embarquée ; il ne reste utile que pour l'exemple `funclip/test/imagemagick_test.py` ou un flux MoviePy `TextClip` maison.
Ce que l'interface ne fait pas
La liste des chantiers en cours est instructive. Le README marque comme non réalisés le découpage par périodes inversées et la suppression des silences. Concrètement, si vous voulez exclure un passage plutôt que le garder, ou resserrer un clip en retirant les blancs, l'outil ne le propose pas. Il faut passer par un autre logiciel après l'export. La sélection reste par ailleurs tributaire de la qualité de la transcription : un nom mal reconnu produit un segment mal placé, et les mots personnalisés de SeACo-Paraformer sont le seul levier prévu pour corriger ce point en amont. Sur l'anglais, la situation est moins nette. Le README indique que la prise en charge de Whisper est cochée, avec une justification technique : l'ASR Whisper avec horodatage demande énormément de mémoire GPU, et le projet a préféré s'appuyer sur la prédiction d'horodatage du Paraformer standard dans FunASR. Autrement dit, le chemin anglais existe via l'option `-l en` et via Fun-ASR-Nano, mais l'écosystème de modèles reste pensé pour le chinois. Un utilisateur anglophone qui cherche un alignement fin devra vérifier lui-même ce que donne le modèle sur son audio, le README ne fournissant pas de mesure.
FunClip face à un pipeline Whisper monté à la main
L'alternative la plus directe est un pipeline personnel : Whisper pour la transcription, pyannote pour la diarisation, ffmpeg pour la découpe. La différence n'est pas la qualité brute, elle est dans le nombre de pièces à assembler. Un tel montage vous laisse choisir chaque modèle, chaque seuil, chaque format intermédiaire, et vous rend responsable de la cohérence des horodatages entre transcription et diarisation. FunClip prend le chemin inverse : les modèles sont imposés par le projet (Paraformer, SeACo-Paraformer, CAM++, ou MOSS), la diarisation est intégrée, et l'interface Gradio sert de point d'entrée unique. Vous gagnez du temps de mise en place, vous perdez la liberté de substituer un modèle. Le compromis est explicite dans le README : FunASR est la fondation, pas un détail interchangeable. Si votre audio est en anglais et que vous avez déjà un pipeline Whisper qui fonctionne, remplacer l'ensemble par FunClip n'apporte rien de démontré. Si vous traitez du chinois et que vous ne voulez pas écrire de code d'assemblage, l'arbitrage s'inverse.
Mises à jour, archives et licence MIT
Le rythme de publication est soutenu : v2.1.1 le 3 août 2026, v2.2.0 le 30 août, v2.2.1 le 1er septembre. Chaque version peut déplacer une contrainte, comme l'exigence `funasr>=1.4.9` introduite avec les chemins MOSS et les segments de locuteur normalisés dans `sentence_info`. La conséquence pratique est qu'une installation laissée sans mise à jour peut cesser de fonctionner après un changement de dépendance, et que la mise à jour elle-même demande de relire les notes de version avant de relancer le service. Le projet publie des archives de source versionnées, `FunClip-2.2.1.tar.gz` et `FunClip-2.2.1.zip`, accompagnées d'un fichier `SHA256SUMS` pour vérification. Point important : les poids des modèles ne sont pas inclus dans ces archives et sont téléchargés séparément au démarrage de FunClip. Il faut donc prévoir l'espace disque et le temps de téléchargement, et ne pas s'attendre à ce qu'une archive vérifiée suffise à faire tourner l'outil hors ligne. La licence est MIT, ce qui autorise en principe l'usage commercial et la modification, à condition de conserver l'avis de copyright. Les modèles FunASR appelés par l'outil ont leurs propres conditions, publiées séparément sur ModelScope, et rien dans le README ne les récapitule. C'est le point à examiner avant un déploiement en production.
Conclusion éditoriale
FunClip convient aux équipes qui traitent des vidéos majoritairement en chinois et qui acceptent de gérer un environnement Python avec FunASR 1.4.9 ou plus récent, ffmpeg et le téléchargement des poids de modèles. Il ne convient pas à ceux qui cherchent un service hébergé sans dépendances, ni à ceux qui veulent une interface de montage complète : le README liste d'ailleurs le découpage par périodes inversées et la suppression des silences comme non implémentés. Avant d'adopter, lancez `python funclip/launch.py` sur un échantillon réel et vérifiez le coût de téléchargement des poids, car les archives de version ne les contiennent pas.
Notes de la communauté