Quando invii dati audio all'API Cloud Speech-to-Text, puoi inviare i
dati direttamente (nel campo
content della richiesta) o
chiedere all'API di eseguire il riconoscimento in remoto sui dati archiviati in un bucket Cloud Storage.
Puoi inviare i dati direttamente nel campo content per il
riconoscimento sincrono
solo se i dati audio hanno una durata massima di 60 secondi e una dimensione massima di 10 MB. Tutti i dati audio nel campo content devono essere in formato base64. Questa pagina descrive come convertire l'audio da un file binario a dati con codifica base64.
Se i dati audio superano i 60 secondi o i 10 MB, devono essere archiviati in un bucket Cloud Storage per essere inviati per il riconoscimento. Puoi analizzarli in modo asincrono senza convertirli in formato base64. Per maggiori dettagli, consulta la documentazione sul riconoscimento asincrono.
Utilizzo della riga di comando
In una richiesta gRPC, puoi semplicemente scrivere direttamente i dati binari, ma viene utilizzato il formato JSON per le richieste REST. JSON è un formato di testo che non supporta direttamente i dati binari, pertanto dovrai convertirli in testo utilizzando la codifica Base64.
La maggior parte degli ambienti di sviluppo contiene un'utilità base64 nativa per codificare un file binario in dati di testo ASCII. Per codificare un file:
Linux
Codifica il file utilizzando lo strumento a riga di comando base64, assicurandoti di
impedire il wrapping delle righe utilizzando il flag -w 0:
base64 INPUT_FILE -w 0 > OUTPUT_FILE
macOS
Codifica il file utilizzando lo strumento a riga di comando base64:
base64 -i INPUT_FILE -o OUTPUT_FILE
Windows
Codifica il file utilizzando lo strumento Base64.exe:
Base64.exe -e INPUT_FILE > OUTPUT_FILE
PowerShell
Codifica il file utilizzando il metodo Convert.ToBase64String:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("./INPUT_FILE")) > OUTPUT_FILE
Crea un file di richiesta JSON, inserendo i dati con codifica base64:
JSON
{ "config": { "encoding": "FLAC", "sampleRateHertz": 16000, "languageCode": "en-US" }, "audio": { "content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..." } }
Utilizzo delle librerie client
L'incorporamento di dati binari nelle richieste tramite editor di testo non è né auspicabile né pratico. In pratica, incorporerai i file con codifica base64 nel codice client. Tutti i linguaggi di programmazione supportati hanno meccanismi integrati per la codifica base64 dei contenuti.
Python
In Python, codifica i file audio in base64 come segue:
# Import the base64 encoding library.
import base64
# Pass the audio data to an encoding function.
def encode_audio(audio):
audio_content = audio.read()
return base64.b64encode(audio_content)
Node.js
In Node.js, codifica i file audio in base64 come segue, dove audioFile è il percorso del file con codifica audio.
const fs = require('fs');
const content = fs.readFileSync(audioFile).toString('base64');
Java
In Java, utilizza il metodo statico encodeBase64 all'interno di org.apache.commons.codec.binary.Base64 per codificare in base64 i file binari:
// Import the Base64 encoding library.
import org.apache.commons.codec.binary.Base64;
// Encode the speech.
byte[] encodedAudio = Base64.encodeBase64(audio.getBytes());