colab version or example

#2
by Inforline - opened

please post an colab version or example. Audio file is mp3 and 16000kz?

You can use the following code:

import subprocess
subprocess.run(["pip", "install", "-Uq", "transformers", "datasets", "accelerate"])

import time
import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
from datasets import load_dataset


device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model_id = "deepdml/whisper-large-v3-turbo"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)

processor = AutoProcessor.from_pretrained(model_id)

pipe = pipeline(
    "automatic-speech-recognition",
    model=model,
    tokenizer=processor.tokenizer,
    feature_extractor=processor.feature_extractor,
    torch_dtype=torch_dtype,
    device=device,
)

dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
sample = dataset[0]["audio"]

result = pipe(sample)
print(result["text"])

If you have a local file "audio.mp3":

result = pipe("audio.mp3")
print(result["text"])

Hi,
Thank you very much.
But the script in colab hangs on the line:
result = pipe("audio.mp3")
print(result["text"]).
I don't know if the reason is that the audio file is in Italian.

Are you using GPU in Colab? Could you share the file?

I use whisper model large-v3 with the following code
(the code is tested to transcribe several mp3 files present in the path):

import os
import subprocess
import time

from google.colab import files
print("Librerie e Programma In Caricamento....⌚")
!pip install -U pip

subprocess.run(["pip", "install", "-Uq", "openai-whisper"])
subprocess.run(["sudo", "apt-get", "update", "-qq"], stdout=subprocess.DEVNULL)
subprocess.run(["sudo", "apt-get", "install", "-qq", "ffmpeg"], stdout=subprocess.DEVNULL)
print("✅ Librerie e Programma Caricati Correttamente.")

Cerca i file nella directory corrente

files = [filename for filename in os.listdir(".") if os.path.isfile(filename) and filename.endswith(".mp3")]
files.sort() # Ordina i file in ordine alfabetico
num_files = len(files)

Gestione del caso in cui non viene trovato alcun file nella directory corrente

if num_files == 0:
print("Errore: non è stato trovato alcun file MP3 nella directory corrente.")
else:
for i, filename in enumerate(files, 1):
print(f"Trascrizione {i}/{num_files}: File {filename} in elaborazione/trascrizione")
print("")
# Esegui il comando whisper
#!whisper "$filename" --model large-v3 --language it --output_format txt
!whisper "$filename" --model large-v3 --language it --output_format txt
print("")
print(f"Trascrizione {i}/{num_files} eseguita; file di testo disponibile nella directory corrente")
print("")
if i != num_files:
time.sleep(5) # Attendi 5 secondi prima di procedere alla trascrizione successiva

if you want to test it with your script, the audio is here:
audio link : https://we.tl/t-occ9r7YzYv
As I said, it crashes for me for test

But you are using openai-whisper library, not transformers library.
Anyway, I can get the transcription:

[00:00.000 --> 00:16.000]  Buongiorno a tutti, oggi 30 settembre abbiamo convocato il Consiglio Comunale che prevede
[00:16.000 --> 00:26.140]  una serie di punti molto importanti, per la precisione sono 11 i punti di cui discutere.
[00:26.140 --> 00:35.300]  Il primo punto è la proposta di deliberazione di Consiglio numero 72 del 31 maggio 2024,
[00:36.300 --> 00:41.600]  avventa d'oggetto servizio di gestione della sosta a pagamento...
[00:41.600 --> 00:48.720]  Dobbiamo procedere con l'appello, perfetto, scusate, dobbiamo legittimare il Consiglio,
[00:48.720 --> 00:53.240]  scusate, prego segretario.
[00:56.140 --> 01:20.140]  Celentano, assente, Anzalone, assente, Baccini, Bellini, Belvisi, Bruni, Campagna, assente,
[01:20.140 --> 01:25.400]  Catani, Ciolfi.
[01:26.140 --> 01:49.900]  Censi, Cochi, Damiano Coletta, Floriana Coletta, Colonna, Coluzzi, assente, Corridi,
[01:49.900 --> 01:55.900]  De Amicis, assente, Di Matteo.
[01:56.140 --> 02:19.100]  Faticoni, Fiore, assente, Furlanetto, Galardo, Iavarone, Isotonna, assente, Licata, Maiocchi,
[02:19.100 --> 02:25.820]  Mure, assente, Pagano.
[02:26.140 --> 02:37.580]  Forzi, Ranaldi, Scalco, Tiero, Balletta.
[02:37.580 --> 02:47.580]  25 presenti, la seduta è valida, possiamo procedere con la discussione dei punti all'ordine
[02:47.580 --> 02:48.580]  del giorno.
[02:48.580 --> 02:53.100]  Il primo punto è la proposta di deliberazione, ha chiesto di intervenire.
[02:53.100 --> 02:54.100]  Premozzo.
.......
[25:21.440 --> 25:26.440]  Chiedo conferma anche al dirigente, sul discorso di approvazione del 2022,
[25:26.440 --> 25:30.440]  chiedeva la Consigliere Sciolta. È stato approvato con la stessa metodologia?
[25:30.440 --> 25:31.440]  PRESIDENTE DEL CONSIGLIO COMUNALE FABRIZIO FERRANTE
[25:31.440 --> 25:33.440]  Prego, le do la parola.
[25:33.440 --> 25:36.440]  PRESIDENTE DEL CONSIGLIO COMUNALE FABRIZIO FERRANTE
[25:36.440 --> 25:38.440]  Non c'è la scheda.
[25:38.440 --> 25:41.440]  PRESIDENTE DEL CONSIGLIO COMUNALE FABRIZIO FERRANTE

I can't tell you, I use your code but, as you can see from the shot,
it crashes on -- > result = pipe("audio.mp3")
Repost code, please -

Sign up or log in to comment