add website style

This commit is contained in:
Tykayn 2021-03-23 12:13:23 +01:00 committed by tykayn
parent e784cec6ab
commit 590fcfd6ff
19 changed files with 277 additions and 237 deletions

1
.gitignore vendored
View File

@ -12,3 +12,4 @@
/output/**/*.csv
/output/**/*.json
/output/**/*.srt
.idea

View File

@ -1,6 +1,8 @@
default: install
install:
bash install.sh
wav:
bash inputs_to_wav.sh
convert:
bash transcript.sh $(args)
srt:

View File

@ -6,11 +6,13 @@ import os
import wave
SetLogLevel(0)
print(" ------- conversion simple de", sys.argv[1])
if not os.path.exists("models/fr"):
print ("Please download the model from https://alphacephei.com/vosk/models and unpack as 'models' in the current folder.")
exit (1)
wf = wave.open(sys.argv[1], "rb")
if wf.getnchannels() != 1 or wf.getsampwidth() != 2 or wf.getcomptype() != "NONE":
print ("Audio file must be WAV format mono PCM.")
@ -25,7 +27,5 @@ while True:
break
if rec.AcceptWaveform(data):
print(rec.Result())
#else:
# print(rec.PartialResult())
print(rec.FinalResult())

View File

@ -1,32 +0,0 @@
#!/bin/bash
# utilisation: bash flac_to_wav.sh
# auteur du script: tykayn contact@cipherbliss.com
echo "########### conversion des fichiers audio .flac placés dans le dossier input, vers du wav mono-piste uniquement dans le dossier input/converted_to_wav"
echo " "
cd input
mkdir already_converted
for i in *.flac; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%flac}wav"
echo " converti en WAv, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
echo " "
echo "########### OK "
echo "########### fichiers flac restant dans le dossier input "
ls -l *.flac
cd ..
echo " "
COUNT_LINES_ORIGIN=$(ls -l input/*.flac |wc -l)
COUNT_LINES=$(ls -l input/converted_to_wav |wc -l)
echo "########### fichiers flac dans le dossier input: $COUNT_LINES_ORIGIN "
echo "########### fichiers wav dans le dossier input/converted_to_wav: $COUNT_LINES "
echo "########### conversion faite dans output/converted_out_without_nulls.txt"
exit 0

0
input/ydl/.gitkeep Normal file
View File

89
inputs_to_wav.sh Normal file
View File

@ -0,0 +1,89 @@
#!/bin/bash
# utilisation: bash inputs_to_wav.sh
# auteur du script: tykayn contact@cipherbliss.com
echo "########### conversion des fichiers audio (mkv, mp3, mp4, ogg, webm, wav, avi) placés dans le dossier input, vers du wav mono-piste uniquement dans le dossier input/converted_to_wav"
echo " "
cd input
if -f already_converted; then
mkdir already_converted
fi
for i in *.avi; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%avi}wav"
echo " converti en WAV, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
for i in *.flac; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%flac}wav"
echo " converti en WAV, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
for i in *.mkv; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%mkv}wav"
echo " converti en WAv, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
for i in *.mp3; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%mp3}wav"
echo " converti en WAv, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
for i in *.mp4; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%mp4}wav"
echo " converti en WAv, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
for i in *.ogg; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%ogg}wav"
echo " converti en WAv, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
for i in *.webm; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%webm}wav"
echo " converti en WAv, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
for i in *.wav; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%wav}wav"
echo " converti en WAv, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
COUNT_LINES=$(ls -l input/converted_to_wav | wc -l)
echo "########### fichiers wav dans le dossier input/converted_to_wav: $COUNT_LINES "
echo "########### conversion faite dans output/converted_out_without_nulls.txt"
exit 0

View File

@ -1,32 +0,0 @@
#!/bin/bash
# utilisation: bash mkv_to_wav.sh
# auteur du script: tykayn contact@cipherbliss.com
echo "########### conversion des fichiers audio .mkv placés dans le dossier input, vers du wav mono-piste uniquement dans le dossier input/converted_to_wav"
echo " "
cd input
mkdir already_converted
for i in *.mkv; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%mkv}wav"
echo " converti en WAv, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
echo " "
echo "########### OK "
echo "########### fichiers mkv restant dans le dossier input "
ls -l *.mkv
cd ..
echo " "
COUNT_LINES_ORIGIN=$(ls -l input/*.mkv |wc -l)
COUNT_LINES=$(ls -l input/converted_to_wav |wc -l)
echo "########### fichiers mkv dans le dossier input: $COUNT_LINES_ORIGIN "
echo "########### fichiers wav dans le dossier input/converted_to_wav: $COUNT_LINES "
echo "########### conversion faite dans output/converted_out_without_nulls.txt"
exit 0

View File

@ -1,32 +0,0 @@
#!/bin/bash
# utilisation: bash mp3_to_wav.sh
# auteur du script: tykayn contact@cipherbliss.com
echo "########### conversion des fichiers audio .mp3 placés dans le dossier input, vers du wav mono-piste uniquement dans le dossier input/converted_to_wav"
echo " "
cd input
mkdir already_converted
for i in *.mp3; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%mp3}wav"
echo " converti en WAv, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
echo " "
echo "########### OK "
echo "########### fichiers mp3 restant dans le dossier input "
ls -l *.mp3
cd ..
echo " "
COUNT_LINES_ORIGIN=$(ls -l input/*.mp3 |wc -l)
COUNT_LINES=$(ls -l input/converted_to_wav |wc -l)
echo "########### fichiers mp3 dans le dossier input: $COUNT_LINES_ORIGIN "
echo "########### fichiers wav dans le dossier input/converted_to_wav: $COUNT_LINES "
echo "########### conversion faite dans output/converted_out_without_nulls.txt"
exit 0

View File

@ -1,32 +0,0 @@
#!/bin/bash
# utilisation: bash mp4_to_wav.sh
# auteur du script: tykayn contact@cipherbliss.com
echo "########### conversion des fichiers audio .mp4 placés dans le dossier input, vers du wav mono-piste uniquement dans le dossier input/converted_to_wav"
echo " "
cd input
mkdir already_converted
for i in *.mp4; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%mp4}wav"
echo " converti en WAv, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
echo " "
echo "########### OK "
echo "########### fichiers mp4 restant dans le dossier input "
ls -l *.mp4
cd ..
echo " "
COUNT_LINES_ORIGIN=$(ls -l input/*.mp4 |wc -l)
COUNT_LINES=$(ls -l input/converted_to_wav |wc -l)
echo "########### fichiers mp4 dans le dossier input: $COUNT_LINES_ORIGIN "
echo "########### fichiers wav dans le dossier input/converted_to_wav: $COUNT_LINES "
echo "########### conversion faite dans output/converted_out_without_nulls.txt"
exit 0

View File

@ -1,32 +0,0 @@
#!/bin/bash
# utilisation: bash ogg_to_wav.sh
# 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 dans le dossier input/converted_to_wav"
echo " "
cd input
mkdir already_converted
for i in *.ogg; do
echo "fichier à traiter: $i"
ffmpeg -i "$i" -ac 1 "converted_to_wav/${i%ogg}wav"
echo " converti en WAv, déplacement dans le dossier input/already_converted"
mv "$i" already_converted/
done
echo " "
echo "########### OK "
echo "########### fichiers ogg restant dans le dossier input "
ls -l *.ogg
cd ..
echo " "
COUNT_LINES_ORIGIN=$(ls -l input/*.ogg |wc -l)
COUNT_LINES=$(ls -l input/converted_to_wav |wc -l)
echo "########### fichiers ogg dans le dossier input: $COUNT_LINES_ORIGIN "
echo "########### fichiers wav dans le dossier input/converted_to_wav: $COUNT_LINES "
echo "########### conversion faite dans output/converted_out_without_nulls.txt"
exit 0

View File

@ -2,11 +2,18 @@
# utilisation: bash transcript.sh MONFICHIER.wav
# auteur du script: tykayn contact@cipherbliss.com
if [ $1 ]; then
file=$1
fi
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"
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é
@ -24,8 +31,11 @@ fi
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
@ -33,31 +43,34 @@ echo " "
FILE_NAME=$(basename $file .wav)
OUT_DIR=$( echo "output/$FILE_NAME")
mkdir output/$FILE_NAME
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
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
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 " "
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
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 " "
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
echo "########### $(date) : conversion de la sortie en fichier de sous titres "
python3 ./extract_srt.py "$file" > $OUT_DIR/5_output_$FILE_NAME.srt
ls -l $OUT_DIR

24
webm_to_wav.sh Normal file
View File

@ -0,0 +1,24 @@
#!/bin/bash
# utilisation: bash webm_to_wav.sh
# auteur du script: tykayn contact@cipherbliss.com
echo "########### conversion des fichiers audio .webm placés dans le dossier input, vers du wav mono-piste uniquement dans le dossier input/converted_to_wav"
echo " "
cd input
mkdir already_converted
echo " "
echo "########### OK "
echo "########### fichiers webm restant dans le dossier input "
ls -l *.webm
cd ..
echo " "
COUNT_LINES_ORIGIN=$(ls -l input/*.webm |wc -l)
COUNT_LINES=$(ls -l input/converted_to_wav |wc -l)
echo "########### fichiers webm dans le dossier input: $COUNT_LINES_ORIGIN "
echo "########### fichiers wav dans le dossier input/converted_to_wav: $COUNT_LINES "
echo "########### conversion faite dans output/converted_out_without_nulls.txt"
exit 0

25
website/_foot.php Normal file
View File

@ -0,0 +1,25 @@
</main>
<section class="container footer has-background-black has-text-grey-light">
<div class="columns">
<div class="column">
<h1 class="title is-2">Confidentialité</h1>
ce site utilise youtube-dl pour récupérer la vidéo à transcrire et travailler dessus sur le serveur cette page
est installée.
Ce site ne contient aucun tracker, les fichiers audio et vidéo téléchargés sont supprimés régulièrement, aucun usage de ce que vous mettez sur ce site autre que pour transcrire de l'audio n'est opéré.
Vous pouvez aussi installer sur votre propre machine ce logiciel libre sous licence GNU affero v3.
</div>
<div class="column">
<h1 class="title is-2">Sources</h1>
<a href="https://forge.chapril.org/tykayn/transcription">
Sources: Transcription sur la forge du chapril. </a>
<br>Ceci est un logiciel libre, vous pouvez l'améliorer et examiner
son fonctionnement comme bon vous semble.
</div>
</div>
</section>
</main>
</body>
</html>

13
website/_head.php Normal file
View File

@ -0,0 +1,13 @@
<html>
<head>
<title>
Transcription vosk
</title>
<link rel="stylesheet" type="text/css" href="./bulma.min.css"/>
</head>
<body>
<main class='main'>
<div class="container">
<h1 class="title is-2">Transcription Vosk</h1>
</div>

1
website/bulma.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,27 +1,55 @@
<?php
function command_exist($cmd) {
$return = shell_exec(sprintf("which %s", escapeshellarg($cmd)));
return !empty($return);
}
if(isset($_POST['url'])){
// sanitize input
$url = $_POST['url'];
echo "récupération de la vidéo à l'url " . $url. " ... <br>";
if (!command_exist('youtube-dl')) {
print '[Erreur] pas de commande youtube-dl installée sur ce serveur';
} else {
shell_exec('youtube-dl -i -f best --output "../input/ydl/%(title)s.%(ext)s" '.$url);
}
}else{
echo "pas d'url envoyée. Vérifiez le formulaire. <a href='index.php'>Retour</a>";
}
include( '_head.php' );
/**
* récupération d'une vidéo par youtube dl et conversion
*/
include( 'website/run.php' );
/**
* @param $cmd
*
* @return bool
*/
function command_exist( $cmd ) {
$return = shell_exec( sprintf( "which %s", escapeshellarg( $cmd ) ) );
return ! empty( $return );
}
if ( isset( $_POST[ 'url' ] ) ) {
// sanitize input
$url = $_POST[ 'url' ];
echo "récupération de la vidéo à l'url " . $url . " ... <br>";
// if (!command_exist('youtube-dl')) {
// print '[Erreur] pas de commande youtube-dl installée sur ce serveur';
// } else {
$uniqid = time();
# exemple url https://peertube.cipherbliss.com/videos/watch/e6a37508-042e-4d83-8598-5d36b764bb3d
shell_exec( 'bash youtube-dl.sh ' . $uniqid . ' ' . $url );
// shell_exec('youtube-dl --extract-audio --audio-format flac --audio-quality 0 --output "../input/ydl/$time.flac" '.$url);
// shell_exec('youtube-dl --extract-audio --audio-format flac --audio-quality 0 --output "../input/ydl/%(title)s_audio.%(ext)s" '.$url);
// récup du nom de fichier
echo "récupération de la vidéo OK " . $url . ". <br>";
echo "Conversion de la vidéo" . $url . "... <br>";
echo "Vous pouvez télécharger vos fichiers.<br>";
$dir = scandir( '../input/ydl' );
var_dump( $dir );
// }
} else {
echo "pas d'url envoyée. Vérifiez le formulaire. <a href='index.php'>Retour</a>";
}
include( '_foot.php' );

View File

@ -1,32 +1,27 @@
<?php
include( 'website/download.php' );
?>
<html>
<head>
<title>
Transcription vosk
</title>
</head>
<body>
include( '_head.php' );
?>
<section class="hero is-info is-large">
<div class="hero-body">
<div class="container">
<main class='container'>
<h1>Transcription</h1>
<section>
Donnez l'url de la vidéo à transcrire.
<form action='download.php' method='post' >
<input type='text' name='url'>
<button type='submit'>Envoyer</button>
</form >
</section>
<section class='result'>
Voici votre fichier de sous titres:
<p class="title">
Conversion d'audio ou de vidéo en texte
</p>
<p class="subtitle">
Transcrire en Français avec une URL
<form action='download.php' method='post'>
<input class="input is-block" type='text' name='url'
value="https://peertube.cipherbliss.com/videos/watch/e6a37508-042e-4d83-8598-5d36b764bb3d">
<br>
<button class="button is-primary" type='submit'>Envoyer</button>
</form>
</div>
</p>
</div>
</section>
</section>
<section>
<h1>Vie privée</h1>
ce site utilise youtube-dl pour récupérer la vidéo à transcrire et travailler dessus sur le serveur cette page est installée.
Vous pouvez aussi installer sur votre propre machine ce logiciel libre sous licence GNU affero v3.
</section>
</main>
</body>
</html>
<?php
include( '_foot.php' );
?>

9
website/youtube-dl.sh Normal file
View File

@ -0,0 +1,9 @@
#!/bin/bash
UNIQID=$1
URL=$2
OUTPUT="../input/ydl/$UNIQID.flac"
youtube-dl --extract-audio --audio-format flac --audio-quality 0 --output $OUTPUT $URL
mkdir ../input/ydl/$UNIQID
ffmpeg -i "../input/ydl/$UNIQID" -ac 1 "../input/ydl/'.$UNIQID.'.wav"