Compare commits

...

2 Commits

Author SHA1 Message Date
334cb218c2 add converters from mp3 2021-02-19 10:27:46 +01:00
17bf79976e update install script 2021-02-19 10:13:43 +01:00
8 changed files with 100 additions and 13 deletions

3
.gitignore vendored
View File

@ -1,5 +1,6 @@
/models/*
/models/fr/*
!/input/demo.wav
/input/converted_to_wav/*.wav
/output/*.txt
/output/*.csv
/output/*.srt

View File

@ -3,3 +3,5 @@ install:
bash install.sh
convert:
bash convert_from_wav.sh $(args)
srt:
perl clean.sh $(args) > output/clean.srt

View File

@ -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

28
clean.sh Normal file
View File

@ -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 = <F>;
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);
}

View File

@ -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

View File

@ -1,15 +1,47 @@
#!/bin/bash
# utilisation: bash convert_from_wav.sh MONFICHIER.wav
# auteur du script: tykayn contact@cipherbliss.com
green=`tput setaf 2`
cyan=`tput setaf 4`
reset=`tput sgr0`
echo "########### installation de vosk avec python3, documentation: https://alphacephei.com/vosk/install "
# echo -e "${green}########### $(date) installation des prérequis: jq, python3-pip ${reset}"
# echo " "
# if hash -v apt &> /dev/null
# then
# echo "installation de JQ et python3-pip"
# apt install jq python3-pip
# fi
echo -e "${green}########### installation de vosk avec python3, documentation: https://alphacephei.com/vosk/install ${reset}"
echo " "
echo -e "${green}########### informations sur votre système: ${reset}"
echo -e " ${cyan}"
lsb_release -a
python3 --version
pip3 --version
echo -e " ${reset}"
pip3 -v install vosk
echo "########### récupération du modèle de reconnaissance en Français sous licence aGPL, taille: 1.6Go. Choix des modèles disponibles: https://alphacephei.com/vosk/models"
echo "${green}########### récupération du modèle de reconnaissance en Français sous licence aGPL, taille: 1.6Go. Choix des modèles disponibles: https://alphacephei.com/vosk/models ${reset}"
echo " "
wget https://alphacephei.com/vosk/models/vosk-model-fr-0.6-linto-2.2.0.zip
unzip vosk-model-fr-0.6-linto-2.2.0.zip
mv vosk-model-fr-0.6-linto-2.2.0 models/
mv models/vosk-model-fr-0.6-linto-2.2.0 models/fr
mkdir -p models/fr
echo -e "${green}########### Procéder au téléchargement du modèle Français (1.6go) pour transcrire les textes ?${reset} (écrivez o pour oui et faites entrée pour valider) ${reset}"
read proceed
if [[ $proceed == o* ]]; then
echo "C'est parti."
wget https://alphacephei.com/vosk/models/vosk-model-fr-0.6-linto-2.2.0.zip
echo -e "${green}########### téléchargement du modèle OK ${reset}"
unzip vosk-model-fr-0.6-linto-2.2.0.zip -d models/fr
echo -e "${green}########### décompression du modèle OK ${reset}"
ls -l models/fr
else
echo -e "${green}########### vous n'avez pas souhaité télécharger le modèle ${reset}"
echo -e "${green}########### fin de l'installation sans télécharger de modèle de langue ${reset}"
exit 0
fi
echo "########### installation ok"
echo -e "${green}########### installation ok ${reset}"

0
models/.gitkeep Normal file
View File

20
mp3_to_wav.sh Normal file
View File

@ -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