Skip to content

Commit 9211735

Browse files
committed
Push
- Add "Transcribe_wav.py" - Aggiornato "Readme.md"
1 parent e345bb1 commit 9211735

2 files changed

Lines changed: 139 additions & 0 deletions

File tree

README.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,3 +196,95 @@ Operazione completata.
196196

197197
- **Assicurati di avere i permessi necessari per cancellare le cartelle all'interno della directory specificata.**
198198
- **Usa questo script con cautela per evitare di cancellare cartelle/File per errore.**
199+
200+
---
201+
202+
## Transcribe_wav.py
203+
204+
_Questo script Python utilizza il modello Whisper di OpenAI per trascrivere file audio di podcast in testo. I file di trascrizione vengono salvati nella stessa directory dei file audio originali._
205+
206+
### Funzionalità
207+
208+
- Trascrive file audio .wav presenti in una directory specificata.
209+
- Salva le trascrizioni in file di testo con lo stesso nome dei file audio.
210+
- Verifica se una trascrizione esiste già per evitare di ripetere il processo.
211+
- Utilizza il modello Whisper di OpenAI per la trascrizione.
212+
213+
### Utilizzo
214+
215+
- Clona questo repository o scarica lo script Transcribe_wav.py.
216+
- Installiamo e configuriamo FFmpeg:
217+
218+
#### Installazione e Configurazione di FFmpeg su Windows
219+
220+
- **Scarica FFmpeg**:
221+
- Vai su [ffmpeg.org](https://ffmpeg.org/download.html).
222+
- Clicca su "Download" sotto "More downloading options".
223+
- Seleziona il link "Windows builds from gyan.dev".
224+
- Scarica la versione statica (ad esempio, "ffmpeg-release-essentials.zip").
225+
- - **Estrai FFmpeg**:
226+
227+
- Estrarre il file `ffmpeg-release-essentials.zip` in una directory come `C:\ffmpeg`.
228+
229+
- **Aggiungi FFmpeg al PATH**:
230+
- Apri "Impostazioni" dal menu Start.
231+
- Cerca "Environment Variables" e seleziona "Modifica le variabili d'ambiente di sistema".
232+
- Clicca su "Variabili d'ambiente" nella finestra "Proprietà del sistema".
233+
- Seleziona `Path` sotto "Variabili di sistema" e clicca su "Modifica...".
234+
- Clicca su "Nuovo" e inserisci `C:\ffmpeg\bin`.
235+
- **Verifica l'installazione di FFmpeg**:
236+
237+
- Apri il Prompt dei comandi.
238+
- Esegui `ffmpeg -version`.
239+
240+
- Assicurati di avere il modello Whisper di OpenAI installato. Puoi installarlo utilizzando:
241+
242+
```sh
243+
pip install openai-whisper pydub
244+
pip --version
245+
246+
# Crea l'ambiente virtuale
247+
python -m venv myenv
248+
249+
# Attiva L'ambiente Virtuale
250+
myenv\Scripts\activate
251+
252+
# Check Attivazione Ambiente Virtuale
253+
pip install openai-whisper pydub
254+
255+
# Verifica l'installazione di FFmpeg
256+
ffmpeg -version
257+
```
258+
259+
- Esegui lo script utilizzando Python:
260+
261+
```sh
262+
python Transcribe_wav.py
263+
264+
Inserisci il percorso della cartella contenente i file audio dei podcast quando richiesto.
265+
```
266+
267+
- Lo script trascriverà i file audio .wav e salverà le trascrizioni nella stessa directory.
268+
269+
### Esempio di Esecuzione
270+
271+
```sh
272+
$ python Transcribe_wav.py
273+
Inserisci il percorso della cartella contenente i podcast: /path/to/your/podcast_directory
274+
Trascrizione in corso per podcast1.wav...
275+
Trascrizione completata per podcast1.wav, salvata in /path/to/your/podcast_directory/podcast1.txt
276+
Trascrizione in corso per podcast2.wav...
277+
Trascrizione completata per podcast2.wav, salvata in /path/to/your/podcast_directory/podcast2.txt
278+
...
279+
Trascrizione completata.
280+
```
281+
282+
### Struttura del Codice
283+
284+
- Transcribe_wav(file_path, model_name='medium', language='it'): Questa funzione carica il modello Whisper e trascrive l'audio del file specificato.
285+
save_transcription(transcription, output_path): Questa funzione salva la trascrizione in un file di testo.
286+
- main(podcast_dir): La funzione principale che gestisce la scansione della directory dei podcast, la trascrizione dei file audio e il salvataggio delle trascrizioni.
287+
288+
### Note
289+
290+
- Se hai dei comuni file ".mp3" vanno convertiti in wav prima di eseguire lo script [QUI](https://www.mediahuman.com/it/audio-converter/) un software che uso spesso free e di facile utilizzo per la conversione dei file audio

Transcribe_wav.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import os
2+
import whisper
3+
4+
def transcribe_podcast(file_path, model_name='medium', language='it'):
5+
# Carica il modello Whisper
6+
model = whisper.load_model(model_name)
7+
8+
# Trascrivi l'audio con Whisper
9+
result = model.transcribe(file_path, language=language)
10+
11+
# Ottieni il testo trascritto
12+
transcription = result['text']
13+
14+
return transcription
15+
16+
def save_transcription(transcription, output_path):
17+
with open(output_path, 'w', encoding='utf-8') as f:
18+
f.write(transcription)
19+
20+
def main(podcast_dir):
21+
for root, dirs, files in os.walk(podcast_dir):
22+
for file_name in files:
23+
if file_name.endswith('.wav'):
24+
file_path = os.path.join(root, file_name)
25+
output_file_name = os.path.splitext(file_name)[0] + '.txt'
26+
output_path = os.path.join(root, output_file_name)
27+
28+
# Verifica se il file di trascrizione esiste e ha un peso maggiore di 1 byte
29+
if os.path.exists(output_path) and os.path.getsize(output_path) > 1:
30+
print(f'Saltato {file_name}, il file di trascrizione {output_file_name} esiste già.')
31+
continue
32+
33+
try:
34+
print(f'Trascrizione in corso per {file_name}...')
35+
transcription = transcribe_podcast(file_path)
36+
save_transcription(transcription, output_path)
37+
print(f'Trascrizione completata per {file_name}, salvata in {output_path}')
38+
except Exception as e:
39+
print(f'Errore durante la trascrizione di {file_name}: {e}')
40+
41+
if __name__ == "__main__":
42+
podcast_dir = input("Inserisci il percorso della cartella contenente i podcast: ").strip()
43+
if os.path.isdir(podcast_dir):
44+
main(podcast_dir)
45+
print("Trascrizione completata.")
46+
else:
47+
print("Il percorso inserito non è valido. Per favore riprova.")

0 commit comments

Comments
 (0)