le grand remake

This commit is contained in:
dan 2024-09-04 16:16:18 +02:00
parent ed75a5c8d8
commit 44cf4367ff
3 changed files with 67 additions and 154 deletions

221
README.md
View File

@ -1,214 +1,127 @@
# sboby - Trascrivere una registrazione audio # sboby - Trascrivere una registrazione audio
*Sbobinare, parola amara.* *"Sbobinare, parola amara". Anonimo, De Labore Bastardo. Senzatempo ed.*
![sboby](sboby.jpg) ![sboby](sboby.jpg)
Il metodo gramo, passo passo ma così educazionale che ti sale la gioia. *Sbobinare - v. tr. riportare per iscritto il contenuto di discorsi, interviste, conferenze registrati su nastro magnetico*.
Feel free di saltare le parti ovvie o di arredare il tunnel come meglio si crede.
Funziona con Debian 11 stable. Si usa raramente il nastro magnetico, ma si lavora comunque a comporre un testo da un audio, un file digitale come WAV, OGG o MP3.
# Installare il software che verrà utilizzato Di seguito una breve guida pratica per implementare la trascrizione automatica di un audio sul proprio Pc, funzionante anche
senza collegamento internet perché il modello linguistico verrà scaricato e usato in locale, in autonomia.
sudo apt install python3 ffmpeg unzip mediainfo Nota: La trascrizione sarà esatta circa al 90% e si raccomanda dunque, prima di pubblicare, di ascoltare l'audio leggendo la
trascrizione ottenuta in modo da poter correggere gli errori. Ad esempio per individuare delle frasi di senso compiuto, ma
che non sono mai state dette, cioé le cosiddette: "allucinazioni". Anche i nomi propri di persona non possono venir
riconosciuti e vengono approssimati. Certamente una dettatura scandita nel microfono otterrà risultati migliori di un audio
ambientale mentre in sottofondo friggono mistiche patatine fritte. E dunque seppure riascoltar si deve, il testo ricavato
*autonomaticagigamente* risulterà una buona base e andrà ad alleviare il lavoraccio di trascrizione.
Lanciare un terminale e creare una directory dove lavorare con il file ad esempio: **audio.mp3** tl;dr non ti fidare e riascolta l'audio mentre rileggi.
mkdir ~/sbobina Useremo il Vosk speech recognition toolkit: https://alphacephei.com/vosk/
cd ~/sbobina/ Debian GNU/Linux OS libero: https://www.debian.org/
audio.mp3 Un file audio: "allunaggio.mp3" che verrà usato negli esempi è a disposizione.
# Convertire il file in mp4 Sono supportati sia MP3 che WAV che OGG e AAC.
ffmpeg -i audio.mp3 audio.mp4 # Elenco delle operazioni
audio.mp4 Partiamo da GNU/Linux, Debian 12 (stabile).
# Se il file è molto lungo nota: qualsiasi OS con un ambiente python3 funzionante andrà bene, questa guida usa Debian 12.
*es: più di due ore e mezzo* Andiamo a installare python e altre cose utili:
Sarà utile spezzarlo in più parti, sennò lo script potrebbe fallire perché `sudo apt install python3 python3-full python3-venv ffmpeg unzip mediainfo`
gli finisce la memoria, ma non gliene faremo una colpa.
Sapere quanto dura: Creiamo la cartella: "sboby" e al suo interno, la sotto-cartella: "vosk".
mediainfo audio.mp4 | grep Duration `mkdir -p ~/sboby/vosk`
Duration: 2 h 00 min Entriamo nella cartella sboby/vosk/.
In questo esempio il file esattamente dura due ore e lo si vuole dividere in due `cd ~/sboby/vosk/`
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 Scarichiamo il modello, anche [https://en.wikipedia.org/wiki/Large_language_model](LLM), vosk-italiano, circa 2GB:
ffmpeg -ss 01:00:00 -t 01:00:00 -i audio.mp4 -vcodec copy -acodec copy audio-1-2.mp4 `wget https://alphacephei.com/vosk/models/vosk-model-it-0.22.zip`
audio-0-1.mp4 Altre lingue sono scaricabili alla pagina dei [Vosk models](https://alphacephei.com/vosk/models).
audio-1-2.mp4
# Trascrivere i file Scompattiamo il modello appena scaricato:
Per trascrivere (o sbobinare), si installeranno videogrep e vosk `unzip vosk-model-it-0.22.zip`
pip3 install videogrep Opzionale: possiamo ora cancellare il file zip.
pip3 install vosk `rm vosk-model-it-0.22.zip`
# Modulo lingua italiana per Vosk Usciamo dalla cartella ~/sboby/vosk/
Scaricare e scompattare il modulo lingua italiana per Vosk `cd`
https://alphacephei.com/vosk/models Creiamo un ambiente virtuale per Python
al momento la versione da usare è la small-it-0.22 (48MB) `python3 -m venv /home/$USER/sboby`
unzip vosk-model-small-it-0.22.zip Usiamo Python per scaricare e installare wheel (una libreria necessaria) e vosk-transcriber:
# Trascrivere `./sboby/bin/pip3 install wheel`
la prima ora: `./sboby/bin/pip3 install vosk`
videogrep --input audio1.mp4 --model vosk-model-small-it-0.4/ --transcribe Ora possiamo effettuare la prima trascrizione, useremo ad esempio l'audio ![allunaggio.mp3](allunaggio.mp3).
Durata della conversione: circa 15 minuti. La durata dipenderà dalla potenza del PC usato. Prima, vediamo quanto dura:
la seconda ora: `mediainfo allunaggio.mp3 | grep Duration`
videogrep --input audio2.mp4 --model vosk-model-small-it-0.4/ --transcribe > Duration: 1 min 16 s
Si ottengono due JSON file A seconda delle risorse disponibili, varierà il tempo di elaborazione.
Per un Pc di media potenza, un audio di 1 ora, potrebbe impiegare circa 1 ora.
audio1.json Possiamo ora invocare il programma: "vosk-transcriber", indicando (-i) quale audio sbobinare, che modello usare (--model) e dove (-o) appoggiare il testo.
audio2.json
I JSON file sono comodissimi dal punto di vista di una macchina. Se lo scopo `~/sboby/bin/vosk-transcriber -i ~/sboby/allunaggio.mp3 --model /share/software/vosk/vosk-model-it-0.22/ -o ~/sboby/allunaggio.txt`
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. Possiamo anche ottenere la trascrizione in formato testo sottotitolo (SRT) con time-code:
Ma in questo caso siamo umani, si vuole ottenere del testo semplice da `~/sboby/bin/vosk-transcriber -i ~/sboby/allunaggio.mp3 --model /home/$USER/sboby/vosk/vosk-model-it-0.22/ -t srt -o ~/sboby/allunaggio.srt`
allegare alla registrazione per ricerca e archivio (and for great justice).
Here comes Bomboclat, il quale ha scritto questo piccolo script che converte Opzionale: Possiamo mettere tutto nello script sboby.sh in ~/bin/ che renderemo eseguibile (`chmod 755 ~/bin/sboby.sh`).
(guarda un po') un JSON in un SRT.
# Convertire da JSON a SRT `
#!/bin/sh
~/sboby/bin/vosk-transcriber -i ${1+"$@"} --model ~/sboby/vosk/vosk-model-it-0.22/ -o ${1+"$@"}.txt ;
sleep 5s ;
~/sboby/bin/vosk-transcriber -i ${1+"$@"} --model ~/sboby/vosk/vosk-model-it-0.22/ -t srt -o ${1+"$@"}.srt
echo 'bye bye sboby'
`
Ecco lo script [json2srt](json2srt.py) In modo da ottenere la trascrizione tramite il semplice comando: sboby.sh [FILE]..
Per l'utilizzo lasciamo la parola a Bomboclat, cui rendiamo merito: `sboby.sh allunaggio.mp3`
`sudo apt install python3-venv` Infine, se usiamo XFCE4 come ambiente scrivania, si potrà inserire una [custom action](https://docs.xfce.org/xfce/thunar/custom-actions)
in Thunar da usare cliccando col tasto destro sull'audio:
*nella tua home dai questo comando* `/home/$USER/bin/sboby.sh %f`
`python3 -m venv json_to_srt` ![sboby custom action](sboby-custom-action.png)
*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 audio1.json -o audio1.srt
json2srt.py -i audio2.json -o audio2.srt
Ora si potranno ricongiungere i due file, finalmente.
cat audio1.srt audio2.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 # Share and enjoy
Shoutz a Debian, ffmpeg, videogrep e vosk, Bomboclat per lo script, ilLobo per *"Dove si smangiuca, dio mi conduca. Dove si lavora, non venga mai l'ora". Skiantos, 2009, Una vita spesa a skivar la fresa*.
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) Commenti? Kudos? Consigli? Vaffa? Grazie! -- dan [at] autistici [dot] org
**WE ARE NOT MEN! WE ARE DIWO!** Prima versione: 2022-06-06
# Links Ultimo aggiornamento: 2024-09-04
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* *bye bye sboby*

BIN
allunaggio.mp3 Normal file

Binary file not shown.

BIN
sboby-custom-action.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB