I modelli di Whisper per il riconoscimento automatico del parlato sono ora disponibili su Amazon SageMaker JumpStart

Gli innovativi modelli di Whisper per il riconoscimento automatico del parlato sono finalmente disponibili su Amazon SageMaker JumpStart

Oggi siamo entusiasti di annunciare che il modello di base OpenAI Whisper è disponibile per i clienti che utilizzano Amazon SageMaker JumpStart. Whisper è un modello pre-addestrato per il riconoscimento automatico della voce (ASR) e la traduzione della voce. Addestrato su 680 mila ore di dati etichettati, i modelli Whisper dimostrano una forte capacità di generalizzazione a molti set di dati e domini senza la necessità di un ulteriore addestramento fine-tuning. SageMaker JumpStart è l’hub di machine learning (ML) di SageMaker che fornisce accesso a modelli di base oltre a algoritmi integrati e modelli di soluzioni end-to-end per aiutarti a iniziare velocemente con l’ML.

Puoi anche utilizzare Amazon Transcribe per l’ASR, un servizio di riconoscimento vocale automatico completamente gestito e continuamente addestrato.

In questo articolo, ti mostriamo come distribuire il modello OpenAI Whisper e invocarlo per trascrivere e tradurre l’audio.

Il modello OpenAI Whisper utilizza il contenitore huggingface-pytorch-inference. Come cliente dell’hub dei modelli SageMaker JumpStart, puoi utilizzare l’ASR senza dover mantenere lo script del modello al di fuori del SageMaker SDK. I modelli SageMaker JumpStart migliorano anche la situazione della sicurezza con endpoint che consentono l’isolamento di rete.

Modelli di base in SageMaker

SageMaker JumpStart fornisce accesso a una serie di modelli provenienti da hub di modelli popolari, tra cui Hugging Face, PyTorch Hub e TensorFlow Hub, che puoi utilizzare nel tuo flusso di lavoro di sviluppo ML in SageMaker. I recenti progressi nell’ML hanno dato origine a una nuova classe di modelli noti come modelli di base, che sono tipicamente addestrati su miliardi di parametri e possono essere adattati a una vasta categoria di casi d’uso, come la sintesi del testo, la generazione di arte digitale e la traduzione del linguaggio. Poiché questi modelli sono costosi da addestrare, i clienti desiderano utilizzare modelli di base pre-addestrati esistenti e li affinano solo se necessario, anziché addestrare questi modelli da soli. SageMaker fornisce un elenco selezionato di modelli tra cui scegliere sulla console SageMaker.

Ora puoi trovare modelli di base da diversi fornitori di modelli all’interno di SageMaker JumpStart, consentendoti di iniziare rapidamente con i modelli di base. SageMaker JumpStart offre modelli di base basati su diverse attività o fornitori di modelli e puoi facilmente esaminare le caratteristiche del modello e i termini di utilizzo. Puoi anche provare questi modelli utilizzando un widget di test. Quando vuoi utilizzare un modello di base su larga scala, puoi farlo senza lasciare SageMaker utilizzando i notebook pre-costruiti dai fornitori di modelli. Poiché i modelli sono ospitati e distribuiti su AWS, puoi fidarti che i tuoi dati, che vengono utilizzati per valutare o utilizzare il modello su larga scala, non saranno condivisi con terze parti.

Modelli di base OpenAI Whisper

Whisper è un modello pre-addestrato per ASR e traduzione della voce. Whisper è stato proposto nel documento Robust Speech Recognition via Large-Scale Weak Supervision di Alec Radford e altri, di OpenAI. Il codice originale può essere trovato in questo repository GitHub.

Whisper è un modello encoder-decoder basato su Transformer, anche chiamato modello sequenza-a-sequenza. È stato addestrato su 680 mila ore di dati vocali etichettati con l’uso di un’ampia supervisione debole su larga scala. I modelli Whisper dimostrano una forte capacità di generalizzazione a molti set di dati e domini senza la necessità di ulteriori addestramenti fine-tuning.

I modelli sono stati addestrati su dati sia solo in inglese che multilingue. I modelli solo in inglese sono stati addestrati per il riconoscimento della voce. I modelli multilingue sono stati addestrati per il riconoscimento della voce e la traduzione della voce. Per il riconoscimento della voce, il modello predice le trascrizioni nella stessa lingua dell’audio. Per la traduzione della voce, il modello predice le trascrizioni in una lingua diversa dall’audio.

I checkpoint di Whisper sono disponibili in cinque configurazioni di dimensioni di modelli diverse. I primi quattro sono addestrati utilizzando dati sia solo in inglese che multilingue. I checkpoint più grandi sono solo multilingue. Tutti e dieci i checkpoint pre-addestrati sono disponibili nell’hub di Hugging Face. I checkpoint sono riassunti nella seguente tabella con collegamenti ai modelli sul hub:

Nome modello Numero di parametri Multilingue
whisper-tiny 39 M Si
whisper-base 74 M Si
whisper-small 244 M Si
whisper-medium 769 M Si
whisper-large 1550 M Si
whisper-large-v2 1550 M Si

Esploriamo come puoi utilizzare i modelli Whisper in SageMaker JumpStart.

Confronto tra WER e latenza dei modelli Whisper di OpenAI Foundation

Il tasso di errore di parola (WER) per i diversi modelli Whisper di OpenAI basati sul test-clean di LibriSpeech è mostrato nella seguente tabella. Il WER è una metrica comune per valutare le prestazioni di un sistema di riconoscimento vocale o di traduzione automatica. Misura la differenza tra il testo di riferimento (la verità fondamentale o la trascrizione corretta) e l’output di un sistema di riconoscimento vocale in termini di numero di errori, inclusi sostituzioni, inserimenti ed eliminazioni necessari per trasformare l’output del sistema di riconoscimento vocale nel testo di riferimento. Questi numeri sono stati presi dal sito web di Hugging Face.

Modello WER (percentuale)
whisper-tiny 7.54
whisper-base 5.08
whisper-small 3.43
whisper-medium 2.9
whisper-large 3
whisper-large-v2 3

Per questo articolo, abbiamo preso il file audio di seguito e confrontato la latenza del riconoscimento vocale tra i diversi modelli Whisper. La latenza è il tempo trascorso dal momento in cui un utente invia una richiesta fino al momento in cui l’applicazione indica che la richiesta è stata completata. I numeri nella seguente tabella rappresentano la latenza media per un totale di 100 richieste utilizzando lo stesso file audio con il modello ospitato sull’istanza ml.g5.2xlarge.

Modello Latenza media (s) Output del modello
whisper-tiny 0.43 Stiamo vivendo un periodo molto eccitante con l’apprendimento automatico. La velocità dello sviluppo dei modelli di machine learning aumenterà davvero. Ma non si arriverà a quel punto che abbiamo raggiunto nei prossimi anni, se non rendiamo effettivamente questi modelli accessibili a tutti.
whisper-base 0.49 Stiamo vivendo un periodo molto eccitante con l’apprendimento automatico. La velocità dello sviluppo dei modelli di machine learning aumenterà davvero. Ma non si arriverà a quel punto che abbiamo raggiunto nei prossimi anni, se non rendiamo effettivamente questi modelli accessibili a tutti.
whisper-small 0.84 Stiamo vivendo un periodo molto eccitante con l’apprendimento automatico. La velocità dello sviluppo dei modelli di machine learning aumenterà davvero. Ma non si arriverà a quel punto che vogliamo nei prossimi anni, se non rendiamo effettivamente questi modelli accessibili a tutti.
whisper-medium 1.5 Stiamo vivendo un periodo molto eccitante con l’apprendimento automatico. La velocità dello sviluppo dei modelli di machine learning aumenterà davvero. Ma non si arriverà a quel punto che vogliamo nei prossimi anni, se non rendiamo effettivamente questi modelli accessibili a tutti.
whisper-large 1.96 Stiamo vivendo un periodo molto eccitante con l’apprendimento automatico. La velocità dello sviluppo dei modelli di machine learning aumenterà davvero. Ma non si arriverà a quel punto che vogliamo nei prossimi anni, se non rendiamo effettivamente questi modelli accessibili a tutti.
whisper-large-v2 1.98 Stiamo vivendo un periodo molto eccitante con l’apprendimento automatico. La velocità dello sviluppo dei modelli di machine learning aumenterà davvero. Ma non si arriverà a quel punto che vogliamo nei prossimi anni, se non rendiamo effettivamente questi modelli accessibili a tutti.

Soluzione passo passo

Puoi distribuire modelli Whisper utilizzando la console Amazon SageMaker o utilizzando un notebook Amazon SageMaker. In questo post, ti mostreremo come distribuire l’API Whisper utilizzando la console di SageMaker Studio o un notebook SageMaker e poi utilizzare il modello distribuito per il riconoscimento vocale e la traduzione del linguaggio. Il codice utilizzato in questo post può essere trovato in questo notebook GitHub.

Esaminiamo ogni passo nel dettaglio.

Distribuisci Whisper dalla console

  1. Per iniziare con SageMaker JumpStart, apri la console di Amazon SageMaker Studio e vai alla pagina di avvio di SageMaker JumpStart e seleziona Inizia con JumpStart.
  2. Per scegliere un modello Whisper, puoi utilizzare le schede nella parte superiore o utilizzare la casella di ricerca nella parte superiore a destra come mostrato nella seguente schermata. Per questo esempio, utilizza la casella di ricerca in alto a destra e inserisci Whisper, quindi seleziona il modello Whisper appropriato dal menu a tendina.
  3. Dopo aver selezionato il modello Whisper, puoi utilizzare la console per distribuire il modello. Puoi selezionare un’istanza per la distribuzione o utilizzare quella predefinita.

Distribuisci il modello di base da un notebook Sagemaker

I passaggi per prima distribuire e poi utilizzare il modello distribuito per risolvere diversi compiti sono:

  1. Configurazione
  2. Seleziona un modello
  3. Recupera gli artefatti e distribuisci un endpoint
  4. Utilizza il modello distribuito per ASR
  5. Utilizza il modello distribuito per la traduzione del linguaggio
  6. Pulisci l’endpoint

Configurazione

Questo notebook è stato testato nelle istanze ml.t3.medium in SageMaker Studio con il kernel Python 3 (data science) e in un’istanza di notebook Amazon SageMaker con il kernel conda_python3.

%pip install --upgrade sagemaker --quiet

Seleziona un modello pre-addestrato

Configura una sessione SageMaker utilizzando Boto3, quindi seleziona l’ID del modello che desideri distribuire.

model_id = "huggingface-asr-whisper-large-v2"

Recupera gli artefatti e distribuisci un endpoint

Utilizzando SageMaker, puoi eseguire l’inferenza sul modello pre-addestrato, anche senza effettuare prima il fine-tuning su un nuovo dataset. Per ospitare il modello pre-addestrato, crea un’istanza di sagemaker.model.Model e distribuiscilo. Il seguente codice utilizza l’istanza predefinita ml.g5.2xlarge per l’endpoint di inferenza di un modello whisper-large-v2. Puoi distribuire il modello su altri tipi di istanza passando instance_type alla classe JumpStartModel. La distribuzione potrebbe richiedere alcuni minuti.

#Deploying the modelfrom sagemaker.jumpstart.model import JumpStartModelfrom sagemaker.serializers import JSONSerializermy_model = JumpStartModel(model_id=dropdown.value)predictor = my_model.deploy()

Riconoscimento automatico della voce

Successivamente, leggi il file audio di esempio, sample1.wav, da una posizione di Amazon Simple Storage Service (Amazon S3) pubblica di SageMaker Jumpstart e passalo al predittore per il riconoscimento vocale. Puoi sostituire questo file di esempio con qualsiasi altro file audio di esempio, ma assicurati che il file .wav abbia un campionamento a 16 kHz perché richiesto dai modelli di riconoscimento vocale automatico. Il file audio di input deve essere inferiore a 30 secondi.

from scipy.io.wavfile import readimport jsonimport boto3from sagemaker.jumpstart import utils# I file wav devono essere campionati a 16kHz (questo è richiesto dai modelli di riconoscimento automatico del parlato), assicurati quindi di ricampionarli se necessario. Il file audio di input deve essere inferiore a 30 secondi.s3_bucket = utils.get_jumpstart_content_bucket(boto3.Session().region_name)key_prefix = "training-datasets/asr_notebook_data"input_audio_file_name = "sample1.wav"s3_client = boto3.client("s3")s3_client.download_file(s3_bucket, f"{key_prefix}/{input_audio_file_name }", input_audio_file_name )with open(input_audio_file_name, "rb") as file:    wav_file_read = file.read()# Se ricevi un errore del client (413) controlla la dimensione del payload per il punto di accesso. I payload per le richieste di chiamate al punto di accesso SageMaker sono limitati a circa 5 MBresponse = predictor.predict(wav_file_read)print(response["text"])

Questo modello supporta molti parametri durante l’elaborazione delle previsioni. Essi includono:

  • max_length: Il modello genera testo fino alla lunghezza dell’output. Se specificato, deve essere un numero intero positivo.
  • lingua e task: Specificare qui la lingua e il task di output. Il modello supporta il task di trascrizione o traduzione.
  • max_new_tokens: Il numero massimo di token da generare.
  • num_return_sequences: Il numero di sequenze di output restituite. Se specificato, deve essere un numero intero positivo.
  • num_beams: Il numero di beam utilizzati nella ricerca greedy. Se specificato, deve essere un numero intero maggiore o uguale a num_return_sequences.
  • no_repeat_ngram_size: Il modello garantisce che una sequenza di parole di no_repeat_ngram_size non sia ripetuta nella sequenza di output. Se specificato, deve essere un numero intero positivo maggiore di 1.
  • temperatura: Questo controlla la casualità nell’output. Temperature più alte generano una sequenza di output con parole a bassa probabilità e temperature più basse generano una sequenza di output con parole ad alta probabilità. Se la temperatura si avvicina a 0, si ottiene una decodifica greedy. Se specificato, deve essere un numero float positivo.
  • early_stopping: Se True, la generazione di testo si conclude quando tutte le ipotesi beam raggiungono il token di fine frase. Se specificato, deve essere un valore booleano.
  • do_sample: Se True, campiona la parola successiva per la probabilità. Se specificato, deve essere un valore booleano.
  • top_k: In ogni passo di generazione del testo, campiona solo le top_k parole più probabili. Se specificato, deve essere un numero intero positivo.
  • top_p: In ogni passo di generazione del testo, campiona dall’insieme più piccolo possibile di parole con probabilità cumulativa top_p. Se specificato, deve essere un numero float compreso tra 0 e 1.

Puoi specificare qualsiasi sottoinsieme dei parametri precedenti durante l’invocazione di un punto di accesso. Di seguito, mostriamo un esempio di come invocare un punto di accesso con questi argomenti.

Traduzione di lingue

Per mostrare l’esempio di traduzione di lingue utilizzando i modelli Whisper, utilizza il seguente file audio in francese e traducilo in inglese. Il file deve essere campionato a 16 kHz (come richiesto dai modelli ASR), quindi assicurati di ricampionare i file se necessario e assicurati che i tuoi campioni non superino i 30 secondi.

  1. Scarica il file sample_french1.wav da SageMaker JumpStart da una posizione S3 pubblica in modo che possa essere passato nel payload per la traduzione tramite il modello Whisper.

    input_audio_file_name = "sample_french1.wav"s3_client.download_file(s3_bucket, f"{key_prefix}/{input_audio_file_name }", input_audio_file_name )
  2. Imposta il parametro del task come translate e la lingua come french per forzare il modello Whisper a eseguire la traduzione del parlato.

    with open(input_audio_file_name, "rb") as file:    wav_file_read = file.read()payload = {"audio_input": wav_file_read.hex(), "language": "french", "task": "translate"}predictor.serializer = JSONSerializer()predictor.content_type = "application/json"
  3. Utilizza il predictor per prevedere la traduzione della lingua. Se ricevi un errore del client (errore 413), controlla la dimensione del payload per il punto di accesso. I payload per le richieste di chiamate al punto di accesso SageMaker sono limitati a circa 5 MB.

    response = predictor.predict(payload)print(response["text"])
  4. L’output di testo tradotto in inglese dal file audio in francese è il seguente:

    [' Benvenuti in JPBSystem. Abbiamo più di 150 dipendenti e il 90% delle vendite. Abbiamo sviluppato circa 15 brevetti. ']

Pulizia

Dopo aver testato il punto di arrivo, elimina il punto di arrivo di inferenza di SageMaker e cancella il modello per evitare addebiti.

Conclusioni

In questo post, ti abbiamo mostrato come testare e utilizzare i modelli OpenAI Whisper per costruire interessanti applicazioni utilizzando Amazon SageMaker. Prova oggi stesso il modello di base in SageMaker e facci sapere cosa ne pensi!

Queste linee guida hanno solo scopo informativo. Dovresti comunque effettuare una valutazione indipendente e prendere misure per garantire il rispetto delle tue specifiche pratiche e standard di controllo della qualità, nonché delle regole, leggi, normative, licenze e termini di utilizzo locali applicabili a te, al tuo contenuto e al modello di terze parti menzionato in queste linee guida. AWS non ha alcun controllo o autorità sul modello di terze parti menzionato in queste linee guida e non fornisce alcuna rappresentazione o garanzia che esso sia sicuro, privo di virus, operativo o compatibile con il tuo ambiente e gli standard di produzione. AWS non fornisce alcuna rappresentazione, garanzia o garanzia che qualsiasi informazione contenuta in queste linee guida comporterà un determinato risultato o esito.