Ottimizzare i file audio per Speech-to-Text


Questo tutorial mostra come eseguire un controllo preliminare sui file audio che stai preparando per l'utilizzo con Speech-to-Text. Fornisce informazioni di base sui formati dei file audio, descrive come ottimizzare i file audio per l'utilizzo con Speech-to-Text e come diagnosticare gli errori. Il tutorial è pensato per i professionisti non tecnici dei media e dell'intrattenimento e per i 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.
  • Riproduci file audio e video utilizzando FFMPEG.
  • Estrai, transcodifica e converti le proprietà dei file audio utilizzando FFMPEG.
  • Esegui Speech-to-Text 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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. Install the Google Cloud CLI.

  5. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.

  6. Per inizializzare gcloud CLI, esegui questo comando:

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

    Go to project selector

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

  9. Install the Google Cloud CLI.

  10. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.

  11. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  12. In questo tutorial, utilizzerai Cloud Shell per eseguire le procedure, ad esempio copiare i dati da un bucket Cloud Storage alla sessione Cloud Shell. Cloud Shell è un ambiente shell in cui Google Cloud CLI è già installato. Utilizzerai gcloud CLI per molti passaggi di questo tutorial. Inoltre, installi software e file audio di esempio sulla tua macchina locale ed esegui questi stessi esercizi dal terminale, come descritto nella sezione Esecuzione di esempi di tutorial in un terminale locale.

    Panoramica

    In questo tutorial utilizzi FFMPEG, uno strumento open source per la registrazione, la conversione e lo streaming di audio e video. Il tutorial fornisce maggiori 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 che si trovano nei flussi di lavoro di produzione e post-produzione multimediale.

    Per ottenere i migliori risultati da Speech-to-Text, devi assicurarti che i file utilizzati per la trascrizione siano monoaurale (mono) e soddisfino determinate specifiche minime, come descritto in seguito. Se i file non soddisfano le specifiche, potrebbe essere necessario generare file modificati. Ad esempio, potresti dover eseguire le seguenti operazioni:

    • Estrai i dati audio da un file video.
    • Estrai una singola traccia mono da un file audio multitraccia.
    • Eseguire la transcodifica da un codec audio a un altro più adatto a Speech-to-Text.

    Frequenza di campionamento (gamma 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 nella parte superiore o oltre l'intervallo di risposta in frequenza dell'udito di un ascoltatore tipico.

    Le frequenze di campionamento in telefonia e 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 ulteriori informazioni sulla telefonia e su altre applicazioni audio, vedi 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 Speech-to-Text. Le frequenze di campionamento che si trovano nei file audio sono in genere 16 kHz, 32 kHz, 44, 1 kHz e 48 kHz. Poiché l'intelligibilità è fortemente influenzata dalla gamma di frequenza, soprattutto nelle frequenze più alte, una frequenza di campionamento inferiore a 16 kHz produce un file audio con poche o nessuna informazioni sopra gli 8 kHz. Ciò può impedire a Speech-to-Text di trascrivere correttamente l'audio parlato. L'intelligibilità del parlato richiede informazioni nell'intervallo da 2 kHz a 4 kHz, anche se le armoniche (multipli) di queste frequenze nell'intervallo più alto sono importanti anche per preservare l'intelligibilità del parlato. Pertanto, mantenere la frequenza di campionamento a un minimo di 16 kHz è una buona pratica.

    È possibile convertire una frequenza di campionamento in un'altra. Tuttavia, non è vantaggioso eseguire l'upsampling dell'audio, perché le informazioni sulla gamma di frequenza sono limitate dalla frequenza di campionamento inferiore e non possono essere recuperate convertendo a 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 a varie frequenze di campionamento e profondità di bit per sentire la differenza in prima persona.

    Profondità di bit (intervallo dinamico)

    La profondità di bit del file audio determina la gamma 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 le 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 distorsioni udibili che influiscono direttamente sulla fedeltà del suono.) La profondità di bit consigliata per i file da analizzare con Speech-to-Text è di 16 bit o superiore. Come per la frequenza di campionamento, non è vantaggioso convertire la profondità di bit da 8 a 16 bit, perché le informazioni sulla gamma dinamica sono limitate al formato originale a 8 bit.

    Supporto di registrazione

    Anche il supporto di registrazione originale può influire sulla qualità del file audio. Ad esempio, i contenuti audio originariamente registrati su nastro magnetico potrebbero avere un sibilo 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 Speech-to-Text. Il trattamento delle registrazioni rumorose e dell'interferenza del rumore di fondo non rientrano nell'ambito di questo tutorial. Per ulteriori informazioni, consulta Best practice nella documentazione di Speech-to-Text.

    Introduzione a FFMPEG

    In questo tutorial utilizzi 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.
    • Conversione dei file audio in uno dei codec riconosciuti da Speech-to-Text.
    • Conversione delle frequenze di campionamento e dei bit rate dei file audio in configurazioni ottimali per l'analisi da parte di Speech-to-Text.
    • Estrazione di singole tracce audio o singoli stream da un file di stream di trasporto o da un file video.
    • Suddivisione dei file stereo in due file mono.
    • Suddivisione dei file audio 5.1 in sei file mono.
    • Applicazione di equalizzazione e filtri per migliorare la chiarezza 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 a tipi e formati di file per l'analisi di machine learning.

    Codec riconosciuti da Speech-to-Text

    Anche se Speech-to-Text riconosce diversi formati di file audio, potrebbe non leggere o analizzare correttamente alcuni codec. Il tutorial mostra come verificare che i tuoi contenuti siano in uno dei formati di file supportati.

    Nel tutorial, leggi le informazioni sui metadati per rivelare e correggere potenziali problemi prima di utilizzare Speech-to-Texte. Gli stessi strumenti ti consentono di convertire il file in un formato supportato se rilevi un'incompatibilità.

    Speech-to-Text riconosce i seguenti codec:

    • FLAC: Free Lossless Audio Codec
    • LINEAR16: un formato di modulazione a codifica di impulsi (PCM) non compresso utilizzato nei contenitori 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 progettato per applicazioni a bassa latenza
    • SPEEX_WITH_HEADER_BYTE: un codec progettato per applicazioni VoIP

    È importante capire che i codec e i formati di 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 Speech-to-Text.

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

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

    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. Utilizzi file multimediali archiviati sia in un'istanza Cloud Shell sia in un bucket Cloud Storage. L'utilizzo di fonti diverse ti consente di lavorare con funzionalità diverse di Speech-to-Text.

    In questa sezione, installa FFMPEG e configura le variabili di ambiente che puntano alle posizioni di archiviazione dei dati di esempio nell'archiviazione dell'istanza Cloud Shell e in un bucket Cloud Storage. I file multimediali sono gli stessi in entrambe le posizioni e alcuni degli esempi di 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. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

    2. In Cloud Shell, installa la versione attuale 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 indirizza ai file audio di esempio scaricati:

      export PROJECT_FILES=~/project_files
      
    9. Esaminare i metadati nei file multimediali

      Quando analizzi file audio o video con Speech-to-Text, 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 per 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 sul 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 un solo canale.
        • 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
        

        La differenza tra questo file e quello precedente è che questo è 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 uguali.

        Devi controllare il numero di canali in un file audio che vuoi elaborare utilizzando Speech-to-Text; 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 Ottimizzare 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 da quello mono o stereo, vengono visualizzate informazioni aggiuntive. In questo caso, l'audio è in un formato PCM lineare, registrato con una frequenza di campionamento di 44,1 kHz e una velocità in bit di 16 bit (numero intero con segno, little-endian).

        Nota la designazione 5.1. La velocità di trasmissione dei dati di 4608 kbit al secondo in questo file è notevolmente superiore a quella dei due 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 Speech-to-Text. Ancora più importante, vedrai come ottimizzare il file per utilizzarlo con la funzionalitàSpeech-to-Texte senza errori.

      Ottimizzare i file audio per l'analisi

      Come accennato in precedenza, quando utilizzi Speech-to-Text, i file audio devono essere file mono a un solo canale per evitare errori nel processo di trascrizione. La tabella seguente mostra i formati audio comuni e la procedura di conversione per convertire i file mono per l'elaborazione.

      Formato audio attuale Processo di conversione Formato audio di output
      Mono Nessuna estrazione necessaria FLAC o LINEAR16
      Stereo Dividere in due file mono o eseguire il downmix in un file mono FLAC o LINEAR16
      Multitraccia (5.1) Suddividi in 6 file mono FLAC o LINEAR16
      Audio/video multi-stream Dividi 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 la procedura come descritto nella sezione Trascrizione di audio con più canali della documentazione di Speech-to-Text. In 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 e quindi utilizzare il comando ffmpeg per estrarre o convertire il file in un formato mono, se necessario.

      Visualizzare 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 Speech-to-Text su un file che non è in formato mono.

      1. In Cloud Shell, esegui Speech-to-Text 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 Speech-to-Text 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
        

        Ciò rivela che l'errore di Speech-to-Text è causato dal tentativo di elaborare un file stereo

      Per informazioni su come gestire i file stereo tramite scripting, consulta Trascrizione di audio con più canali nella documentazione di Speech-to-Text.

      Dividere un file stereo in più file mono FLAC

      Un esempio di come evitare l'errore relativo alle tracce multiple è 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, si designa il canale sinistro 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 diversi oratori vengono registrati su canali diversi, ti consigliamo di trascrivere i canali separatamente. Speech-to-Text è in grado di riconoscere più voci all'interno di una singola registrazione. Tuttavia, isolare ogni voce su canali separati comporta livelli di confidenza più elevati nella trascrizione. Il valore di affidabilità è anche chiamato tasso di errore di parola, o WER, nel riconoscimento vocale. Per ulteriori informazioni sull'utilizzo di più voci nella stessa registrazione, consulta Separare diversi oratori in una registrazione audio nella documentazione di Speech-to-Text.

      • In Cloud Shell, dividi 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 Speech-to-Text.

      Dividere un file audio 5.1 in più file mono

      Un altro esempio di ottimizzazione dei file audio è la suddivisione dei file audio 5.1 in singoli file mono FLAC. Quando si fa riferimento ai canali in un mix multicanale come 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 indicato come FL per l'anteriore sinistro, mentre il canale destro è indicato come FR per l'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 posteriore sinistro (noto anche come surround sinistro) e BR per il posteriore destro (noto anche come surround destro). Queste non sono designazioni standard, ma sono una pratica convenzionale per identificare l'origine di un file audio.

      In genere, nei file audio multicanale per film e programmi televisivi, il dialogo principale viene trasmesso dal canale centrale anteriore. Questo è in genere il file da scegliere quando utilizzi Speech-to-Texte, perché in genere contiene la maggior parte dei dialoghi nel mix.

      In un ambiente di post-produzione, gli elementi principali di dialoghi, musica ed effetti vengono suddivisi in gruppi chiamati stem, in modo che tutti i dialoghi di un mix rimangano separati dalla musica e dagli effetti fino al completamento del mix finale. Poiché il dialogo è composto solo da dialoghi, Speech-to-Text 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 mixato con suoni non di dialogo, causando una riduzione dell'intelligibilità.

      1. In Cloud Shell, dividi il file Alice_51_sample_mix.aif in file FLAC, specificando i nomi dei file di output per ogni 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 del canale FC (solo centrale) che hai appena creato. (Il dialogo inizia dopo alcuni secondi di silenzio.)

        Alice_FC.flac
        

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

      Testare la qualità del file audio

      Prima di convertire i file multimediali utilizzando Speech-to-Text, è 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 ad ampia gamma dinamica.

      Ascoltare 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 Speech-to-Text.

      2. Riproduci il seguente file video di esempio in formato 5.1 per ascoltare un mix surround con non-dialog in tutti i canali, tranne quello 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.

        Idealmente, utilizzi il canale solo per i dialoghi per la funzionalità di Speech-to-Text. Il file di esempio contiene audio non di dialogo in cinque canali e dialoghi in un canale. Nella sezione Ottimizzare i file audio per l'analisi successiva, scoprirai come estrarre i sei canali audio mono codificati nel file 5.1 per ascoltare ogni traccia. In questo modo puoi isolare il canale solo dialoghi (in genere il canale centrale o centrale anteriore) dai canali non dialoghi per migliorare la capacità dSpeech-to-Textle di trascrivere il file.

      Testare lo stesso file a frequenze di campionamento diverse

      La tabella seguente elenca più versioni dello stesso file audio da ascoltare, ognuna 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 (upsampled)/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 (convertito)
      1. Per ogni file nella tabella precedente, fai clic sul nome del 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 viene ridotta alle frequenze di campionamento più basse e il rapporto segnale/rumore viene 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/8 bit di cui è stato eseguito l'upsampling a 44,1 kHz/16 bit. Tieni presente 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 fotogrammi. Queste informazioni sono utili per casi d'uso avanzati, ad esempio se vuoi elaborare file più lunghi di 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 è 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 è 16 bit.

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

        Nota che i metadati rivelano che si tratta di un file stereo. Questo è importante perché il numero predefinito di canali audio consigliato per l'analisi con la funzionalitSpeech-to-Textch è un canale mono.

      Trascrivere file utilizzando Speech-to-Text

      Ora che hai estratto i file mono, puoi utilizzare Speech-to-Text per trascrivere le tracce audio. Utilizzi il comando gcloud ml speech, che richiama l'API Speech-to-Text.

      • 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"
        

      Trascrivere una traccia "sporca"

      Potresti avere file audio di persone che parlano con altri elementi sonori mixati nel dialogo. Queste tracce vengono spesso chiamate "sporche" in contrapposizione alla traccia "pulita" solo con i dialoghi, che non contiene altri elementi mixati. Sebbene Speech-to-Text possa riconoscere la voce in ambienti rumorosi, i risultati potrebbero essere meno precisi rispetto alle tracce pulite. Potrebbe essere necessario un filtraggio e un'elaborazione audio aggiuntivi per migliorare l'intelligibilità del dialogo prima di analizzare il file con Speech-to-Text.

      In questa sezione, trascrivi 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 sono imprecisi a causa dei suoni aggiuntivi che mascherano i dialoghi. Il livello di confidenza della trascrizione è inferiore all'85%. Come puoi vedere dall'output, il testo non corrisponde al dialogo nella registrazione come dovrebbe.

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

      Per capire meglio come la frequenza di campionamento e la profondità di bit influiscono sulla trascrizione, in questa sezione trascrivi lo stesso file audio registrato con una varietà di frequenze di campionamento e profondità di bit. In questo modo, puoi visualizzare il livello di confidenza di Speech-to-Text e la sua relazione con la qualità audio complessiva.

      1. Fai clic sui nomi dei file nella tabella seguente per ascoltare il campione 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 del file
        Speech_11k8b.flac Frequenza di campionamento di 11025 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 44100 Hz, profondità di 8 bit
        Speech_441k16b.flac Frequenza di campionamento di 44100 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, 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 attendibilità 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. Se vuoi, trascrivi gli altri file elencati nella tabella del passaggio 1 per effettuare ulteriori confronti tra la precisione della frequenza di campionamento e della profondità di bit dei file audio.

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

      Nome file audio Confidenza (sezione 1) Confidenza (sezione 2)
      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

      Ottimizzare i file video per l'analisi

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

      1. In Cloud Shell, estrai 6 canali mono da un file video 5.1 e converti i singoli file in 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 virgola mobile in un formato con numeri interi relativi.

      3. Converti il bitrate del file in un formato di numeri interi 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 integer 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 formato intero con segno (little-endian), come indicato 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 direttamente i file audio e video utilizzando il comando ffplay (anziché semplicemente 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 del tuo 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

        Fai esperimenti nel terminale locale con gli esempi che hai utilizzato in precedenza in questo tutorial. In questo modo potrai capire meglio come utilizzare al meglio Speech-to-Text.

      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 della procedura di trascrizione.

      L'audio è troppo lungo

      Il comando gcloud speech recognize può elaborare file della 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 più lungo di 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 durata del file, puoi utilizzare il comando ffprobe, come nel seguente esempio:

      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
      

      Tieni presente che la durata di esecuzione del file audio è di circa 4 minuti e 8 secondi.

      Leggere file di grandi dimensioni dal computer locale

      Il comando speech recognize-long-running può elaborare file di durata 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 lunghezza dell'audio, ma alle dimensioni del file sulla macchina locale. Quando utilizzi il comando recognize-long-running, il file deve trovarsi in un bucket Cloud Storage.

      Per leggere file più lunghi di 1 minuto, utilizza recognize-long-running per leggere un file da un bucket Cloud Storage, come nel seguente comando:

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

      Il completamento della procedura 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. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Passaggi successivi