Trascrivere una registrazione audio
Go to file
2022-06-06 00:43:04 +02:00
json2srt.py scripto 2022-06-06 00:43:04 +02:00
README.md README 2022-06-06 00:42:46 +02:00

sboby - Trascrivere una registrazione audio

Sbobinare, parola amara.

sboby{ width=90% }

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 useremo:

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/

ls

audio.mp3

Convertire il file in mp4

ffmpeg -i audio.mp3 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

ls
audio.mp3
audio.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

ls
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 usando videogrep, si può procedere. Tra i link c'è il tutorial di videogrep.

Se lo scopo è farne 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

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