121 lines
4.2 KiB
Bash
Executable File
121 lines
4.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# utilisation: bash transcript.sh MONFICHIER.wav
|
|
# auteur du script: tykayn contact@cipherbliss.com
|
|
# ```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 -----------------
|
|
#ENABLE_SRT=false
|
|
ENABLE_SRT=true
|
|
# 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)
|
|
|
|
# ----------------- prise en compte des arguments rentrés par l'utilisateur
|
|
echo "=====> langue: $FOLDER_MODEL"
|
|
echo "=====> fichier à convertir: $1"
|
|
|
|
if [ $1 ]; then
|
|
file=$1
|
|
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
|
|
fi
|
|
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."
|
|
|
|
FILE_NAME=$(basename $file .wav)
|
|
|
|
output_dir="output"
|
|
if [ $2 ]; then
|
|
output_dir=$2
|
|
fi
|
|
OUT_DIR=$( echo "$output_dir/$FILE_NAME")
|
|
|
|
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 " "
|
|
echo "########### $(date) : fichier : $file : $1"
|
|
|
|
|
|
# ----------------- 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."
|
|
else
|
|
pwd
|
|
ls -l models
|
|
echo " "
|
|
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'"
|
|
|
|
exit 1
|
|
fi
|
|
# ----------------- existence du fichier demandé -----------------
|
|
if [ -f "$file" ]; then
|
|
echo "$file exists."
|
|
else
|
|
echo "########### $(date) : [ERREUR] fichier introuvable: $file"
|
|
echo "########### $(date) : [ERREUR] voici les fichiers disponibles dans input/converted_to_wav: "
|
|
echo " "
|
|
ls -l input/converted_to_wav
|
|
echo " "
|
|
echo "########### $(date) : [ERREUR] le fichier $file n'existe PAS :C "
|
|
exit 1
|
|
fi
|
|
echo " "
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
echo " convertir en sous titre ? $ENABLE_SRT"
|
|
if ($ENABLE_SRT) ; then
|
|
echo "########### $(date) : conversion de $file ,sortie en fichier de sous titres .srt"
|
|
echo ""
|
|
echo "## (cela prend plusieurs minutes généralement 1 / 10ème du temps du fichier audio)"
|
|
echo "..."
|
|
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"
|
|
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
|
|
|
|
echo " "
|
|
echo "########### $(date) : nettoyer la sortie "
|
|
jq .text $OUT_DIR/0_output_$FILE_NAME.json > $OUT_DIR/1_converted_$FILE_NAME.txt
|
|
|
|
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
|
|
echo " $COUNT_LINES lines in $OUT_DIR/4_phrases_$FILE_NAME.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 pseudo fichier de sous titres"
|
|
perl clean.sh $OUT_DIR/0_output_$FILE_NAME.json > $OUT_DIR/5_phrases_min_sec_$FILE_NAME.txt
|
|
|
|
|
|
fi
|
|
#ls -l $OUT_DIR
|
|
|
|
echo "########### $($STARTTIME) -- $(date) : conversion faite "
|
|
echo "########### en $SECONDS seconds"
|
|
exit 0
|