2021-02-19 11:08:13 +01:00
#!/bin/bash
# utilisation: bash transcript.sh MONFICHIER.wav
# auteur du script: tykayn contact@cipherbliss.com
2022-04-12 10:17:44 +02:00
# ```bash
# bash transcript.sh myfile fr 1
# ```
echo " Transcript of a file - [file relative path \"input/aside/demo.wav\"] [lang en or fr] [enable srt conversion 1 or 0]"
# ----------------- Default parameters -----------------
2024-09-30 14:52:39 +02:00
#ENABLE_SRT=false
ENABLE_SRT = true
2022-04-12 10:17:44 +02:00
# disponibles: "fr" ou "en", trouvez d'autres modèles prédéfinis https://alphacephei.com/vosk/models
FOLDER_MODEL = "fr"
#FOLDER_MODEL="en"
DEFAULT_FILE_TO_TRANSCRIPT = "input/aside/demo.wav"
STARTTIME = $( date +%s)
2021-02-19 11:08:13 +01:00
2022-04-12 10:17:44 +02:00
# ----------------- prise en compte des arguments rentrés par l'utilisateur
2024-09-30 14:52:39 +02:00
echo " =====> langue: $FOLDER_MODEL "
echo " =====> fichier à convertir: $1 "
2021-03-23 12:13:23 +01:00
if [ $1 ] ; then
file = $1
2022-04-12 10:17:44 +02:00
else
echo "utilisation du fichier de démo"
file = $DEFAULT_FILE_TO_TRANSCRIPT
fi
if [ $2 ] ; then
lang_to_search = $2
else
lang_to_search = $FOLDER_MODEL
2021-03-23 12:13:23 +01:00
fi
2022-04-12 10:17:44 +02:00
if [ $3 ] ; then
ENABLE_SRT = $3
else
ENABLE_SRT = $ENABLE_SRT
fi
echo " [file name]: $file , [lang]: $lang_to_search , [enable srt conversion]: $ENABLE_SRT . "
2021-03-23 12:13:23 +01:00
2021-03-23 12:54:53 +01:00
FILE_NAME = $( basename $file .wav)
output_dir = "output"
if [ $2 ] ; then
output_dir = $2
fi
OUT_DIR = $( echo " $output_dir / $FILE_NAME " )
2021-02-19 11:08:13 +01:00
echo " ########### $( date) : conversion de fichier audio .WAV mono piste uniquement,
avec Vosk installé par pip3, et un modèle de textes en français."
echo " "
2021-03-23 12:13:23 +01:00
echo " ########### $( date) : fichier : $file : $1 "
2021-02-21 11:22:46 +01:00
2022-04-12 10:17:44 +02:00
# ----------------- recherche de l'existence du modèle de langue demandé -----------------
if [ -d " models/ $lang_to_search " ] ; then
echo " models/ $lang_to_search le modèle est bien présent. "
2021-02-21 11:22:46 +01:00
else
pwd
ls -l models
echo " "
2022-04-12 10:17:44 +02:00
echo " ########### $( date) : [ERREUR] le modèle de données dans models/ $lang_to_search n'existe pas, vérifiez son installation :C peut être avez vous oublié de faire une commande 'make' "
2021-02-21 11:22:46 +01:00
exit 1
fi
2022-04-12 10:17:44 +02:00
# ----------------- existence du fichier demandé -----------------
2021-02-21 11:22:46 +01:00
if [ -f " $file " ] ; then
echo " $file exists. "
else
2021-03-23 12:13:23 +01:00
echo " ########### $( date) : [ERREUR] fichier introuvable: $file "
2021-02-21 11:22:46 +01:00
echo " ########### $( date) : [ERREUR] voici les fichiers disponibles dans input/converted_to_wav: "
2021-03-23 12:13:23 +01:00
echo " "
2021-02-21 11:22:46 +01:00
ls -l input/converted_to_wav
2021-03-23 12:13:23 +01:00
echo " "
2021-02-21 11:22:46 +01:00
echo " ########### $( date) : [ERREUR] le fichier $file n'existe PAS :C "
exit 1
fi
2021-02-19 11:08:13 +01:00
echo " "
2021-03-23 12:54:53 +01:00
2023-03-07 11:45:43 +01:00
mkdir -p " $OUT_DIR "
2021-03-23 12:13:23 +01:00
echo " convertir en sous titre ? $ENABLE_SRT "
if ( $ENABLE_SRT ) ; then
2022-07-27 22:19:21 +02:00
echo " ########### $( date) : conversion de $file ,sortie en fichier de sous titres .srt "
echo ""
2024-09-30 14:52:39 +02:00
echo "## (cela prend plusieurs minutes généralement 1 / 10ème du temps du fichier audio)"
2022-07-27 22:19:21 +02:00
echo "..."
2022-04-12 10:17:44 +02:00
python3 ./extract_srt.py " $file " > $OUT_DIR /6_output_$FILE_NAME .srt
cat $OUT_DIR /6_output_$FILE_NAME .srt
COUNT_LINES = $( cat $OUT_DIR /6_output_$FILE_NAME .srt | wc -l)
echo " "
echo "-------------- DONE ------------"
echo " $COUNT_LINES lines in $OUT_DIR /6_phrases_min_sec.srt "
2021-03-23 12:13:23 +01:00
else
echo " ########### $( date) : conversion de la sortie en divers fichiers marquant les temps et sans marquage "
python3 ./conversion_simple_fr.py " $file " > $OUT_DIR /0_output_$FILE_NAME .json
2021-02-19 11:08:13 +01:00
2021-03-23 12:13:23 +01:00
echo " "
echo " ########### $( date) : nettoyer la sortie "
jq .text $OUT_DIR /0_output_$FILE_NAME .json > $OUT_DIR /1_converted_$FILE_NAME .txt
2021-02-19 11:26:35 +01:00
2021-03-23 12:13:23 +01:00
sed 's/null//g' $OUT_DIR /1_converted_$FILE_NAME .txt > $OUT_DIR /2_without_nulls_$FILE_NAME .txt
sed 's/^ *//; s/ *$//; /^$/d' $OUT_DIR /2_without_nulls_$FILE_NAME .txt > $OUT_DIR /3_without_nulls_$FILE_NAME .txt
sed 's/\"//g' $OUT_DIR /3_without_nulls_$FILE_NAME .txt > $OUT_DIR /4_phrases_$FILE_NAME .txt
echo " ########### $( date) : OK "
echo " "
COUNT_LINES = $( cat $OUT_DIR /4_phrases_$FILE_NAME .txt | wc -l)
cat $OUT_DIR /4_phrases_$FILE_NAME .txt
2022-04-12 10:17:44 +02:00
echo " $COUNT_LINES lines in $OUT_DIR /4_phrases_ $FILE_NAME .txt "
2021-03-23 12:13:23 +01:00
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 pseudo fichier de sous titres "
perl clean.sh $OUT_DIR /0_output_$FILE_NAME .json > $OUT_DIR /5_phrases_min_sec_$FILE_NAME .txt
2021-02-19 11:08:13 +01:00
2021-02-19 11:26:35 +01:00
2022-04-12 10:17:44 +02:00
fi
#ls -l $OUT_DIR
2021-02-19 11:08:13 +01:00
2024-09-30 14:52:39 +02:00
echo " ########### $( $STARTTIME ) -- $( date) : conversion faite "
2022-04-12 10:17:44 +02:00
echo " ########### en $SECONDS seconds "
2021-02-19 11:08:13 +01:00
exit 0