Sous-Titrage Amélioré avec SWS v2.6.0 et des Scripts Personnalisés

X-Raym Reaper GitHub
Ce tutoriel est dédié à REAPER v4 et est considéré comme obsolète depuis la sortie de la v5 en août 2015. je vous recommande donc la lecture de l’article suivant (en anglais)

REAPER v5, Text Items and Scripts: Subtitling, Faster Than Ever! / ExtremRaym

Jusqu’à présent, sous-titrer sous REAPER à l’aide des extensions SWS développées par la communauté, pouvait laisser un sentiment partagé. C’était à la fois extrêmement rapide et puissant pour définir les timecodes, et à la fois frustrant parce que des fonctions basiques et indispensables étaient absentes. Pire, certains comportements étaient buggués, ou demandaient l’utilisation d’un logiciel externe.

Oubliez tout ça, le sous-titrage sous REAPER vient de rentrer dans une nouvelle ère.

Ne perdons pas de vue qu’à la base REAPER est un logiciel de son, et non de sous-titrage, l’idée n’est donc évidemment pas de mettre en forme le texte et gérer la vitesse de défilement des caractères, tâches typiques que nous réservons pour des logiciels dédiés. Cependant, comme vous avez pu le remarquer au cours des précédant articles, REAPER, avec les extensions SWS, est capable de nous faire gagner un temps considérable avec des actions personnalisées adaptées, le tout avec une grande ergonomie.

Sommaire

SWS 2.6.0 #0

La version 2.6.0 #0 des extensions SWS apportent une correction de bug, et des améliorations de fonctions… dont une dont je suis l’initiateur !

Fixed new lines added in subtitles when saving the project

Depuis que sous-titrer est disponible sous REAPER, il y avait un petit bug lors de la sauvegarde du projet qui apparaissait sur tous les projets pour lequel il y avait des informations de sous-titres. Oui, tous ! Et jusqu’à il y a peu, il était passer inaperçu !

Le problème : une ligne était insérée dans chaque sous-titre. Le genre de chose qui aurait pu rendre l’utilisation des sous-titres dans REAPER complètement caduque.

Je me suis donc empressé de signaler le problème et fort heureusement, il a pu être corrigé (merci à celui qui s’en est chargé) ! Vous pouvez sous-titrer tranquillement maintenant !

Import SubRip file: name regions with subtitles content

Le gros avantage d’un projet open source comme les extensions SWS, c’est que si vous voulez rajouter/modifier une fonction, vous n’avez qu’à la programmer et l’intégrer ! Et l’un des comportements que je voulais modifier, c’était le nommage des régions après l’importation d’un fichier SRT. Souvenez-vous, je voulais que les régions soient nommées avec le contenu des sous-titres.

Bon, ça n’a pas été facile, j’ai du apprendre les bases du C++ pour l’occasion. Je n’avais jamais programmer à aussi bas niveau, je peux vous dire que ça a demandé beaucoup d’effort, ne serait-ce que pour comprendre comment modifier et rajouter une fonction dans le projet ! La bonne nouvelle déjà, c’est que j’avais trouvé, la fonction à modifier parmi les plus de 900 fichiers, il y avait donc de l’espoir.

Heureusement, deux amis m’ont aidé pour parvenir à mes fins. Sans eux, je n’aurai pas réussi à moder la fonction d’importation, c’est vraiment compliqué quand on est pas initié.

Il y a eu tout d’abord Matthieu, qui m’a aidé à comprendre comment les choses étaient mises en place dans les fichiers, et qui a permis de mettre en place ce qu’il fallait pour pouvoir modifier la fonction.

Puis, c’est grâce à Lorine, que les noms de ces dîtes régions ont pu être proprement formatées afin de pouvoir être enregistrées dans le projet !

Et puis finalement, ça a marché ! Les régions étaient bien nommées en fonction des sous-titres après l’importation d’un SRT.

Encore une fois, un immense merci à tous les deux pour ce petits succès !

Malheureusement, nous n’avons pas été crédité dans le changelog pour ça, surement parce que le code a du être conformé pour correspondre aux normes du projet (et après un survol rapide du changelog, je constate que peu de personnes sont créditées de toute façon). Quoiqu’il en soit, cela a permit d’initier cette modification qui était vraiment très attendue !

Added “Wrap text” option in the context menu

Une petite option, accessible via un clic droit sur la fenêtre des sous-titres, qui vous permettra de forcer le retour à la ligne des sous-titres si la fenêtre est trop petite, pour afficher une ligne de texte en entier. Génial !

Scripts EEL Personnalisés

Il y a une façon plus simple de rajouter des fonctions à REAPER que d’en programmer en C++ dans une extension. On peut tout simplement écrire un script, c’est à dire un petit fichier qui pourra être interprété directement dans REAPER, afin d’effectuer une tâche particulière. Les scripts ne peuvent pas remplacer les extensions pour des tâches complexes, mais pour de petites actions, c’est parfait. D’autant que les langages de programmations disponibles pour les scripts sous REAPER sont bien plus faciles à lire et à écrire !

Pour en savoir plus sur les scripts sous REAPER, je vous conseille de lire l’article suivant : Apprendre ReaScript pour REAPER.

C’est spk77 qui m’a initié à ReaScript, lors de l’élaboration d’action concernant la Randomisation des Propriétés de Prises. Cela m’a inspiré, et j’ai décidé d’apprendre le EEL. J’avais en effet quelques idées d’actions qui allaient pouvoir grandement aider la gestion des régions et des sous-titres. Et cela a porté ses fruits, car toutes les feature requests que j’avais faite à ce niveau là… ont été assouvies ! 🙂 (j’avais noté quelques comportements non intuitifs, mais ils peuvent être contournés par ces actions).

Les scripts dont disponibles sur mon compte GitHub et sont mis à jour si nécessaires. Par simplicité, je vous conseille de télécharger l’archive complète de mon répertoire, plutôt que de les télécharger un par un. Profitez-en, c’est gratuit !

[Téléchargement introuvable]

Pour charger un script dans REAPER, ouvrez la fenêtre des actions, et cliquez sur ReaScript => Load.

Ci-dessous, je vous présente les actions que j’ai programmées en relation avec le sous-titrage. Les liens vers les articles dédiés sur le forum de REAPER peuvent vous donner plus d’infos.

Functions – console debug messages

Ce script est utilisé par les autres scripts pour afficher du texte dans la console de REAPER, soit pour débugger les scripts, soit pour afficher des infos. Il ne créée pas d’action dans REAPER, mais il est indispensable.

console
Messages d’infos dans la console.

Forum REAPER Thread : EEL : Console debug messages

Add italic markup to current region name

Cette action entoure le nom de la région avec les balises servant à mettre en italique le texte dans un lecteur vidéo. Bon, j’avoue, ce script c’est pas grand chose, c’était pour m’échauffer, il y a bien mieux après !

addItalicToRegions
La mise en italique symbolise souvent les interventions du narrateurs.

Add musical notes to current region name

Cette action entoure le nom de la région courante avec de petites notes de musiques afin de symboliser qu’une musique est en train d’être jouée. Cette technique est très utilisée dans le sous-titrage pour les malentendants.

addMusicalNotesToRegions
Ajout de petites notes dans le nom de la région.

Create regions from selected takes and from track name

Cette action est une version améliorée de l’action SWS:Created regions from selected items (name by active take), avec gestion de la couleur (soit des prises, soit de la piste), et la possibilité de rajouter le nom de la piste en préfixe.

Il y a deux champs à remplir par l’utilisateur, afin d’associer plusieurs comportements à une seule action

Forum REAPER Thread : EEL : Create regions from selected takes and from track name

Create subtitles from regions names

Ce script sera fonctionnel sous la version 5 de Reaper. Il permet de créer des sous-titres de région en fonction des régions. Avant, cela nécessitait l’utilisation d’un logiciel externe pour faire des Macros. Avec cette future version 5 de REAPER, il sera possible de s’en passer. Cependant, une part d’édition du code source de votre projet sera nécessaire, car il n’y a pas de moyen, à ce jour, d’obtenir le formatage nécessaire aux sous-titres avec les fonctions disponibles. La marche à suivre est expliquée dans la vidéo ci-dessous.

EDIT (17/02/2015) : Je viens de faire une version compatible avec la version 4 de REAPER. Voici l’adresse : X-Raym_Create subtitles from regions names – console version.eel

Forum REAPER Thread : EEL: Create subtitles from regions names

Merge consecutive regions as dialog lines

Fusionne deux régions, en les renommant comme des lignes de dialogues, avec des tirets cadratins.

merge regions dialog
Les instructions et le seuil s’affiche par défaut dans la console.

Forum REAPER Thread : EEL : Merge consecutive regions as dialog lines

Merge consecutive regions with same name

Cette action vous permettra de fusionner les actions portant le même nom. Cependant, il vous faudra exécuter l’action plusieurs fois, jusqu’à ce que la console vous indique que vous pouvez la fermer. Le seuil définissant ce qui est considéré comme consécutif peut être définit dans le fichier lui même (éditer le script pour cela).

mergeConsecutiveRegionSameName
Utiliser avec l’action qui permet de créer des régions en fonctions des items, cela permet de nettoyer les régions en trop.

Forum REAPER Thread : EEL : Merge overlapping regions with same name

Merge overlapping regions with same name

Cette fonction est la même que la précédente, mais sans la gestion des objets adjacents.

Forum REAPER Thread : EEL : Merge overlapping regions with same name

Merge region under cursor and the next one_v2

merge region two by two
Voici comment éditer le script pour gérer le seuil.

Forum REAPER Thread : EEL : Merge region under cursor and the next one

Snap all regions to grid

Cette action peut être incroyablement utile si la grille est définie en mode Image, et que la vitesse de défilement correspond à votre vidéo. cela vous permettra de faire des sous-titres calés de manière optimum !

snapRegionsToGrid
Cette action peut s’avérer très utile si les régions ont été générés à partir des objets.

Forum REAPER Thread : EEL : Snap regions to grid

Split region under cursor

Cette action permet de couper en deux une région à l’emplacement du curseur d’édition.

splitRegions
Découpez vos régions en deux à l’endroit du curseur d’édition !

Forum REAPER Thread : EEL : Split regions under cursor

Conclusion

Comme vous pouvez le voir, l’ensemble de ces actions va nous permettre de mettre en place le time code des sous-titres beaucoup plus facilement, et d’optimiser la gestion des régions sous REAPER.

Vous verrez dans un prochain article comment les mettre en application dans un projet de sous-titrages sans transcript, automatiquement à partir des noms des objets de votre projet.

Si vous avez des suggestions, un bug report, une feature request, ou si vous voulez juste dire un petit merci, n’hésitez pas, toute participation sera la bienvenue !