213 lines
4.9 KiB
Markdown
213 lines
4.9 KiB
Markdown
# sboby - Trascrivere una registrazione audio
|
|
|
|
*Sbobinare, parola amara.*
|
|
|
|
![sboby](sboby.jpg)
|
|
|
|
Il metodo gramo, passo passo ma così educazionale che ti sale la gioia.
|
|
Feel free di saltare le parti ovvie o di arredare il tunnel come meglio si crede.
|
|
|
|
Funziona con Debian 11 stable.
|
|
|
|
# Installare il software che verrà utilizzato
|
|
|
|
sudo apt install python3 ffmpeg unzip mediainfo
|
|
|
|
Lanciare un terminale e creare una directory dove lavorare con il file ad esempio: **audio.mp3**
|
|
|
|
mkdir ~/sbobina
|
|
|
|
cd ~/sbobina/
|
|
|
|
audio.mp3
|
|
|
|
# Convertire il file in mp4
|
|
|
|
ffmpeg -i audio.mp3 audio.mp4
|
|
|
|
audio.mp4
|
|
|
|
# Se il file è molto lungo
|
|
|
|
*es: più di due ore e mezzo*
|
|
|
|
Sarà utile spezzarlo in più parti, sennò lo script potrebbe fallire perché
|
|
gli finisce la memoria, ma non gliene faremo una colpa.
|
|
|
|
Sapere quanto dura:
|
|
|
|
mediainfo audio.mp4 | grep Duration
|
|
|
|
Duration: 2 h 00 min
|
|
|
|
In questo esempio il file esattamente dura due ore e lo si vuole dividere in due
|
|
parti di un'ora ciascuna:
|
|
|
|
ffmpeg -ss 00:00:00 -t 01:00:00 -i audio.mp4 -vcodec copy -acodec copy audio-0-1.mp4
|
|
|
|
ffmpeg -ss 00:01:00 -t 01:00:00 -i audio.mp4 -vcodec copy -acodec copy audio-1-2.mp4
|
|
|
|
audio-0-1.mp4
|
|
audio-1-2.mp4
|
|
|
|
# Trascrivere i file
|
|
|
|
Per trascrivere (o sbobinare), si installeranno videogrep e vosk
|
|
|
|
pip3 install videogrep
|
|
|
|
pip3 install vosk
|
|
|
|
# Modulo lingua italiana per Vosk
|
|
|
|
Scaricare e scompattare il modulo lingua italiana per Vosk
|
|
|
|
wget https://alphacephei.com/vosk/models/vosk-model-small-it-0.4.zip
|
|
|
|
unzip vosk-model-small-it-0.4.zip
|
|
|
|
# Trascrivere
|
|
|
|
la prima ora:
|
|
|
|
videogrep --input audio-0-1.mp4 --model vosk-model-small-it-0.4/ --transcribe
|
|
|
|
Durata della conversione: circa 15 minuti. La durata dipenderà dalla potenza del PC usato.
|
|
|
|
la seconda ora:
|
|
|
|
videogrep --input audio-1-2.mp4 --model vosk-model-small-it-0.4/ --transcribe
|
|
|
|
Si ottengono due JSON file
|
|
|
|
audio-0-1.json
|
|
audio-1-2.json
|
|
|
|
I JSON file sono comodissimi dal punto di vista di una macchina. Se lo scopo
|
|
della trascrizione è editare il video automaticamente usando videogrep, si può
|
|
procedere. Tra i link c'è il tutorial di videogrep.
|
|
|
|
Se lo scopo è fare dei sottotitoli, occorrerà convertire da JSON in SRT o XML.
|
|
|
|
Ma in questo caso siamo umani, si vuole ottenere del testo semplice da
|
|
allegare alla registrazione per ricerca e archivio (and for great justice).
|
|
|
|
Here comes Bomboclat, il quale ha scritto questo piccolo script che converte
|
|
(guarda un po') un JSON in un SRT.
|
|
|
|
# Convertire da JSON a SRT
|
|
|
|
Ecco lo script [json2srt](json2srt.py)
|
|
|
|
Per l'utilizzo lasciamo la parola a Bomboclat, cui rendiamo merito:
|
|
|
|
`sudo apt install python3-venv`
|
|
|
|
*nella tua home dai questo comando*
|
|
|
|
`python3 -m venv json_to_srt`
|
|
|
|
*ti crea una cartella json_to_srt
|
|
con dentro python3
|
|
fatto questo comando ne dai un altro per attivarlo*
|
|
|
|
`source ~/json_to_srt/bin/activate`
|
|
|
|
*a sto punto hai lo script che ora ti passo aggiornato
|
|
ha ancora un difetto, le ore sono espresse con una cifra
|
|
percio' anziche' scrivere per esempio:
|
|
00:00:00,000
|
|
ore minuti secondi, millesimi
|
|
scrive solo
|
|
0:00:00,000
|
|
che si risolve facile
|
|
aggiungendo lo 0 a mano nella stringa finale
|
|
ma per ora lasciamo perdere sto dettaglio*
|
|
|
|
`python json2srt.py -i un_file.json -o il_suo_output.srt`
|
|
|
|
A me mi funziona anche solo mettendo lo script in ~/bin e dandogli i permessi di esecuzione:
|
|
|
|
mv json2srt.py ~/bin/
|
|
|
|
chmod 755 ~/bin/json2srt.py
|
|
|
|
Però è anche vero che non si dice: "a me mi", dunque anche il vostro
|
|
chilometraggio potrebbe variare.
|
|
|
|
Una volta installato lo script, si può fare la conversione da JSON a SRT.
|
|
|
|
Tornando al nostro esempio:
|
|
|
|
json2srt.py -i audio-0-1.json -o audio-0-1.srt
|
|
|
|
json2srt.py -i audio-1-2.json -o audio-1-2.srt
|
|
|
|
Ora si potranno ricongiungere i due file, finalmente.
|
|
|
|
cat audio-0-1.srt audio-1-2.srt > audio.srt
|
|
|
|
E così ottenere l'agognato file:
|
|
|
|
**audio.srt**
|
|
|
|
# Il file audio.SRT
|
|
|
|
Un file SRT è testo puro e si presenta così:
|
|
|
|
1
|
|
0:00:01,680 --> 0:00:06,810
|
|
bla bla bla bla, bla bla bla
|
|
|
|
2
|
|
0:00:08,372 --> 0:00:13,830
|
|
bla bla bla bla e ancora bla
|
|
|
|
cioè:
|
|
|
|
* Numeroriga
|
|
* Timecode
|
|
* Testo
|
|
* Spazio
|
|
|
|
È già umanamente leggibile, ma per poterlo pubblicare come testo semplice si
|
|
potranno togliere le righe che contengono, come espressioni regolari, Numeroriga
|
|
e Timecode.
|
|
|
|
sed '/[0-9]/d' audio.srt > trascrizione.txt
|
|
|
|
Ed eventualmente anche levare la riga vuota!
|
|
|
|
sed '/^$/d' trascrizione.txt > wallof.txt
|
|
|
|
Poi rileggere, riascoltare e correggere.
|
|
|
|
# Share and enjoy
|
|
|
|
Shoutz a Debian, ffmpeg, videogrep e vosk, Bomboclat per lo script, ilLobo per
|
|
aver scoperto videogrep, dan che ha scritto, e Shoutz a te che leggi, possa la
|
|
sbobinatura esserti lieve.
|
|
|
|
This is a: DIWO (Do It With Others)
|
|
|
|
**WE ARE NOT MEN! WE ARE DIWO!**
|
|
|
|
# Links
|
|
|
|
Debian GNU/Linux Free OS
|
|
https://www.debian.org/
|
|
|
|
ffmpeg
|
|
https://ffmpeg.org/
|
|
|
|
Videogrep Tutorial
|
|
https://lav.io/notes/videogrep-tutorial/
|
|
|
|
Vosk speech recognition toolkit
|
|
https://alphacephei.com/vosk/
|
|
|
|
Vosk models
|
|
https://alphacephei.com/vosk/models
|
|
|
|
*bye bye sboby*
|