Quando você envia dados de áudio para a API Speech-to-Text, é possível enviá-los
diretamente (no campo
content
da solicitação) ou
ter a API executar o reconhecimento remotamente nos dados armazenados em um bucket do Cloud Storage.
Só é possível enviar dados diretamente no campo content
para reconhecimento síncrono
somente se os seus dados de áudio tiverem no máximo 60 segundos e 10 MB. Todos os dados de áudio no campo content
precisam estar no formato base64. Nesta página, veja como converter áudio de um arquivo binário para dados codificados como Base64.
Se os dados de áudio excederem 60 segundos ou 10 MB, eles precisarão ser armazenados em um bucket do Cloud Storage para serem enviados para reconhecimento. Você pode analisá-lo de forma assíncrona sem convertê-lo no formato base64. Consulte a documentação de reconhecimento assíncrono para mais detalhes.
Como usar a linha de comando
Em uma solicitação gRPC, você pode simplesmente gravar os dados binários diretamente; no entanto, JSON é usado ao fazer uma solicitação REST. JSON é um formato de texto que não suporta diretamente dados binários, então você precisará converter esses dados binários em texto usando a codificação Base64.
A maioria dos ambientes de desenvolvimento contém um utilitário base64
nativo para
codificar um binário em dados de texto ASCII. Para codificar um arquivo, faça o seguinte:
Linux
Codifique o arquivo de vídeo usando a ferramenta de linha de comando em base64
, evitando a quebra de linha com a sinalização -w 0
:
base64 INPUT_FILE -w 0 > OUTPUT_FILE
macOS
Codifique o arquivo usando a ferramenta de linha de comando base64
:
base64 -i INPUT_FILE -o OUTPUT_FILE
Windows
Codifique o arquivo usando a ferramenta Base64.exe
:
Base64.exe -e INPUT_FILE > OUTPUT_FILE
PowerShell
Codifique o arquivo usando o método Convert.ToBase64String
:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("./INPUT_FILE")) > OUTPUT_FILE
Crie um arquivo de solicitação JSON, incluindo os dados codificados em base64:
JSON
{ "config": { "encoding": "FLAC", "sampleRateHertz": 16000, "languageCode": "en-US" }, "audio": { "content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..." } }
Como usar bibliotecas de cliente
Incorporar dados binários de áudio em solicitações por meio de editores de texto não é desejável nem prático. Na prática, você estará incorporando arquivos com codificação base64 no código do cliente. Todas as linguagens de programação compatíveis têm mecanismos integrados para o conteúdo de codificação base64:
Python
Em Python, codifique os arquivos de áudio em base64 da seguinte maneira:
# 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
Em Node.js, codifique os arquivos de áudio em base64 da seguinte maneira, sendo que audioFile
é o caminho para o arquivo de áudio codificado.
const fs = require('fs');
const content = fs.readFileSync(audioFile).toString('base64');
Java
No Java, use o método estático encodeBase64
dentro de
org.apache.commons.codec.binary.Base64
para codificar arquivos binários de codificação base64:
// Import the Base64 encoding library.
import org.apache.commons.codec.binary.Base64;
// Encode the speech.
byte[] encodedAudio = Base64.encodeBase64(audio.getBytes());