préciser le temps pris par la conversion en sous titre
This commit is contained in:
parent
0b79f0799d
commit
4ce54d002c
10
README.md
10
README.md
@ -15,6 +15,7 @@ configuration pour transcrire des fichiers audio wav avec Vosk
|
||||
* youtube-dl si vous souhaitez utiliser le website
|
||||
* 4Go de ram, 2Go serait trop juste pour utiliser le modèle fr par défaut.
|
||||
* testé sur Ubuntu 20.04
|
||||
|
||||
pour les installer avec aptitude
|
||||
```
|
||||
sudo apt install jq python3-pip git ffmpeg
|
||||
@ -26,13 +27,16 @@ git clone https://forge.chapril.org/tykayn/transcription.git && cd transcription
|
||||
```
|
||||
|
||||
* installer vosk via le MakeFile, vérifiez les prérequis ci-dessus. une fois dans votre dossier de transcription fraîchement cloné, faites la commande:
|
||||
```
|
||||
```bash
|
||||
make
|
||||
```
|
||||
* mettre un fichier audio dans le dossier "input"
|
||||
* le convertir en wav mono (avec audacity par exemple)
|
||||
* lancer la transcription du wav mono. Une démo est disponible, extraite de l'émission Libre à vous!
|
||||
* le convertir en wav mono
|
||||
```bash
|
||||
make wav
|
||||
```
|
||||
* lancer la transcription du wav mono. Une démo est disponible, extraite de l'émission Libre à vous!
|
||||
```bash
|
||||
make convert file=input/demo.wav
|
||||
```
|
||||
n'oubliez pas l'argument `file=`
|
||||
|
@ -8,12 +8,16 @@ import json
|
||||
import argparse
|
||||
from collections import namedtuple
|
||||
from pprint import pprint
|
||||
import time
|
||||
try:
|
||||
from tqdm import tqdm
|
||||
tqdm_installed = True
|
||||
except:
|
||||
tqdm_installed = False
|
||||
|
||||
start_time = time.time()
|
||||
MODEL_LANG="fr"
|
||||
|
||||
class SubPart:
|
||||
|
||||
def __init__(self, start, end, text):
|
||||
@ -115,9 +119,9 @@ def create_parser():
|
||||
def main():
|
||||
args = create_parser().parse_args()
|
||||
if tqdm_installed:
|
||||
it = enumerate(gen_subparts(args.input, "models/fr", args.verbose, args.interval, args.progress))
|
||||
it = enumerate(gen_subparts(args.input, "models/"+MODEL_LANG, args.verbose, args.interval, args.progress))
|
||||
else:
|
||||
it = enumerate(gen_subparts(args.input, "models/fr", args.verbose, args.interval, False))
|
||||
it = enumerate(gen_subparts(args.input, "models/"+MODEL_LANG, args.verbose, args.interval, False))
|
||||
for i,subpart in it:
|
||||
n = i+1
|
||||
args.output.write(f"""{n}
|
||||
@ -130,3 +134,5 @@ def main():
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
print ("script extract_srt done in : ")
|
||||
print (time.time() - start_time), "seconds"
|
||||
|
@ -1,10 +1,38 @@
|
||||
#!/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
|
||||
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)
|
||||
|
||||
@ -19,23 +47,19 @@ echo "########### $(date) : conversion de fichier audio .WAV mono piste uniqueme
|
||||
echo " "
|
||||
echo "########### $(date) : fichier : $file : $1"
|
||||
|
||||
#FOLDER_MODEL="fr" # disponibles: "fr" ou "en"
|
||||
ENABLE_SRT=false
|
||||
#ENABLE_SRT=true
|
||||
FOLDER_MODEL="fr"
|
||||
|
||||
# existence du modèle demandé
|
||||
if [ -d "models/$FOLDER_MODEL" ]; then
|
||||
echo "models/$FOLDER_MODEL le modèle est bien présent."
|
||||
# ----------------- 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/$FOLDER_MODEL n'existe pas, vérifiez son installation :C peut être avez vous oublié de faire une commande 'make'"
|
||||
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é
|
||||
# ----------------- existence du fichier demandé -----------------
|
||||
if [ -f "$file" ]; then
|
||||
echo "$file exists."
|
||||
else
|
||||
@ -49,11 +73,16 @@ else
|
||||
fi
|
||||
echo " "
|
||||
|
||||
mkdir output/$FILE_NAME
|
||||
mkdir output/$FILE_NAME -p
|
||||
echo " convertir en sous titre ? $ENABLE_SRT"
|
||||
if ($ENABLE_SRT) ; then
|
||||
echo "########### $(date) : conversion de la sortie en fichier de sous titres .srt"
|
||||
python3 ./extract_srt.py "$file" > $OUT_DIR/5_output_$FILE_NAME.srt
|
||||
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
|
||||
@ -69,17 +98,17 @@ else
|
||||
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
|
||||
cat $OUT_DIR/5_phrases_min_sec.srt
|
||||
|
||||
|
||||
fi
|
||||
#ls -l $OUT_DIR
|
||||
|
||||
|
||||
ls -l $OUT_DIR
|
||||
|
||||
echo "########### $(date) : conversion faite "
|
||||
echo "########### $(STARTTIME) -- $(date) : conversion faite "
|
||||
echo "########### en $SECONDS seconds"
|
||||
exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user