Questo tutorial mostra come eseguire un controllo preflight sui file audio che
che ti stai preparando per l'utilizzo
Speech-to-Text.
Fornisce informazioni sui formati file audio e descrive come ottimizzare l'audio
file da utilizzare con Speech-to-Text e su come diagnosticare gli errori. La
Il tutorial è stato progettato per i professionisti non tecnici dei media e dell'intrattenimento e
professionisti della post-produzione. Non richiede una conoscenza approfondita di Google Cloud, ma solo una conoscenza di base dell'utilizzo dello strumento a riga di comando gcloud
con i file archiviati sia localmente sia in un bucket Cloud Storage.
Obiettivi
- Installa il FFMPEG lo strumento a riga di comando gcloud.
- 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 diversi file di esempio che contengono finestre di dialogo.
Costi
Questo tutorial utilizza i seguenti componenti fatturabili di Google Cloud:
Puoi utilizzare lo Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.
Prima di iniziare
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
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 Cloud Shell. Cloud Shell è un ambiente shell con Google Cloud CLI installato. Userai l'interfaccia a riga di comando gcloud per molti passaggi in questo tutorial. Puoi anche installare software e file audio di esempio sul tuo computer locale ed eseguire gli stessi esercizi dal tuo terminale, come descritto Esecuzione di esempi di tutorial in un terminale locale più avanti.
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 ulteriori informazioni su questo strumento più avanti.
Comprendere gli attributi dei file audio
Questa sezione descrive i tipi di file audio, le frequenze di campionamento, la profondità di bit e e registrare contenuti multimediali presenti nei flussi di lavoro di produzione multimediale e post-produzione.
Per ottenere i risultati migliori da Speech-to-Text, devi assicurarti che il valore I file utilizzati per la trascrizione sono file mono (mono) che soddisfano determinati requisiti minimi specifiche come descritto di seguito. Se i file non soddisfano le specifiche, potresti dover generare file modificati. Ad esempio, potresti dover eseguire le seguenti:
- Estrai i dati audio da un file video.
- Estrai una singola traccia mono da un file audio multitraccia.
- Transcodifica da un solo audio codec a un altro codec più adatto a Speech-to-Text.
Frequenza di campionamento (gamma di frequenza)
La frequenza di campionamento determina l'intervallo di frequenza del file audio. Si basa su il numero di campioni al secondo che costituiscono il file audio. In genere, la frequenza riproducibile più elevata di un file audio digitale è equivalente alla metà della frequenza di campionamento. Ad esempio, la frequenza massima che può essere riprodotta 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 tipico ascoltatore.
Le frequenze di campionamento nel settore della telefonia e delle telecomunicazioni tendono a essere comprese tra 8 kHz e 16 kHz. Questo tutorial è incentrato sui formati specifici dei media e dell'intrattenimento, che in genere sono superiori a 16 kHz. Per ulteriori informazioni su telefonia e altre applicazioni audio, consulta Trascrizione dell'audio telefonico con modelli avanzati.
Consigliamo una frequenza di campionamento di almeno 16 kHz per i file audio utilizzati per la trascrizione con Speech-to-Text. Le frequenze di campionamento presenti nei file audio sono in genere 16 kHz, 32 kHz, 44,1 kHz e 48 kHz. Poiché l'intelligibilità è molto influenzata dalla gamma di frequenza, soprattutto nelle frequenze più alte, una una frequenza di campionamento inferiore a 16 kHz produce un file audio con una frequenza scarsa o nulla oltre gli 8 kHz. Ciò potrebbe 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 (moltiplicatori) 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 prassi.
È possibile effettuare la conversione da una frequenza di campionamento a un'altra. Tuttavia, non c'è alcun vantaggio nell'eseguire l'upsampling dell'audio, perché le informazioni sull'intervallo di frequenza sono limitate dalla frequenza di campionamento inferiore e non possono essere recuperate mediante la conversione a una frequenza di campionamento superiore. Ciò significa che l'upsampling da 8 kHz a 44,1 kHz limiterebbe l'intervallo di frequenza riproducibile alla metà della frequenza di campionamento inferiore, ovvero a circa 4 kHz. In questo tutorial ascolterai file audio registrati con varie frequenze di campionamento e profondità di bit per consentirti di sentire la differenza.
Profondità di bit (intervallo dinamico)
La profondità in bit del file audio determina l'intervallo tra i suoni più silenziosi e quelli più forti, nonché il rapporto segnale/rumore del file. Dinamico ha un impatto minore sulla qualità della trascrizione rispetto all'intervallo risposta in frequenza, ma una profondità di bit pari o inferiore a 8 bit può causare un rumore di quantizzazione nella traccia audio, rendendo difficile la trascrizione accurata. Gli errori di quantizzazione sono errori di arrotondamento tra il segnale di ingresso analogico e la mappatura del valore di uscita digitale del segnale. Gli errori causano l'audio distorsione che influisce direttamente sulla fedeltà del suono.) La profondità in bit consigliata dei file per l'analisi con Speech-to-Text è di almeno 16 bit. Come per la frequenza di campionamento, non c'è alcun vantaggio nell'eseguire la conversione di upsampling 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 originariamente registrati su nastro magnetico il rumore di fondo dello schermo è incorporato nel file. In alcuni casi, potrebbe essere necessario pre-elaborare audio rumoroso per ottenere risultati migliori nella trascrizione quando usi Speech-to-Text. Il trattamento delle registrazioni rumorosi e le interferenze del rumore di fondo esulano dall'ambito di questo tutorial. Per ulteriori informazioni, consulta le best practice nella documentazione di Speech-to-Text.
Introduzione a FFMPEG
In questo tutorial utilizzerai FFMPEG per lavorare con i file audio. Il set di strumenti FFMPEG offre una vasta gamma di funzioni, tra cui:
- Riproduzione di un file audio o video.
- Conversione di file audio in uno dei codec riconosciuti tramite Speech-to-Text:
- Conversione delle frequenze di campionamento e della velocità in bit dei file audio in modo ottimale configurazioni per l'analisi da Speech-to-Text.
- Estrazione di singole tracce audio o singoli stream da uno stream di trasporto o 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 dell'audio.
Puoi utilizzare anche ffprobe funzione di FFMPEG per rivelare i metadati associati a un file multimediale. Questo è importante quando vuoi diagnosticare problemi relativi ai tipi e ai formati di file per l'analisi di machine learning.
Codec riconosciuti da Speech-to-Text
Sebbene Speech-to-Text riconosca una serie di formati di file audio, potrebbe non leggere o analizzare correttamente alcuni codec. Il tutorial mostra come puoi controllare che i tuoi contenuti siano in uno dei file supportati formati.
Nel tutorial, leggi le informazioni sui metadati per rilevare e correggere potenziali problemi prima di utilizzare la funzionalità Trascrizione vocale. 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 PCM (non compresso di modulazione del codice di impulso) utilizzato in container WAV, AIFF, AU e RAW
- MULAW: un codec PCM progettato per le telecomunicazioni negli Stati Uniti e in Giappone
- AMR: un codec adattivo multi-frequenza progettato per la sintesi vocale
- AMR_WB: una variante a banda larga di AMR con il doppio della larghezza di banda di AMR
- OGG_OPUS: un codec con perdita di dati progettato per applicazioni a bassa latenza
- SPEEX_WITH_HEADER_BYTE: un codice progettato per le applicazioni voice over IP (VoIP)
È importante capire che i codec e i formati file non sono uguali. La non indica necessariamente che il codec usato nella creazione il file può essere letto da Speech-to-Text.
Questo tutorial si concentra sui codec FLAC e LINEAR16, poiché si trovano spesso negli ambienti di flusso di lavoro multimediale. Entrambi sono formati senza perdita di dati.
Se utilizzi file WAV (in formato PCM lineare non compresso) con
I file di Speech-to-Text devono avere una profondità massima di 16 bit e devono 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
Ottimizzare i file audio per l'analisi
di questo tutorial fornisce un esempio di come convertire il file da
con virgola mobile a profondità di bit intera (con firma) per trascrivere il file
all'interno di Speech-to-Text.
Inizializza l'ambiente
Prima di eseguire le attività per questo tutorial, devi inizializzare installando FFMPEG, impostando alcune variabili di ambiente e scaricare 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 capacità diverse di Speech-to-Text:
In questa sezione installerai FFMPEG e imposterai le variabili di ambiente che puntano alle località di archiviazione dei dati di esempio nell'istanza di Cloud Shell archiviazione e in un bucket Cloud Storage. I file multimediali sono gli stessi entrambe le posizioni e alcuni degli esempi di questo tutorial consentono di accedere ai file sia da da Cloud Shell e dal bucket Cloud Storage. Puoi installare FFMPEG sul tuo computer locale ed esegui gli stessi esercizi, come descritto più avanti in il Esecuzione di esempi di tutorial in un terminale locale .
-
In the Google Cloud console, activate Cloud Shell.
In Cloud Shell, installa la versione corrente di FFMPEG:
sudo apt update sudo apt install ffmpeg
Verifica che FFMPEG sia installato:
ffmpeg -version
Se viene visualizzato un numero di versione, l'installazione è riuscita.
Crea una directory per i file di progetto:
mkdir project_files
Crea una directory per i file di output che creerai in un secondo momento:
mkdir output
Scarica i file audio di esempio:
gcloud storage cp gs://cloud-samples-data/speech/project_files/*.* ~/project_files/
Crea una variabile di ambiente per il nome del bucket Cloud Storage:
export GCS_BUCKET_PATH=gs://cloud-samples-data/speech/project_files
Crea una variabile di ambiente per il percorso della directory dell'istanza Cloud Shell che indirizzi ai file audio di esempio scaricati:
export PROJECT_FILES=~/project_files
Esaminare i metadati nei file multimediali
Quando analizzi i 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 il
metadati da più file multimediali per comprenderne le specifiche.
In Cloud Shell, rivela i metadati per 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 del 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.
- È un file in formato mono a canale singolo.
- La profondità di bit è di 16 bit (numero intero con segno).
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 si tratta di un file stereo con una maggiore velocità in bit (378 kB/secondo invece di 283 kB/secondo) perché contiene la riproduzione a due canali anziché una in mono traccia. Tutti gli altri valori sono uguali.
Dovresti controllare il numero di canali in un file audio che vuoi per elaborare l'utilizzo di Speech-to-Text; i file audio devono avere solo un singolo canale audio. Per trascrivere più canali audio nello stesso file, ti consigliamo di creare uno script dei comandi come descritto nella sezione Ottimizzare i file audio per l'analisi in seguito.
Per visualizzare 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 è in un formato diverso rispetto al file 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 (intero con segno, little endian).
Tieni presente la designazione
5.1
. La larghezza di banda di 4608 Kbit al secondo in questo file è notevolmente superiore a quella di entrambi gli 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. Ma soprattutto, vedrai come ottimizzare il file per usarlo con Speech-to-Text senza errori.
Ottimizza i file audio per l'analisi
Come accennato in precedenza, quando utilizzi Speech-to-Text, i file audio devono essere file mono a canale singolo per evitare errori nella trascrizione e il processo di sviluppo. La tabella seguente mostra i formati audio comuni e la procedura di conversione per la conversione dei file mono per l'elaborazione.
Formato audio corrente | Processo di conversione | Formato audio di output |
---|---|---|
Monocromatico | Nessuna estrazione necessaria | FLAC o LINEAR16 |
Stereo | Dividi 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 multistream | Suddividere in file mono separati | FLAC o LINEAR16 |
Per elaborare i file con più tracce audio, puoi estrarre le tracce mono 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, esplora l'opzione di usare FFMPEG per estrarre singole tracce mono un file stereo.
Come mostrato nella sezione precedente, puoi utilizzare il comando ffprobe
per
determinare quanti canali audio contiene un file, quindi usare l'elemento ffmpeg
per estrarre o convertire il file in formato mono, se necessario.
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 Text-to-Speech su un file non in formato mono.
In Cloud Shell, esegui Speech-to-Text sul
HumptyDumptySampleStereo.flac
file: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. Di conseguenza, l'esecuzione di Speech-to-Text causa un errore
Invalid audio channel count
.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 Speech-to-Text è causato da: tentativo di elaborare un file stereo
Per informazioni su come gestire i file stereo tramite script, vedi Trascrizione di audio con più canali nella documentazione di Speech-to-Text.
Suddividere un file stereo in più file FLAC mono
Un esempio di come evitare l'errore relativo a 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 uno stereo
è consigliabile creare dei nomi per i file estratti che indichino
posizione originale del canale file. Ad esempio, nella procedura che segue,
designi 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, verrà usato un solo canale utilizzati per la trascrizione. Tuttavia, se vengono registrati diversi oratori 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, l'isolamento di ogni voce in canali separati consente di ottenere livelli di attendibilità più elevati nella trascrizione. Il valore di confidenza è noto anche come tasso di errore di parola o WER nel riconoscimento vocale. Per ulteriori informazioni sull'utilizzo di più voci nella stessa registrazione, consulta Separare diversi interlocutori in una registrazione audio nella documentazione di Speech-to-Text.
In Cloud Shell, suddividi
HumptyDumptySampleStereo.flac
stereo 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 File mono
HumptyDumptySample_FL.flac
(canale anteriore sinistro) eHumptyDumptySample_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.
Suddividere 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 FLAC mono. Quando si fa riferimento a canali in un mix multicanale
ad esempio un mix 5.1, le designazioni dei nomi dei file sono tipicamente diverse rispetto a quelle
file in formato stereo o mono. Il file del canale sinistro è in genere contrassegnato come FL
per la parte anteriore sinistra e il canale destro come FR
per la parte anteriore destra. La
i canali rimanenti di un mix 5.1 sono indicati qui come FC
per il front center,
LFE
per effetti a bassa frequenza, BL
per retro sinistro (noto anche come surround
sinistra) e BR
per la parte posteriore destra (nota anche come surround destra). Questi non sono
designazioni standard, ma sono una pratica convenzionale per identificare
l'origine di un file audio.
In genere, nei file audio multicanale per i filmati e la televisione, il valore la finestra di dialogo principale è trasmessa dal canale centrale in primo piano. Di solito è il file da scegliere quando utilizzi la funzionalità Converti voce in testo, perché in genere contiene la maggior parte del dialogo 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 vengano tenuti separati dalla musica e dagli effetti fino al termine del mix finale. Poiché la radice è composta solo da dialoghi, Speech-to-Text offre risultati quando trascrivi le radici invece di cercare di tirare il centro canale da un mix finale. Questo perché un canale centrale estratto potrebbe essere miscelato con suoni non vocali, con conseguente perdita di intelligibilità.
In Cloud Shell, suddividi il file
Alice_51_sample_mix.aif
in 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 (...)
Fai clic sul file seguente 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
Ascolta il file FC (solo centrale del canale) che hai appena creato. Il dialogo inizia dopo alcuni secondi di silenzio.
Alice_FC.flac
Nota la differenza di chiarezza rispetto al file precedente. Questo canale si basa solo sulla parte di dialogo del mix.
Testa la qualità del file audio
Prima di convertire i file multimediali utilizzando Speech-to-Text, è buona idea ascoltarli per determinare se presentano anomalie nella qualità audio che potrebbero impedire agli strumenti di ML di fornire risultati accurati. In questa sezione, puoi riprodurre i file nel browser facendo clic sui relativi nomi. Ti consigliamo di utilizzare cuffie o altoparlanti Wide Dynamic Range.
Ascoltare l'audio di un file video
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. Avvisi la fedeltà chiara e non distorta e l'intelligibilità di questo file. Questo è un buon candidato per la trascrizione utilizzando Speech-to-Text.
Riproduci il seguente file video in formato 5.1 di esempio per ascoltare un mix surround con senza finestre di dialogo in tutti i canali, ad eccezione di quello centrale:
sample_51_mix_movie.mp4
Il file è progettato per la riproduzione su un impianto audio 5.1. Se utilizzi solo cuffie o un impianto a due canali, è possibile che non tutti i canali siano udibili durante la riproduzione. (Per ascoltare tutti e sei i canali, potrebbe essere decodificata su un sistema 5.1, altrimenti dovresti creare un downmix stereo a due canali).
Idealmente, dovresti utilizzare il canale di sola finestra di dialogo per Speech-to-Text. Il file di esempio contiene audio non dialogato in cinque canali e dialoghi in un canale. Nella sezione Ottimizzare i file audio per l'analisi di seguito, scoprirai come estrarre i sei singoli canali audio mono codificati nel file 5.1 per ascoltare ogni traccia. Ciò consente di isolare il canale solo per le finestre di dialogo (in genere il centro o front-center) dai canali non di dialogo al fine di migliorare capacità di Speech-to-Text di trascrivere il file.
Testa lo stesso file a 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à in 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 (up-convertito) |
Per ogni file nella tabella precedente, fai clic sul nome del file per ascoltarlo. Il player 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 inferiori e il rapporto segnale-rumore è drasticamente ridotto nel file a 8 bit a causa di errori di quantizzazione. L'ultimo file della tabella è un file originale a 8 kHz e 8 bit che è stato sottoposto ad upsampling a 44,1 kHz/16 bit. Avvisi che la qualità audio sia la stessa di un file a 8 kHz/8-bit.
In Cloud Shell, esamina i metadati per l'oggetto 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 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à in bit del file è 16 bit.
Uno stream di trasporto può contenere una serie di stream, tra cui audio, video e metadati. Ognuno di questi ha caratteristiche diverse, il numero di canali audio per stream, il codec degli stream video e il numero di fotogrammi al secondo dei flussi video.
Nota che i metadati rivelano che si tratta di un file stereo. Questo è perché il numero predefinito di canali audio consigliati per l'analisi con Speech-to-Text è un canale mono.
- 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 più lunghi di 1 minuto utilizzando il comando
Trascrivere file utilizzando Speech-to-Text
Ora che hai estratto i file mono, puoi utilizzare la funzionalità di sintesi vocale per trascrivere le tracce audio. Utilizza 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 è seguenti:
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 audio mescolati al dialogo. Sono spesso definiti "sporchi" tracce anziché al livello "pulito" traccia solo finestra di dialogo che non abbia altri elementi mescolati. Sebbene Speech-to-Text è in grado di riconoscere la voce in ambienti rumorosi, potrebbe essere meno preciso rispetto alle tracce pulite. Aggiuntivo elaborazione e filtri dell'audio potrebbe essere necessario per migliorare l'intelligibilità della finestra di dialogo analizzare il file con Speech-to-Text.
In questa sezione trascriverai un downmix mono del file audio 5.1 che analizzati nell'esempio precedente.
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 degli altri suoni che mascherano la conversazione. Il livello di confidenza della trascrizione è inferiore all'85%. E come puoi vedere dall'output, il testo non corrisponde alla finestra di dialogo nella la registrazione nel modo più preciso possibile.
Trascrivere file audio con frequenze di campionamento e profondità di bit diverse
Per saperne di più su come la frequenza di campionamento e la profondità di bit influiscono sulla trascrizione, in questa sezione trascrivi lo stesso file audio registrato con varie frequenze di campionamento e profondità di bit. In questo modo puoi vedere il livello di confidenza di Speech-to-Text e la sua relazione con la qualità audio complessiva.
Fai clic sui nomi dei file nella tabella seguente per ascoltare il Sample 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: 16 kHz, profondità a 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 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"
Trascrivi il file
Speech_441k16b.flac
, che viene registrato fedeltà significativamente maggiore: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%.Se vuoi, trascrivi gli altri file elencati nella tabella al passaggio 1 in fare ulteriori confronti tra la frequenza di campionamento dei file audio e la precisione della profondità in bit.
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 del valore di confidenza per ogni tipo di file. (Il tuo i risultati potrebbero variare leggermente.) Le trascrizioni dei file audio con sampling e velocità in bit inferiori tendono ad avere risultati di confidenza inferiori a causa della qualità audio inferiore.
Nome file audio | Affidabilità (sezione 1) | Confidenza (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 di film.
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 file seguenti nella directory di output:
sample_BL.flac sample_BR.flac sample_FC.flac sample_FL.flac sample_FR.flac sample_LFE.flac
Verifica 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
eflt
indicano che questo file ha un velocità in bit in virgola mobile. È necessario convertire un WAV con velocità in bit in virgola mobile in un formato con numero intero firmato.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 la cui velocità in bit è in formato intero con segno.
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
Ora i metadati mostrano che la velocità in bit nel file è in un formato Sign-integer (little-endian), come mostrato designazioni
pcm_s16le
es16
.
Eseguire gli esempi del tutorial in un terminale locale
Puoi eseguire tutti gli esempi di questo tutorial da un terminale sul tuo computer
computer. 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).
In un terminale sul computer locale, installa lo strumento FFMPEG:
sudo apt update sudo apt install ffmpeg
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.
Imposta la variabile di ambiente
LOCAL_PATH
sulla località computer dal quale hai scaricato i file di esempio:export LOCAL_PATH=local_destination_path
Sostituisci local_destination_path con il percorso della passaggio precedente.
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 tuo terminale locale con gli esempi che hai lavorato in precedenza in questo tutorial. Questo ti aiuta a migliorare a capire come usare al meglio Speech-to-Text.
- File audio:
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. In un determinato file audio potrebbero verificarsi più errori che impediscono il completamento della procedura di trascrizione.
L'audio è troppo lungo
Il comando gcloud speech recognize
è in grado di elaborare file della durata massima di 1 minuto
lunga. 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 più lunghi di 1 minuto e più brevi di 80 minuti, puoi utilizzare il comando speech recognize-long-running
. Per vedere la durata 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
Tieni presente che la durata 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 capire 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 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
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 di questa 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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Passaggi successivi
- Leggi Documentazione di Speech-to-Text.
- Leggi la documentazione relativa a riconoscimento vocale e i comandi riconoscimento vocale a lunga esecuzione .
- Scopri la trascrizione di Speech-to-Text con l'API Cloud Speech-to-Text codelab.