Outils pour utilisateurs

Outils du site


informatique:projets:transcription_automatique

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:projets:transcription_automatique [2024/11/19 18:52] – supprimée - modification externe (Date inconnue) 127.0.0.1informatique:projets:transcription_automatique [2025/01/02 09:25] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. alexis
Ligne 1: Ligne 1:
 +====== Transcription automatique d'entretiens ======
 +
 +Pour son mémoire, ma dame fait passer des entretiens pour collecter des données à exploiter pour sa réflexion. Elle doit les retranscrire pour pouvoir les analyser, puis les inclure dans son rapport. Ça lui demande beaucoup de temps et d'énergie. Elle était démoralisée jusqu'à ce que je lui trouve une solution un peu plus automatique. 
 +
 +J'ai eu l'idée d'utiliser la puissance de calcul de Google et de la traduction automatique de vidéos de Youtube. Une vidéo chargée sur la plate-forme est traduite automatiquement dans la langue choisie comme langue par défaut. Le résultat n'est pas parfait mais il permet de faire beaucoup de chose automatiquement. Voici le détail des étapes pour obtenir un fichier texte utilisable.
 +
 +==== Convertir le fichier audio en fichier vidéo ====
 +Youtube n'autorise que le chargement de fichiers vidéos. Il faut donc convertir les fichiers audio en fichiers vidéo. Pour cela, on va ajouter une image fixe à l'audio en utilisant [[https://trac.ffmpeg.org/wiki/Slideshow|FFmpeg]].
 +<code bash>
 +ffmpeg -loop 1 -i bg.png -i record.m4a -c:v libx264 -c:a copy -shortest record.mp4
 +</code>
 +  * ''%%-loop%%'' indique le nombre de boucle à effectuer pour les entrées le supportant.
 +  * ''%%-i%%'' indique le fichier à utiliser.
 +  * ''%%-c:v%%'' indique le codec vidéo à utiliser, ici ''libx264''.
 +  * ''%%-c:a%%'' indique le codec audio à utiliser, ici ''copy''.
 +  * ''%%-shortest%%'' indique que la conversion doit se terminer dès que le plus petit flux est converti.
 +
 +<WRAP group>
 +<WRAP half column>
 +<WRAP alert>
 +Il faut faire attention aux images utilisées. Il faut choisir des images dont les dimensions sont divisibles par 2, sinon ''ffmpeg'' ne voudra pas générer le fichier.
 +
 +Il est également conseillé de prendre des images de petite dimension pour limiter la taille de la vidéo générée. Je trouve que la taille ''320x240'' est un bon compromis.
 +</WRAP>
 +</WRAP>
 +<WRAP half column>
 +<WRAP tip>
 +Pour ne pas modifier la qualité de l'audio, on utilise le codec ''copy'' qui ne fait pas de conversion mais seulement une copie du flux. Ça ne fonctionne qu'avec un format de sortie qui supporte le format d'entrée.
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +==== Traiter la vidéo sur Youtube ====
 +Il faut téléverser la vidéo sur Youtube((Il faut avoir un compte et créer une chaîne au préalable)), configurer la langue originale de la vidéo et laisser faire le service qui va s'occuper d'ajouter automatiquement des sous-titres à la vidéo. Je ne sais pas combien de temps ça prend mais après quelques heures, ça devrait être fait.\\ 
 +Il ne reste plus qu'à télécharger les sous-titres au format [[https://fr.wikipedia.org/wiki/SubRip|SubRip]]((extension ''.srt'')).
 +<WRAP group>
 +<WRAP half column>
 +<WRAP info>
 +Il existe plusieurs format de sous-titres disponibles. J'ai choisi d'utiliser ''SubRip'' mais il est tout à fait envisegeable d'utiliser un autre format de sous-titres. Il suffira d'ajuster la prochaine étape en conséquence.
 +</WRAP>
 +</WRAP>
 +<WRAP half column>
 +<WRAP tip>
 +Il est recommandé de configurer les vidéos pour quelles ne soient visible que par le propriétaire de la chaîne.
 +</WRAP>
 +</WRAP>
 +</WRAP>
 +
 +==== Convertir les sous-titres en fichier texte ====
 +Techniquement, les fichiers de sous-titres sont des fichiers textes, mais pour notre utilisation, nous n'avons besoin que des textes mais pas des informations de synchronisation avec la vidéo. J'ai utilisé le site [[https://subtitletools.com/convert-subtitles-to-plain-text-online|Subtitle Tools]] pour faire ça. Je n'explique pas tellement le fonctionnement est évident.
 +
 +==== Nettoyer le fichier ====
 +Maintenant que nous avons un fichier sans les informations de synchronization, il nous reste quelques opérations pour avoir un fichier utilisable :
 +  * Suppression des lignes vides(([[https://stackoverflow.com/questions/16414410/delete-empty-lines-using-sed|linux - Delete empty lines using sed - Stack Overflow]]))
 +<code bash>
 +sed -i '/^[[:space:]]*$/d' <fichier>
 +</code>
 +  * Mise sur une ligne de la totalité du texte(([[https://www.unix.com/shell-programming-and-scripting/126374-how-use-sed-join-multiple-lines.html|How to use SED to join multiple lines?]]))
 +<code bash>
 +paste -sd" " <fichier1> > <fichier2>
 +</code>
 +  * Suppression des caractères ''^M'' du texte avec [[informatique:outils:vim#saisir_des_caracteres_de_controle|Vim]]
 +
 +C'est loin d'être parfait mais ça permet de réduire un peu la charge de travail humaine en la reportant sur les machines.
 +
 +<WRAP info>
 +Plusieurs années après avoir mis en place ça, je viens de découvrir le service [[https://scribe.cemea.org/|Scribe]] qui permet la transcription de fichiers audio et vidéo.
 +Ça m'aurait épargné plusieurs étapes si je connaissais ça à l'époque.
 +</WRAP>