From 334cb218c2749171babdb4d5411dd2b7c9586e8a Mon Sep 17 00:00:00 2001 From: Tykayn Date: Fri, 19 Feb 2021 10:27:46 +0100 Subject: [PATCH] add converters from mp3 --- .gitignore | 3 ++- Makefile | 2 ++ README.md | 11 ++++++----- clean.sh | 28 ++++++++++++++++++++++++++++ convert_from_wav.sh | 3 +++ models/.gitkeep | 0 mp3_to_wav.sh | 20 ++++++++++++++++++++ 7 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 clean.sh create mode 100644 models/.gitkeep create mode 100644 mp3_to_wav.sh diff --git a/.gitignore b/.gitignore index 0a54a88..18e8a2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ -/models/* +/models/fr/* !/input/demo.wav /input/converted_to_wav/*.wav /output/*.txt /output/*.csv +/output/*.srt diff --git a/Makefile b/Makefile index 380c06f..a54773d 100644 --- a/Makefile +++ b/Makefile @@ -3,3 +3,5 @@ install: bash install.sh convert: bash convert_from_wav.sh $(args) +srt: + perl clean.sh $(args) > output/clean.srt diff --git a/README.md b/README.md index 9b487af..99c4e38 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,14 @@ configuration pour transcrire des fichiers audio wav avec Vosk ### installation #### Prérequis -* python3 -* pip -* git -* jq +* python3 (pour l'école serpentard) +* pip (gestionnaire de paquets python) +* git (gestion de version) +* jq (pour le nettoyage de fichier json) +* ffmpeg (pour la conversion vers wav) pour les installer avec aptitude ``` -sudo apt install jq python3-pip git +sudo apt install jq python3-pip git ffmpeg ``` #### cloner ce dépot dans un dossier de travail diff --git a/clean.sh b/clean.sh new file mode 100644 index 0000000..6983c14 --- /dev/null +++ b/clean.sh @@ -0,0 +1,28 @@ + #!/usr/bin/perl + + # Script de transformation de la sortie (json) de vosk. + + use strict; use warnings; + use feature qw(say); + + open(F,$ARGV[0]) or die("Le script a besoin du fichier de sortie Vosk en argument."); + undef $/; + my $json = ; + close(F); + + while ($json =~ m@(\{\s+"result" :.+?"text" :.+?\})@gs) { + my $resultat = $1; + # Récupération de la seconde initiale de la séquence + my ($debut) = ($resultat) =~ m@"start" : ([^,]+),@s; + # Récupération du texte + my ($texte) = ($resultat) =~ m@"text" : "(.+?)"@s; + + # Transformation de la seconde en minutes-secondes + my ($minutes,$secondes) = (0,$debut); + $minutes = int($debut / 60); + $secondes = int($debut % 60); + map { $_ = "0" . $_ if $_ < 10; } ($minutes,$secondes); + + # Affichage du résultat dans le terminal. + say join("\t","[$minutes'$secondes]",$texte); + } diff --git a/convert_from_wav.sh b/convert_from_wav.sh index 81d2ddc..eb764d7 100644 --- a/convert_from_wav.sh +++ b/convert_from_wav.sh @@ -23,4 +23,7 @@ cat output/converted_out_without_nulls.txt echo " " echo "########### $(date) : lignes transcriptes $COUNT_LINES " echo "########### $(date) : conversion faite dans output/converted_out_without_nulls.txt" +echo "########### $(date) : conversion de la sortie en fichier de sous titres" + perl clean.sh output/converted_output.txt > output/output.srt + exit 0 diff --git a/models/.gitkeep b/models/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/mp3_to_wav.sh b/mp3_to_wav.sh new file mode 100644 index 0000000..7a75235 --- /dev/null +++ b/mp3_to_wav.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# utilisation: bash convert_from_wav.sh MONFICHIER.wav +# auteur du script: tykayn contact@cipherbliss.com + +echo "########### conversion des fichiers audio .ogg placés dans le dossier input, vers du wav mono-piste uniquement" +echo " " +for i in input/*.mp3; do + ffmpeg -acodec libvorbis -i "$i" -acodec pcm_s16le "input/converted_to_wav/${i%mp3}wav" +done + +echo " " +echo "########### OK " +echo " " +COUNT_LINES_OGG=$(ll input/*.ogg |wc -l) +COUNT_LINES=$(ll input/converted_to_wav |wc -l) + +echo "########### fichiers ogg dans le dossier input: $COUNT_LINES_OGG " +echo "########### fichiers wav dans le dossier input: $COUNT_LINES " +echo "########### conversion faite dans output/converted_out_without_nulls.txt" +exit 0