Tutoriel transcriptions

De April MediaWiki
Aller à la navigationAller à la recherche


Tutoriel du groupe Transcriptions

Modes opératoires et conseils techniques

Liens et programmes utiles

  • Mplayer lit la plupart des formats vidéo utilisés; je ne pense pas qu'un autre programme libre en lise certains que lui ne sait pas lire. Il est (désormais) packagé par Debian. Il y a apparemment des questions compliquées de codes disponibles mais pas libres.
  • Un navigateur web en mode texte comme w3m (packagé par Debian) est parfois bien pratique.
  • Les URL débutant par itpc://... ??? TODO. Exemple: 1 sur la page 2.
  • Les URL débutant par mms:// se téléchargent avec le programme mimms (packagé par Debian).
  • Les URL débutant par rtsp://... Apparemment le paquet Debian livemedia-utils et son programme openRTSP se chargent de cela, mais je n'ai pas réussi à le faire fonctionner. ??? TODO. Exemple: [rtsp://212.95.67.121:554/permanent/c6/promos/070619_fr.rmvb?cloakport=80,554,7070 1] vu sur 2 vu sur 3.
  • Un flux RSS mentionne l'URL du média. Exemple: 1 trouvé sur la page 2 mentionne 3 (lien désormais cassé...).
  • Les URL débutant par pnm://...??? TODO Exemple: [pnm://212.95.67.121:7070/permanent/c6/promos/070619_fr.rmvb?cloakport=80,554,7070 1] vu sur 2 vu sur 3.
  • TODO: comment télécharger les vidéos annoncées au format RealPlayer? Exemple: 1 trouvé sur la page 2.
  • Validation XHTML.
  • Validation CSS.

Méthode générale

Traitons par exemple le cas d'un podcast.

Utiliser le navigateur Firefox et installer l'extension Firebug.

Dans la sous-fenêtre de Firebug, onglet Net, on voit dans la liste un nom de fichier (nom_de_fichier.mp3). Clic droit, Copy Location. Ça semble fonctionner avec Youtube et de nombreux sites.

Description plus détaillée: Télécharger n'importe quel contenu sur les sites de diffusions de vidéos et MP3.

Connaître la durée d'un document

Format Extension Commande
Ogg Vorbis ou Ogg Theora .ogg ogginfo
MPEG, AVI .mp3, .mp4, .mpg, .avi mplayer -identify; chercher ID_LENGTH (valeur exprimée en secondes); ne disposer que du début du fichier suffit parfois
Général .xxx Approximation avec: time player fichier

Programmes d'assistance à la transcription

Trans

Le programme trans du paquet Debian transcriber semble riche et prometteur. Si quelqu'un apprend à s'en servir et peut expliquer comment procéder efficacement, ses conseils seront les bienvenus (TODO). Attention, la page web du projet donnée dans la documentation a disparu; le projet est désormais hébergé sur Sourceforge.

Programme temporel simple

Le programme [bin/Play.pl Play.pl] permet de jouer des petites portions (intervalles) d'un média afin de les transcrire au fur et à mesure. Il dispose d'options d'ergonomie. Il joue le fichier indiqué dans la variable d'environnement MEDIA_FILE. Les valeurs des variables utilisées sont rappelées dans un xmessage.

On pourra l'interfacer avec l'éditeur de textes VIM en insérant les lignes suivantes dans son fichier de configuration:

" To use for transcriptions
:map <F1> !!perl ~/bin/Play.pl GotoPreviousInterval<CR>
:map <F2> !!perl ~/bin/Play.pl PlayCurrentInterval<CR>
:map <F3> !!perl ~/bin/Play.pl PlayNextInterval<CR>A
:map <F4> !!perl ~/bin/Play.pl GotoNextInterval<CR>A
:map <F5> !!perl ~/bin/Play.pl ShortenIntervalLength<CR>
:map <F6> !!perl ~/bin/Play.pl ShortenOverlapLength<CR>
:map <F7> !!perl ~/bin/Play.pl LengthenOverlapLength<CR>
:map <F8> !!perl ~/bin/Play.pl LengthenIntervalLength<CR>
:map <F9> !!perl ~/bin/Play.pl ReduceSpeed<CR>
:map <F10> !!perl ~/bin/Play.pl AccelerateSpeed<CR>
:map <F11> !!perl ~/bin/Play.pl ForwardTwoSeconds<CR>
:map <F12> !!perl ~/bin/Play.pl MarkUpOffset<CR>

Ceci mettra en place les effets suivants:

Touche Commande Effet
F1 GotoPreviousInterval Recule d'un intervalle.
F2 PlayCurrentInterval (Re)joue l'intervalle actuel.
F3 PlayNextInterval Joue l'intervalle suivant sans y avancer.
F4 GotoNextInterval Avance d'un intervalle.
F5 ShortenIntervalLength Réduit d'une seconde la durée de l'intervalle (durée minimale: 1 seconde).
F6 ShortenOverlapLength Réduit d'une seconde le recouvrement entre deux intervalles (durée minimale: 1 seconde).
F7 LengthenOverlapLength Augmente d'une seconde le recouvrement entre deux intervalles (durée maximale: celle de l'intervalle).
F8 LengthenIntervalLength Augmente d'une seconde la durée de l'intervalle (durée maximale: durée totale).
F9 ReduceSpeed Réduit la vitesse de 5% (vitesse minimale: 50%) et arrondit à 1 si on est 1 plus ou moins 3%.
F10 AccelerateSpeed Augmente la vitesse de 5% (vitesse maximale: 2) et arrondit à 1 si on est 1 plus ou moins 3%.
F11 ForwardTwoSeconds Avance de deux secondes.
F12 MarkUpOffset Insère le timecode actuel dans la transcription.

Note: VIM n'est en rien imposé ou nécessaire; la plupart des autres éditeurs de texte programmables pourront eux aussi être raccordés au programme Play.pl. Communiquez-moi les instructions de configuration et je les mentionnerai ici.

Programme syllabique plus évolué

Cette méthode analyse dans un premier temps le fichier sonore pour repérer les silences le ponctuant et y compter les syllabes. Elle repose sur le fait que SoX, à partir de sa version 14, est capable de jouer des portions de bande son découpées au centième de seconde près.

L'ensemble se compose de trois éléments:

  1. Un [bin/w.c programme C], qui analyse le fichier son (au format WAV 16 bits). On le compile sans difficulté particulière, par exemple avec gcc -Wall -O2 -o w wav.c.
  2. Un [bin/P.pl script Perl], qui exploite les données produites pour en jouer les portions repérées une à une.
  3. Quelques lignes de configuration instrumentant l'éditeur de texte employé pour faire appel à ce script.


Méthode opératoire pour appliquer le découpage syllabique

Méthode opératoire (on ne détaille pas les répertoires de stockage et chemins d'accès, ces choix étant laissés libres et ces notions supposées connues):

  1. Télécharger le fichier son (exemple utilisé ici: FreeSoft.ogg).
  2. Le convertir au format WAV 16 bits.
    1. On peut faire appel au programme oggdec (paquet Debian vorbis-tools): oggdec fichier.ogg
  3. Repérer les syllabes et silences de ce fichier: ./w FreeSoft.wav | tee TIMECODES.txt.

Ce dernier calcul dépend des choix de constantes faits dans w.c. Avec les réglages suivants:

#define MAX_SILENCE (1.0)       /* Always cut when silences that long (in seconds) */
#define MAX_DURATION  20        /* Maximum duration of the chunk to listen (in seconds) */

#define MIN_SYLLABLES 20        /* Minimum number of syllables to listen to (precedence smaller than MAX_SILENCE) */
#define MAX_SYLLABLES 40        /* Maximum number of syllables to listen to */

#define ENERGY_LEVELS 30            /* Range where we will map energy levels (ignoring the zero as silences) */
#define PER_SECOND_GRANULARITY 100  /* Basic time length */
#define MAX_SYLLABLES_PER_SECOND 10 /* Maximum speech rate */

On obtiendra plus de mille lignes:

0.00 5.31 5.31 0.42 35
5.31 11.24 5.93 0.72 35
11.24 17.84 6.60 0.43 33
17.84 29.56 11.72 1.64 33
[...]
5681.41 5688.26 6.85 0.23 40 
5688.26 5694.88 6.62 0.40 37
5694.88 5699.70 4.82 0.63 30
5699.70 5700.89 1.19 0.00 40

On incorpore ces lignes sous la ligne __DATA__ dans le fichier P.pl. Note: dans ce fichier une commande produit un bip pour clarifier les séparations (le fichier /usr/share/sounds/KDE_Beep_Pop.wav relève du paquet Debian kdebase-data):

my $beep = "play /usr/share/sounds/KDE_Beep_Pop.wav;";

On règle l'éditeur de textes (dans cet exemple nous détaillerons le cas de VIM) comme suit:

" Start the chunk
:map <F1> :.,$!perl P.pl<CR>
" 1 more second of overlap in the beginning
:map <F12> :.,$!perl PP.pl<CR>o
" Tag afterwards: type this on the first line of the rest of the transcription
:map <F8> Gdd''P<F1>
:syntax match TimeCode /^\[\[[0-9].*$/
:highlight TimeCode ctermfg=DarkGreen

" Cut word before cursor
:map <F5> i...<CR>...<ESC>

" Check mode
:map <F2> !!perl P.pl<CR>jdd
" Check mode, with more overlap
:map <F11> !!perl PP.pl<CR>o

" Wraps the current word (>= 2 letters) with "*"
:map <F9> hebi*<ESC>ea*<ESC>

On pourra sauvegarder ces quelques lignes dans un fichier transcription.vim. La première, qui définit le comportement de la touche F1, indique notamment à l'éditeur de textes VIM de transmettre au programme P.pl toute la suite du fichier, à partir de la ligne courante, jusqu'à la fin.

Note: on appelle timecode un marqueur temporel de type hh:mm:ss.cc (heures, minutes, secondes, centièmes; les heures et minutes ne sont pas toujours précisées quand elles sont nulles.

La touche F1 sert alors à la transcription (et les touches F2 ou F8 à l'insertion de timecodes dans les fichiers déjà transcrits; F11 ajoutant une seconde de contexte sonore au début). La touche F12 donne un peu plus de contexte au début de l'extrait courant. La touche F9 encadre le mot courant, s'il compte plus de deux lettres, d'astérisques.

La touche F5 coupe le mot en cours par des points de suspension:

comme ce...
[[ hh:mm:ss]] # ''ceci est une mention de timecode''
...ci

si cela correspond à une borne du morcellement sonore; ce mot sera recollé ensuite par le programme <a href="bin/Rush_to_TXT.sh">Rush_to_TXT.sh</a>.

Note importante: si l'on a décodé le média compressé (au format .ogg par exemple) en le transformant en .wav, la réactivité sera instantanée au lieu d'être de plus en plus longue: en effet, le format WAV permet au lecteur de se rendre directement au bon endroit du morceau, alors qu'il faut décoder tout le début dans le cas d'un format compressé. Le fichier P.pl, en présence d'une version WAV, la détectera à son extension de fichier et l'utilisera de préférence.

On met en place la variable d'environnement MEDIA_FILE pour renvoyer sur le fichier FreeSoft.ogg:

export MEDIA_FILE=FreeSoft.ogg

Alors, on peut débuter la transcription comme suit: vim -S transcription.vim FreeSoft.txt, dans un terminal de préférence sur fond sombre (par exemple un xterm en blanc sur noir — dans le cas contraire on pourra intervenir sur le réglage de couleur DarkGreen):

[[00.00]] syl=35 sil=0.42
[[05.32]]

Ces lignes apparaissent en vert foncé. La première indique: on débute à la seconde 0. C'est le début d'une séquence de 35 syllabes, terminée par un blanc de 42 centièmes de seconde, qui prendra fin au timecode 5.31. On peut réécouter la séquence en enfonçant à nouveau la touche F1. Le bip de fin marque la fin du blanc, et précède un petit temps de recouvrement réglé dans P.pl. La touche o sous VIM permet de réaliser la transcription de cette portion:

[[00.00]] syl=35 sil=0.42
Denis Devos: Vous écoutez Radio Campus, la radio de la communauté de
l'université libre de Bruxelles. Il est 10:18.
[[05.32]]

On presse ensuite la touche d'échappement ESC, se place sur le timecode suivant (05.32), et une nouvelle pression sur F1 produit:

[[05.31]] syl=35 sil=0.72
[[11.25]]

On procède ainsi de proche en proche jusqu'à la fin de la transcription. Pour noter un changement d'interlocuteur ou un nouveau paragraphe, on passe une ligne (avant ou après le timecode, ou entre deux timecodes, selon les cas. On veillera à laisser les timecodes toujours seuls sur leur ligne, et prendra garde à ne pas passer plusieurs lignes.

Ceci produit le fichier de [data/02/2002-11-27-Brevets-Radio-Campus.txt rushes]. Les timecodes pourront être exploités dans une application web ou autre, pour faire le lien entre la bande son et la transcription textuelle.

On transforme facilement le fichier de rushes en [data/03/2002-11-27-Brevets-Radio-Campus.txt version texte brut] un peu plus propre, avec le filtre [bin/Rush_to_TXT.sh Rush_to_TXT.sh]. Ligne de commande: sh Rush_to_TXT.sh rushes.txt > texte.txt.