Ottimizzare i file audio per Cloud Speech-to-Text

Questo tutorial mostra come eseguire un controllo preflight sui file audio che stai preparando per l'utilizzo con Cloud Speech-to-Text. Fornisce informazioni di base sui formati dei file audio, descrive come ottimizzare i file audio per l'utilizzo con Cloud STT e come diagnosticare gli errori. Il tutorial è progettato per professionisti non tecnici dei media e dell'intrattenimento e per professionisti della post-produzione. Non richiede una conoscenza approfondita diGoogle Cloud, ma solo una conoscenza di base di come utilizzare lo strumento a riga di comando gcloud con i file archiviati sia localmente sia in un bucket Cloud Storage.

Obiettivi

  • Installa lo strumento FFMPEG.
  • Scarica i file multimediali di esempio.
  • Riprodurre file audio e video utilizzando FFMPEG.
  • Estrai, transcodifica e converti le proprietà dei file audio utilizzando FFMPEG.
  • Esegui Cloud STT su una serie di file di esempio che contengono dialoghi.

Costi

Questo tutorial utilizza i seguenti componenti fatturabili di Google Cloud:

Puoi utilizzare il Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.

Prima di iniziare

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment di workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.

  5. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the Google Cloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init

In questo tutorial utilizzerai Cloud Shell per eseguire le procedure, ad esempio la copia dei dati da un bucket Cloud Storage alla sessione di Cloud Shell. Cloud Shell è un ambiente shell con Google Cloud CLI già installata. In questo tutorial utilizzerai gcloud CLI per molti passaggi. Inoltre, installi il software e i file audio di esempio sulla tua macchina locale ed esegui questi stessi esercizi dal tuo terminale, come descritto nella sezione Esecuzione degli esempi del tutorial in un terminale locale più avanti.

Panoramica

In questo tutorial utilizzerai FFMPEG, uno strumento open source per la registrazione, la conversione e lo streaming di audio e video. Il tutorial fornisce ulteriori informazioni su questo strumento più avanti.

Informazioni sugli attributi dei file audio

Questa sezione descrive i tipi di file audio, le frequenze di campionamento, le profondità di bit e i supporti di registrazione tipici dei flussi di lavoro di produzione e post-produzione dei contenuti multimediali.

Per ottenere i migliori risultati da Cloud STT, devi assicurarti che i file utilizzati per la trascrizione siano file monofonici (mono) che soddisfano determinate specifiche minime, come descritto di seguito. Se i file non soddisfano le specifiche, potresti dover generare file modificati. Ad esempio, potresti dover:

  • Estrarre i dati audio da un file video.
  • Estrai una singola traccia monofonica da un file audio multitraccia.
  • Esegui la transcodifica da un codec audio a un altro più adatto per Cloud STT.

Frequenza di campionamento (intervallo di frequenza)

La frequenza di campionamento determina la gamma di frequenze del file audio. Si basa sul numero di campioni al secondo che costituiscono il file audio. In genere, la frequenza riproducibile più alta di un file audio digitale equivale alla metà della frequenza di campionamento. Ad esempio, la frequenza più alta che può essere riprodotta da un file audio a 44,1 kHz è di circa 22 kHz, che si trova all'estremità superiore o oltre l'intervallo di risposta in frequenza dell'udito di un ascoltatore tipico.

Le frequenze di campionamento nella telefonia e nelle telecomunicazioni tendono a essere comprese tra 8 kHz e 16 kHz. Questo tutorial è incentrato sui formati specifici del settore dei media e dell'intrattenimento, che in genere sono superiori a 16 kHz. Per saperne di più sulla telefonia e su altre applicazioni audio, consulta Trascrizione dell'audio telefonico con modelli avanzati.

Consigliamo una frequenza di campionamento di almeno 16 kHz nei file audio che utilizzi per la trascrizione con Cloud STT. Le frequenze di campionamento presenti nei file audio sono in genere 16 kHz, 32 kHz, 44, 1 kHz e 48 kHz. Poiché l'intelligibilità è fortemente influenzata dall'intervallo di frequenza, in particolare nelle frequenze più alte, una frequenza di campionamento inferiore a 16 kHz genera un file audio con poche o nessuna informazione superiore a 8 kHz. Ciò può impedire a Cloud STT di trascrivere correttamente l'audio parlato. L'intelligibilità del parlato richiede informazioni nell'intervallo compreso tra 2 kHz e 4 kHz, anche se le armoniche (multipli) di queste frequenze nell'intervallo più alto sono importanti anche per preservare l'intelligibilità del parlato. Pertanto, è buona norma mantenere la frequenza di campionamento a un minimo di 16 kHz.

È possibile eseguire la conversione da una frequenza di campionamento a un'altra. Tuttavia, l'upsampling dell'audio non offre alcun vantaggio, perché le informazioni sull'intervallo di frequenza sono limitate dalla frequenza di campionamento inferiore e non possono essere recuperate mediante la conversione in una frequenza di campionamento superiore. Ciò significa che l'upsampling da 8 kHz a 44,1 kHz limiterebbe la gamma di frequenze riproducibili alla metà della frequenza di campionamento inferiore, ovvero circa 4 kHz. In questo tutorial, ascolterai file audio registrati con varie frequenze di campionamento e profondità di bit, in modo da poter sentire la differenza.

Profondità di bit (gamma dinamica)

La profondità di bit del file audio determina l'intervallo dai suoni più silenziosi a quelli più forti, nonché il rapporto segnale/rumore del file. La gamma dinamica ha un effetto minore sulla qualità della trascrizione rispetto alla risposta in frequenza, ma profondità di bit pari o inferiori a 8 bit possono causare un rumore di quantizzazione eccessivo nella traccia audio, rendendo difficile una trascrizione accurata. (Gli errori di quantizzazione sono errori di arrotondamento tra il segnale di input analogico e la mappatura del valore di output digitale di quel segnale. Gli errori causano una distorsione udibile che influisce direttamente sulla fedeltà del suono.) La profondità di bit consigliata dei file per l'analisi con Cloud STT è di 16 bit o superiore. Come per la frequenza di campionamento, non c'è alcun vantaggio nell'eseguire l'up-conversion della profondità di bit da 8 a 16 bit, perché le informazioni sulla gamma dinamica sono limitate al formato originale a 8 bit.

Mezzo di registrazione

Anche il supporto di registrazione originale può influire sulla qualità del file audio. Ad esempio, i contenuti audio registrati originariamente su nastro magnetico potrebbero avere un fruscio di sottofondo incorporato nel file. In alcuni casi, potrebbe essere necessario pre-elaborare l'audio rumoroso per ottenere risultati migliori nel processo di trascrizione quando utilizzi Cloud STT. Il trattamento delle registrazioni rumorose e l'interferenza del rumore di fondo esulano dall'ambito di questo tutorial. Per saperne di più, consulta le best practice nella documentazione di Cloud STT.

Introduzione a FFMPEG

In questo tutorial utilizzerai FFMPEG per lavorare con i file audio. Il set di strumenti FFMPEG offre un'ampia gamma di funzioni, tra cui:

  • Riproduzione di un file audio o video.
  • Convertire i file audio in uno dei codec riconosciuti da Cloud STT.
  • Conversione delle frequenze di campionamento e delle velocità in bit dei file audio in configurazioni ottimali per l'analisi da parte di Cloud STT.
  • Estrazione di singole tracce o stream audio da un file di stream di trasporto o da un file video.
  • Suddivisione dei file stereo in due file monofonici.
  • Suddivisione dei file audio 5.1 in sei file monofonici.
  • Applicazione di equalizzazione e filtri per migliorare la chiarezza dell'audio.

Puoi anche utilizzare la funzione ffprobe di FFMPEG per visualizzare i metadati associati a un file multimediale. Questo è importante quando vuoi diagnosticare problemi relativi ai tipi e ai formati di file per l'analisi del machine learning.

Codec riconosciuti da Cloud STT

Sebbene Cloud STT riconosca diversi formati file audio, potrebbe non leggere o analizzare correttamente determinati codec. Il tutorial mostra come verificare che i contenuti siano in uno dei formati file supportati.

Nel tutorial, leggerai le informazioni dei metadati per rivelare e correggere potenziali problemi prima di utilizzare Cloud STT. Gli stessi strumenti ti consentono di convertire il file in un formato supportato se rilevi un'incompatibilità.

Cloud STT riconosce i seguenti codec:

  • FLAC: Free Lossless Audio Codec
  • LINEAR16: un formato di modulazione a codice di impulsi (PCM) non compresso utilizzato nei container WAV, AIFF, AU e RAW
  • MULAW: un codec PCM progettato per le telecomunicazioni negli Stati Uniti e in Giappone
  • AMR: un codec multi-rate adattivo progettato per la voce
  • AMR_WB: una variante a banda larga di AMR con una larghezza di banda doppia rispetto ad AMR
  • OGG_OPUS: un codec con perdita di dati progettato per applicazioni a bassa latenza
  • SPEEX_WITH_HEADER_BYTE: un codec progettato per applicazioni Voice over IP (VoIP)

È importante capire che i codec e i formati file non sono la stessa cosa. L'estensione del nome file non indica necessariamente che il codec utilizzato per creare il file può essere letto da Cloud STT.

Questo tutorial si concentra sui codec FLAC e LINEAR16, perché sono presenti di frequente negli ambienti dei workflow multimediali. Entrambi sono formati lossless.

Se utilizzi file WAV (che sono in formato PCM lineare non compresso) con Cloud STT, i file devono avere una profondità massima di 16 bit ed essere codificati in un formato non in rappresentazione in virgola mobile. L'estensione del nome file .wav non garantisce che il file possa essere letto da Cloud STT. La sezione Ottimizza i file audio per l'analisi di questo tutorial fornisce un esempio di come convertire il file dalla profondità di bit in virgola mobile a quella intera (con segno) per trascrivere il file all'interno di Cloud STT.

Inizializza l'ambiente

Prima di eseguire le attività di questo tutorial, devi inizializzare l'ambiente installando FFMPEG, impostando alcune variabili di ambiente e scaricando i file audio. Utilizzerai file multimediali archiviati sia in un'istanza Cloud Shell sia in un bucket Cloud Storage. L'utilizzo di origini diverse ti consente di lavorare con diverse funzionalità di Cloud STT.

In questa sezione installerai FFMPEG e configurerai le variabili di ambiente che puntano alle posizioni di archiviazione dei dati di esempio nello spazio di archiviazione dell'istanza di Cloud Shell e in un bucket Cloud Storage. I file multimediali sono gli stessi in entrambe le posizioni e alcuni degli esempi in questo tutorial accedono ai file sia da Cloud Shell sia dal bucket Cloud Storage. Puoi installare FFMPEG sulla tua macchina locale ed eseguire gli stessi esercizi, come descritto più avanti nella sezione Esecuzione degli esempi del tutorial in un terminale locale.

  1. Nella console Google Cloud , attiva Cloud Shell.

    Attiva Cloud Shell

  2. In Cloud Shell, installa la versione corrente di FFMPEG:

    sudo apt update
    sudo apt install ffmpeg
    
  3. Verifica che FFMPEG sia installato:

    ffmpeg -version
    

    Se viene visualizzato un numero di versione, l'installazione è andata a buon fine.

  4. Crea una directory per i file di progetto:

    mkdir project_files
    
  5. Crea una directory per i file di output che creerai in un passaggio successivo:

    mkdir output
    
  6. Scarica i file audio di esempio:

    gcloud storage cp gs://cloud-samples-data/speech/project_files/*.* ~/project_files/
    
  7. Crea una variabile di ambiente per il nome del bucket Cloud Storage:

    export GCS_BUCKET_PATH=gs://cloud-samples-data/speech/project_files
    
  8. Crea una variabile di ambiente per il percorso della directory dell'istanza Cloud Shell che punta ai file audio di esempio scaricati:

    export PROJECT_FILES=~/project_files
    

Esamina i metadati nei file multimediali

Quando analizzi file audio o video con Cloud STT, devi conoscere i dettagli dei metadati del file. In questo modo puoi identificare incoerenze o parametri incompatibili che potrebbero causare problemi.

In questa sezione, utilizzerai il comando ffprobe in FFMPEG per esaminare i metadati di più file multimediali e comprendere le specifiche di un file.

  1. In Cloud Shell, visualizza i metadati del file HumptyDumptySample4416.flac:

    ffprobe $PROJECT_FILES/HumptyDumptySample4416.flac
    

    L'output è il seguente:

    Input #0, flac, from 'project_files/HumptyDumptySample4416.flac':
      Duration: 00:00:26.28, start: 0.000000, bitrate: 283 kb/s
        Stream #0:0: Audio: flac, 44100 Hz, mono, s16
    

    Questo output indica i seguenti metadati relativi al file:

    • La durata del file audio è di 26,28 secondi.
    • La velocità in bit è di 283 KB al secondo.
    • Il formato del codec è FLAC.
    • La frequenza di campionamento è 44,1 kHz.
    • Il file è un file mono a canale singolo.
    • La profondità di bit è di 16 bit (numero intero con segno).
  2. Mostra i metadati del file HumptyDumptySampleStereo.flac:

    ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flac
    

    L'output è il seguente:

    Input #0, flac, from 'project_files/HumptyDumptySampleStereo.flac':
      Duration: 00:00:26.28, start: 0.000000, bitrate: 378 kb/s
        Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
    

    Le differenze tra questo file e il precedente sono che si tratta di un file stereo con un bitrate più elevato (378 kB/secondo anziché 283 kB/secondo) perché contiene la riproduzione a due canali anziché una traccia mono. Tutti gli altri valori sono gli stessi.

    Devi controllare il numero di canali in un file audio che vuoi elaborare utilizzando Cloud STT; i file audio devono avere un solo canale audio. Per trascrivere più canali audio all'interno dello stesso file, ti consigliamo di creare uno script dei comandi come descritto nella sezione Ottimizza i file audio per l'analisi più avanti.

  3. Visualizza i metadati di un file di mix audio 5.1:

    ffprobe $PROJECT_FILES/Alice_51_sample_mix.aif
    

    L'output è il seguente:

    Duration: 00:00:58.27, bitrate: 4610 kb/s
        Stream #0:0: Audio: pcm_s16be, 48000 Hz, 5.1, s16, 4608 kb/s
    

    Poiché questo file ha un formato diverso rispetto ai file mono o stereo, vengono visualizzate informazioni aggiuntive. In questo caso, l'audio è in formato PCM lineare, registrato con una frequenza di campionamento di 44,1 kHz e una velocità in bit di 16 bit (signed integer, little-endian).

    Osserva la designazione 5.1. La velocità dati di 4608 kbit/s in questo file è significativamente superiore a quella degli esempi precedenti, perché il file audio contiene 6 tracce audio.

    Più avanti in questo tutorial, vedrai come questo file causa errori quando provi a trascriverlo utilizzando Cloud STT. Ancora più importante, vedrai come ottimizzare il file per utilizzarlo con Cloud STT senza errori.

Ottimizza i file audio per l'analisi

Come accennato in precedenza, quando utilizzi Cloud STT, i file audio devono essere file mono a canale singolo per evitare errori nel processo di trascrizione. La tabella seguente mostra i formati audio comuni e il processo di conversione dei file mono per l'elaborazione.

Formato audio attuale Processo di conversione Formato audio di output
Mono Nessuna estrazione necessaria FLAC o LINEAR16
Stereo Suddividi in 2 file mono o esegui il downmix in un file mono FLAC o LINEAR16
Multitraccia (5.1) Suddividi in 6 file mono FLAC o LINEAR16
Audio/video multi-stream Suddividi in file mono separati FLAC o LINEAR16

Per elaborare file con più tracce audio, estrai le tracce mono dal file stereo utilizzando FFMPEG o altri strumenti di editing audio. In alternativa, puoi automatizzare il processo come descritto nella sezione Trascrizione di audio con più canali della documentazione di Cloud STT. Per questo tutorial, esplorerai l'opzione di utilizzare FFMPEG per estrarre singole tracce mono dal file stereo.

Come mostrato nella sezione precedente, puoi utilizzare il comando ffprobe per determinare il numero di canali audio contenuti in un file, quindi utilizzare il comando ffmpeg per estrarre o convertire il file in un formato mono, se necessario.

Visualizza l'anteprima di un errore basato su un formato non valido

Per vedere in che modo un formato errato influisce sulla trascrizione, puoi provare a eseguire Cloud STT su un file che non è in formato mono.

  1. In Cloud Shell, esegui Cloud STT sul file HumptyDumptySampleStereo.flac:

    gcloud ml speech recognize $PROJECT_FILES/HumptyDumptySampleStereo.flac \
        --language-code='en-US'
    

    L'output è il seguente:

    ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Invalid audio channel count
    

    Sebbene il formato del codec, la frequenza di campionamento e la profondità di bit del file siano corretti, il descrittore stereo indica che nel file audio sono presenti due tracce. Pertanto, l'esecuzione di Cloud STT causa un errore Invalid audio channel count.

  2. Esegui il comando ffprobe sul file:

    ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flac
    

    L'output è il seguente:

    Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
    

    Questo rivela che l'errore di Cloud STT è causato dal tentativo di elaborare un file stereo

Per informazioni su come gestire i file stereo tramite script, consulta Trascrizione di audio con più canali nella documentazione di Cloud STT.

Suddividi un file stereo in più file FLAC mono

Un esempio di come evitare l'errore di più tracce è estrarre due tracce mono da un file audio stereo. Le tracce risultanti sono in formato FLAC e vengono scritte nella directory di output. Quando estrai due file mono da un file stereo, è consigliabile creare nomi per i file estratti che indichino la posizione del canale del file originale. Ad esempio, nella procedura seguente, il canale sinistro viene designato utilizzando il suffisso FL e il canale destro utilizzando il suffisso FR.

Se il campione audio da trascrivere è presente in entrambi i canali, per la trascrizione viene utilizzato un solo canale. Tuttavia, se vengono registrati speaker diversi su canali diversi, ti consigliamo di trascrivere i canali separatamente. Cloud STT è in grado di riconoscere più voci all'interno di una singola registrazione. Tuttavia, isolare ogni voce su canali separati si traduce in livelli di confidenza più elevati nella trascrizione. (Il valore di affidabilità è anche noto come tasso di errore delle parole o WER, nel riconoscimento vocale). Per saperne di più sull'utilizzo di più voci nella stessa registrazione, consulta Separazione di diversi interlocutori in una registrazione audio nella documentazione di Cloud STT.

  • In Cloud Shell, suddividi il file stereo HumptyDumptySampleStereo.flac in due file mono:

    ffmpeg -i $PROJECT_FILES/HumptyDumptySampleStereo.flac -filter_complex "[0:a]channelsplit=channel_layout=stereo[left][right]" -map "[left]" output/HumptyDumptySample_FL.flac -map "[right]" output/HumptyDumptySample_FR.flac
    

    L'output è il seguente, che mostra i file mono HumptyDumptySample_FL.flac (canale anteriore sinistro) e HumptyDumptySample_FR.flac (canale anteriore destro).

    Output #0, flac, to 'HumptyDumptySample_FL.flac':
      Input #0, flac, from 'project_files/HumptyDumptySampleStereo.flac':
      Duration: 00:00:26.28, start: 0.000000, bitrate: 378 kb/s
        Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
    Stream mapping:
      Stream #0:0 (flac) -> channelsplit
      channelsplit:FL -> Stream #0:0 (flac)
      channelsplit:FR -> Stream #1:0 (flac)
    (...)
    Output #0, flac, to 'HumptyDumptySample_FL.flac':
    (...)
    Stream #0:0: Audio: flac, 44100 Hz, 1 channels (FL), s16, 128 kb/s
    (...)
    Output #1, flac, to 'HumptyDumptySample_FR.flac':
    (...)
    Stream #1:0: Audio: flac, 44100 Hz, 1 channels (FR), s16, 128 kb/s
    (...)
    size=918kB time=00:00:26.27 bitrate= 286.2kbits/s speed= 357x
    video:0kB audio:1820kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
    

    Questo file è ora ottimizzato per Cloud STT.

Suddividi un file audio 5.1 in più file mono

Un altro esempio di come ottimizzare i file audio è suddividere i file audio 5.1 in singoli file FLAC mono. Quando si fa riferimento ai canali in un mix multicanale, ad esempio un mix 5.1, le designazioni dei nomi file sono in genere diverse rispetto ai file stereo o mono. Il file del canale sinistro è in genere designato come FL per il canale anteriore sinistro, mentre il canale destro è designato come FR per il canale anteriore destro. I canali rimanenti di un mix 5.1 sono indicati qui come FC per il centro anteriore, LFE per gli effetti a bassa frequenza, BL per il retro sinistro (noto anche come surround sinistro) e BR per il retro destro (noto anche come surround destro). Non si tratta di denominazioni standard, ma di una pratica convenzionale per identificare l'origine di un file audio.

In genere, nei file audio multicanale per film e televisione, i dialoghi principali vengono trasmessi dal canale centrale anteriore. In genere, questo è il file da scegliere quando utilizzi Cloud STT, perché di solito contiene la maggior parte dei dialoghi del mix.

In un ambiente di post-produzione, gli elementi principali di dialoghi, musica ed effetti sono suddivisi in gruppi chiamati stem, in modo che tutti i dialoghi di un mix siano separati dalla musica e dagli effetti fino al mix finale. Poiché lo stem dei dialoghi è composto solo da dialoghi, Cloud STT offre risultati migliori quando trascrive gli stem anziché tentare di estrarre il canale centrale da un mix finale. Questo perché un canale centrale estratto potrebbe essere mescolato con suoni non di dialogo, compromettendo l'intelligibilità.

  1. In Cloud Shell, suddividi il file Alice_51_sample_mix.aif in file FLAC, specificando i nomi dei file di output per ciascun canale:

    ffmpeg -i $PROJECT_FILES/Alice_51_sample_mix.aif -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]" -map "[FL]" output/Alice_FL.flac -map "[FR]" output/Alice_FR.flac -map "[FC]" output/Alice_FC.flac -map "[LFE]" output/Alice_LFE.flac -map "[BL]" output/Alice_BL.flac -map "[BR]" output/Alice_BR.flac
    

    L'output è il seguente:

    Duration: 00:00:55.00, bitrate: 4235 kb/s
      Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 5.1, s16, 4233 kb/s
    Stream mapping:
      Stream #0:0 (pcm_s16le) -> channelsplit
      channelsplit:FL -> Stream #0:0 (flac)
      channelsplit:FR -> Stream #1:0 (flac)
      channelsplit:FC -> Stream #2:0 (flac)
      channelsplit:LFE -> Stream #3:0 (flac)
      channelsplit:BL -> Stream #4:0 (flac)
      channelsplit:BR -> Stream #5:0 (flac)
    Press [q] to stop, [?] for help
    Output #0, flac, to 'Alice_FL.flac':
    (...)
        Stream #0:0: Audio: flac, 44100 Hz, 1 channels (FL), s16, 128 kb/s
    (...)
    Output #1, flac, to 'output/Alice_FR.flac':
    (...)
        Stream #1:0: Audio: flac, 44100 Hz, 1 channels (FR), s16, 128 kb/s
    (...)
    Output #2, flac, to 'output/Alice_FC.flac':
    (...)
        Stream #2:0: Audio: flac, 44100 Hz, mono, s16, 128 kb/s
    (...)
    Output #3, flac, to 'output/Alice_LFE.flac':
    (...)
        Stream #3:0: Audio: flac, 44100 Hz, 1 channels (LFE), s16, 128 kb/s
    (...)
    Output #4, flac, to 'output/Alice_BL.flac':
    (...)
        Stream #4:0: Audio: flac, 44100 Hz, 1 channels (BL), s16, 128 kb/s
    (...)
    Output #5, flac, to 'output/Alice_BR.flac':
    (...)
        Stream #5:0: Audio: flac, 44100 Hz, 1 channels (BR), s16, 128 kb/s
    (...)
    
  2. Fai clic sul seguente file per ascoltarlo. Questo file si trova nel bucket Cloud Storage e, quando fai clic sul nome, viene riprodotto in una nuova scheda del browser.

    Alice_mono_downmix.flac
    
  3. Ascolta il file FC (file del canale solo centrale) appena creato. (La finestra di dialogo si apre dopo alcuni secondi di silenzio).

    Alice_FC.flac
    

    Nota la differenza di nitidezza rispetto al file precedente. Questa traccia si basa solo sulla parte dei dialoghi del mix.

Testa la qualità del file audio

Prima di convertire i file multimediali utilizzando Cloud STT, è consigliabile ascoltarli per determinare se presentano anomalie nella qualità audio che potrebbero impedire agli strumenti di ML di fornire risultati accurati. In questa sezione, riproduci i file nel browser facendo clic sui nomi dei file. (Ti consigliamo di utilizzare cuffie o altoparlanti con un'ampia gamma dinamica.)

Ascolta l'audio di un file video

  1. Fai clic sul seguente file per riprodurlo:

    HumptyDumptySample4416.flac
    

    Questo file ha una frequenza di 44,1 kHz e una profondità di bit di 16 bit. Nota la fedeltà chiara e non distorta e l'intelligibilità di questo file. Questo è un buon candidato per la trascrizione utilizzando Cloud STT.

  2. Riproduci il seguente file video di esempio in formato 5.1 per ascoltare un mix surround con audio non di dialogo in tutti i canali, ad eccezione del canale centrale:

    sample_51_mix_movie.mp4
    

    Il file è progettato per la riproduzione su un sistema audio 5.1. Se utilizzi solo cuffie o un sistema a due canali, non tutti i canali potrebbero essere udibili durante la riproduzione. (Per ascoltare tutti e sei i canali, la riproduzione deve essere decodificata su un sistema 5.1 oppure devi creare un downmix stereo a due canali.)

    In teoria, dovresti utilizzare il canale solo per i dialoghi per Cloud STT. Il file di esempio contiene audio non di dialogo in cinque canali e dialogo in un canale. Nella sezione Ottimizza i file audio per l'analisi più avanti, imparerai a estrarre i sei canali audio mono individuali codificati nel file 5.1 per ascoltare ogni traccia. In questo modo puoi isolare il canale solo per i dialoghi (in genere il canale centrale o anteriore-centrale) dai canali non per i dialoghi per migliorare la capacità di Cloud STT di trascrivere il file.

Testa lo stesso file con frequenze di campionamento diverse

La tabella seguente elenca più versioni dello stesso file audio da ascoltare, ciascuna con una profondità di bit e una frequenza di campionamento diverse.

File audio Frequenza di campionamento/profondità di bit
HumptyDumptySample4416.flac PCM lineare a 44,1 kHz/16 bit
HumptyDumptySample2216.flac PCM lineare a 22 kHz/16 bit
HumptyDumptySample1616.flac PCM lineare a 16 kHz/16 bit
HumptyDumptySample1116.flac PCM lineare a 11 kHz/16 bit
HumptyDumptySample0808.flac PCM lineare a 8 kHz/8 bit
HumptyDumptyUpSample4416.flac 44,1 kHz (upsampling)/PCM lineare a 16 bit
HumptyDumptySample4408.flac PCM lineare a 44,1 kHz/8 bit
HumptyDumptySample4408to16.flac PCM lineare a 44,1 kHz/16 bit (con up-conversion)
  1. Per ogni file nella tabella precedente, fai clic sul nome file per ascoltarlo. (Il lettore audio si apre in una nuova scheda del browser.) Nota la differenza di qualità quando la frequenza di campionamento viene ridotta.

    La fedeltà dei file a 16 bit è ridotta alle frequenze di campionamento più basse e il rapporto segnale/rumore è drasticamente ridotto nelle versioni dei file a 8 bit a causa degli errori di quantizzazione. L'ultimo file della tabella è un file originale a 8 kHz e 8 bit di cui è stato eseguito l'upsampling a 44,1 kHz/16 bit. Noterai che la qualità audio è la stessa del file a 8 kHz/8 bit.

  2. In Cloud Shell, esamina i metadati del file HumptyDumptySampleStereo.flac:

    ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flac
    

    L'output è il seguente:

    Input #0, flac, from 'project_files/HumptyDumptySampleStereo.flac':
        Duration: 00:00:26.28, start: 0.000000, bitrate: 378 kb/s
        Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
    

    L'output mostra quanto segue:

    • La durata del file è di 26 secondi e 28 frame. Queste informazioni sono utili per casi d'uso avanzati, ad esempio se vuoi elaborare file di durata superiore a 1 minuto utilizzando il comando gcloud speech recognize-long-running.
    • La velocità in bit del file è 378 kb/s.
    • Il numero di stream nel file è 1. Questo valore è diverso dal numero di canali.
    • La frequenza di campionamento del file è 44,1 kHz.
    • Il numero di canali audio è 2 (stereo).
    • La profondità di bit del file è di 16 bit.

    Uno stream di trasporto può contenere diversi stream, tra cui audio, video e metadati. Ognuno di questi ha caratteristiche diverse, come il numero di canali audio per stream, il codec degli stream video e il numero di frame al secondo degli stream video.

    Come puoi notare, i metadati rivelano che si tratta di un file stereo. Questo è importante perché il numero predefinito di canali audio consigliato per l'analisi con Cloud STT è un canale mono.

Trascrivi i file utilizzando Cloud STT

Ora che hai estratto i file mono, puoi utilizzare Cloud STT per trascrivere le tracce audio. Utilizza il comando gcloud ml speech, che richiama l'API Cloud STT.

  • Trascrivi il file di dialogo Alice_FC.flac pulito:

    gcloud ml speech recognize ~/output/Alice_FC.flac \
        --language-code='en-US' --format=text
    

    Attendi qualche secondo per completare la trascrizione. L'output è il seguente:

    results[0].alternatives[0].confidence: 0.952115
    results[0].alternatives[0].transcript: the walrus and the carpenter were walking close at hand they whip like anything to see such quantities of sand if this were only cleared away they said it would be grand
    results[1].alternatives[0].confidence: 0.968585
    results[1].alternatives[0].transcript: " if 7 Maids with seven mops swept it for half a year do you suppose the walrus said that they could get it clear I doubt it said the Carpenter and shed a bitter tear"
    results[2].alternatives[0].confidence: 0.960146
    results[2].alternatives[0].transcript: " oysters come and walk with us the walrus did beseech a pleasant walk a pleasant talk along the Briny Beach we cannot do with more than four to give a hand to each the eldest oyster look at him but never a word he said the eldest oyster winked his eye and shook his heavy head"
    

Trascrivi una traccia "dirty"

Potresti avere file audio di persone che parlano con altri elementi sonori mescolati al dialogo. Queste tracce vengono spesso definite "sporche", in contrasto con la traccia "pulita" di soli dialoghi, che non contiene altri elementi. Sebbene Cloud STT sia in grado di riconoscere il parlato in ambienti rumorosi, i risultati potrebbero essere meno accurati rispetto alle tracce pulite. Potrebbero essere necessari ulteriori filtri ed elaborazioni audio per migliorare l'intelligibilità del dialogo prima di analizzare il file con Cloud STT.

In questa sezione, trascriverai un downmix mono del file audio 5.1 che hai analizzato nell'esempio precedente.

  1. In Cloud Shell, trascrivi il file Alice_mono_downmix.flac:

    gcloud ml speech recognize $PROJECT_FILES/Alice_mono_downmix.flac \
        --language-code='en-US' --format=text
    

    L'output è il seguente:

    results[0].alternatives[0].confidence: 0.891331
    results[0].alternatives[0].transcript: the walrus and the carpenter Milwaukee Corsicana they reflect anything to see such quantity if this were only
    results[1].alternatives[0].confidence: 0.846227
    results[1].alternatives[0].transcript: " it's Sunday 7th March 23rd happy few supposed former said that they could get it clear I doubt it to the doctor and she said it did it to just come and walk with us"
    results[2].alternatives[0].confidence: 0.917319
    results[2].alternatives[0].transcript: " along the Briny Beach it cannot do with more than four to give a hand to each the eldest oyster look at him but he said it was poised to Rich's eye and shook his head"
    

    I risultati di questa analisi non sono accurati a causa dei suoni aggiuntivi che mascherano il dialogo. Il livello di confidenza della trascrizione è inferiore all'85%. Come puoi vedere dall'output, il testo non corrisponde al dialogo nella registrazione come dovrebbe.

Trascrivi file audio con frequenze di campionamento e profondità di bit diverse

Per comprendere meglio l'impatto della frequenza di campionamento e della profondità di bit sulla trascrizione, in questa sezione trascriverai lo stesso file audio registrato con diverse frequenze di campionamento e profondità di bit. In questo modo puoi vedere il livello di confidenza di Cloud STT e la sua relazione con la qualità audio complessiva.

  1. Fai clic sui nomi dei file nella tabella seguente per ascoltare l'esempio e notare la differenza di qualità. Ogni volta che fai clic sul nome di un file, il file audio viene riprodotto in una nuova scheda del browser.

    Nome file audio Specifiche dei file
    Speech_11k8b.flac Frequenza di campionamento di 11.025 Hz, profondità di 8 bit
    Speech_16k8b.flac Frequenza di campionamento di 16 kHz, profondità di 8 bit
    Speech_16k16b.flac Frequenza di campionamento di 16 kHz, profondità di 16 bit
    Speech_441k8b.flac Frequenza di campionamento di 44.100 Hz, profondità di 8 bit
    Speech_441k16b.flac Frequenza di campionamento di 44.100 Hz, profondità di 16 bit
  2. In Cloud Shell, trascrivi il file Speech_11k8b.flac, che rappresenta la qualità audio più bassa in questo esempio:

    gcloud ml speech recognize $PROJECT_FILES/Speech_11k8b.flac \
        --language-code='en-US' --format=text
    

    L'output è il seguente:

    results[0].alternatives[0].confidence: 0.77032
    results[0].alternatives[0].transcript: number of Pentacle represent
    results[1].alternatives[0].confidence: 0.819939
    results[1].alternatives[0].transcript: " what people can get in trouble if we take a look at the X again"
    
  3. Trascrivi il file Speech_441k16b.flac, che è registrato con una fedeltà notevolmente superiore:

    gcloud ml speech recognize $PROJECT_FILES/Speech_441k16b.flac \
        --language-code='en-US' --format=text
    

    L'output è il seguente:

    results[0].alternatives[0].confidence: 0.934018
    results[0].alternatives[0].transcript: that gives us the number of pixels per inch when magnified to a 40-foot screen size now we take that number and multiply it by the distance between our eyes the interocular distance of 2 and 1/2 inch number of 10 pixels in other words on a 40-foot screen 10 pixels of information represents 2 and 1/2 in anything farther apart than that and positive Parallax is going to start to force the eyes to rotate that word in order to use the image
    results[1].alternatives[0].confidence: 0.956892
    results[1].alternatives[0].transcript: " where people tend to get in trouble is by looking at these images on a small monitor now if we take a look at the same math using a smaller monitor in this case 60 in the screen size in the resolution to multiply It Again by the distance between our eyes we end up with eighty pixels of Divergence on a monitor which equals two and a half inches so on the monitor things might look fine but when magnified up to the larger screen in this case for defeat we've created a situation that's eight times what we can stand to look at its very painful and should be avoided"
    

    Nota la differenza di confidenza nell'output dei due esempi. Il primo file (Speech_11k8b.flac), registrato a 11 kHz con una profondità di 8 bit, ha un livello di confidenza inferiore al 78%. Il secondo file ha un livello di confidenza di circa il 94%.

  4. Facoltativamente, trascrivi gli altri file elencati nella tabella del passaggio 1 per effettuare ulteriori confronti tra la frequenza di campionamento del file audio e l'accuratezza della profondità di bit.

La tabella seguente mostra un riepilogo dell'output di Cloud STT per ciascuno dei file elencati nella tabella del passaggio 1 della procedura precedente. Nota la differenza nei risultati del valore di affidabilità per ogni tipo di file. (I risultati potrebbero variare leggermente). Le trascrizioni dei file audio con frequenze di campionamento e velocità in bit inferiori tendono ad avere risultati di affidabilità inferiori a causa della qualità audio più scadente.

Nome file audio Confidenza (sezione uno) Sicurezza (sezione due)
Speech_11k8b.flac 0,770318 0,81994
Speech_16k8b.flac 0,935356 0,959684
Speech_16k16b.flac 0,945423 0,964689
Speech_44.1k8b.flac 0,934017 0,956892
Speech_44.1k16b.flac 0,949069 0,961777

Ottimizza i file video per l'analisi

Questa sezione del tutorial illustra i passaggi necessari per estrarre l'audio 5.1 da un file video.

  1. In Cloud Shell, estrai 6 canali mono da un file di filmato 5.1 e converti i singoli file nel formato FLAC:

    ffmpeg -i $PROJECT_FILES/sample_51_mix_movie.mp4 -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]" -map "[FL]" output/sample_FL.flac -map "[FR]" output/sample_FR.flac -map "[FC]" output/sample_FC.flac -map "[LFE]" output/sample_LFE.flac -map "[BL]" output/sample_BL.flac -map "[BR]" output/sample_BR.flac
    

    Questo comando estrae i seguenti file nella directory di output:

    sample_BL.flac
    sample_BR.flac
    sample_FC.flac
    sample_FL.flac
    sample_FR.flac
    sample_LFE.flac
    
  2. Controlla i metadati del file di esempio:

    ffprobe $PROJECT_FILES/Speech_48kFloat.wav
    

    L'output è il seguente:

    Duration: 00:00:05.12, bitrate: 1536 kb/s
    Stream #0:0: Audio: pcm_f32le ([3][0][0][0] / 0x0003), 48000 Hz, mono, flt, 1536 kb/s
    

    I valori dei metadati pcm_f32le e flt indicano che questo file ha un bitrate in virgola mobile. Devi convertire un file WAV con velocità in bit in rappresentazione in virgola mobile in un formato con numero intero con segno.

  3. Converti la velocità in bit del file in un formato di numero intero con segno:

    ffmpeg -i $PROJECT_FILES/Speech_48kFloat.wav -c:a pcm_s16le output/Speech_48k16bNonFloatingPoint.wav
    

    Questo comando crea un nuovo file WAV il cui bitrate è in formato numero intero con segno.

  4. Esamina i metadati del file appena creato:

    ffprobe ~/output/Speech_48k16bNonFloatingPoint.wav
    

    L'output è il seguente:

    Duration: 00:00:05.12, bitrate: 768 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels, s16, 768 kb/s
    

    I metadati ora mostrano che il bitrate nel file convertito è in un formato di numero intero con segno (little-endian), come mostrato dalle designazioni pcm_s16le e s16.

Esegui gli esempi del tutorial in un terminale locale

Puoi eseguire tutti gli esempi di questo tutorial da un terminale sul tuo computer locale. L'esecuzione degli esempi in locale offre un'importante funzionalità per riprodurre file audio e video direttamente utilizzando il comando ffplay (anziché ascoltarli nel browser).

  1. In un terminale sul computer locale, installa lo strumento FFMPEG:

    sudo apt update
    sudo apt install ffmpeg
    
  2. Scarica i file di esempio sulla tua macchina locale:

    gcloud storage cp gs://cloud-samples-data/speech/project_files/*.* local_destination_path
    

    Sostituisci local_destination_path con la posizione in cui inserire i file di esempio.

  3. Imposta la variabile di ambiente LOCAL_PATH sulla posizione sul computer in cui hai scaricato i file di esempio:

    export LOCAL_PATH=local_destination_path
    

    Sostituisci local_destination_path con il percorso del passaggio precedente.

  4. Nel terminale, utilizza il comando ffplay per ascoltare un file audio di esempio:

    • File audio: ffplay $LOCAL_PATH/HumptyDumpty4416.flac
    • File video: ffplay $LOCAL_PATH/sample_51_mix_movie.mp4
    • Riproduzione del bucket Cloud Storage: ffplay $GCS_BUCKET_PATH/HumptyDumpty4416.flac

    Sperimenta nel tuo terminale locale con gli esempi con cui hai lavorato in precedenza in questo tutorial. In questo modo, potrai comprendere meglio come utilizzare al meglio Cloud STT.

Risoluzione dei problemi

Gli errori possono essere causati da una serie di fattori, quindi vale la pena esaminare alcuni errori comuni e imparare a correggerli. Potresti riscontrare più errori in un determinato file audio che impediscono il completamento del processo di trascrizione.

L'audio è troppo lungo

Il comando gcloud speech recognize può elaborare file di durata massima di 1 minuto. Ad esempio, prova il seguente esempio:

gcloud ml speech recognize $PROJECT_FILES/HumptyDumpty4416.flac \
    --language-code='en-US' --format=text

L'output è il seguente:

ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Request payload size exceeds the limit: 10485760 bytes.

L'errore è causato dal tentativo di utilizzare il comando speech recognize per elaborare un file di durata superiore a 1 minuto.

Per i file di durata superiore a 1 minuto e inferiore a 80 minuti, puoi utilizzare il comando speech recognize-long-running. Per vedere la lunghezza del file, puoi utilizzare il comando ffprobe, come nell'esempio seguente:

ffprobe $PROJECT_FILES/HumptyDumpty4416.flac

L'output è simile al seguente:

Duration: 00:04:07.91, start: 0.000000, bitrate: 280 kb/s
Stream #0:0: Audio: flac, 44100 Hz, mono, s16

Nota che la durata del file audio è di circa 4 minuti e 8 secondi.

Leggi file di grandi dimensioni dal tuo computer locale

Il comando speech recognize-long-running può elaborare file di lunghezza massima di 1 minuto dal computer locale. Per vedere dove potresti riscontrare un errore, prova a utilizzare il comando speech recognize-long-running in Cloud Shell per un file più lungo:

gcloud ml speech recognize-long-running $PROJECT_FILES/HumptyDumpty4416.flac \
    --language-code='en-US' --format=text

L'output è il seguente:

ERROR: (gcloud.ml.speech.recognize-long-running) INVALID_ARGUMENT: Request payload size exceeds the limit: 10485760 bytes.

Questo errore non è dovuto alla durata dell'audio, ma alle dimensioni del file sul computer locale. Quando utilizzi il comando recognize-long-running, il file deve trovarsi in un bucket Cloud Storage.

Per leggere file di durata superiore a 1 minuto, utilizza recognize-long-running per leggere un file da un bucket Cloud Storage, come nel comando seguente:

gcloud ml speech recognize-long-running $GCS_BUCKET_PATH/HumptyDumpty4416.flac \
    --language-code='en-US' --format=text

Il completamento di questo processo richiede alcuni minuti.

Esegui la pulizia

Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina il progetto

  1. Nella console Google Cloud , vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.

Passaggi successivi