Sobre este codelab
1. Visão geral
Com a API Cloud Speech-to-Text, os desenvolvedores convertem áudio em texto em 120 idiomas e variantes ao aplicar modelos de rede neural avançados em uma API fácil de usar.
Neste codelab, você vai se concentrar no uso da API Speech-to-Text com Node.js. Você vai aprender a enviar um arquivo de áudio em inglês e outros idiomas à API Cloud Speech-to-Text para transcrição.
O que você vai aprender
- Como ativar a API Speech-to-Text
- Como autenticar solicitações de API
- Como instalar a biblioteca de cliente do Google Cloud para Node.js
- Como transcrever arquivos de áudio em inglês
- Como transcrever arquivos de áudio com carimbos de data/hora de palavras
- Como transcrever arquivos de áudio em diferentes idiomas
O que é necessário
- Um projeto do Google Cloud Platform
- Um navegador, como o Chrome ou o Firefox
- Familiaridade com JavaScript/Node.js
Pesquisa
Como você vai usar este tutorial?
Como você classificaria sua experiência com o Node.js?
Como você classificaria sua experiência com o uso dos serviços do Google Cloud Platform?
2. Configuração e requisitos
Configuração de ambiente autoguiada
- Faça login no Console do Cloud e crie um novo projeto ou reutilize um existente. Crie uma se você ainda não tiver uma conta do Gmail ou do G Suite.
Lembre-se do código do projeto, um nome exclusivo em todos os projetos do Google Cloud. O nome acima já foi escolhido e não servirá para você. Faremos referência a ele mais adiante neste codelab como PROJECT_ID
.
- Em seguida, será necessário ativar o faturamento no Console do Cloud para usar os recursos do Google Cloud.
A execução deste codelab não será muito cara, se for o caso. Siga todas as instruções na seção "Limpeza", que orienta você sobre como encerrar recursos para não incorrer em cobranças além deste tutorial. Novos usuários do Google Cloud estão qualificados para o programa de avaliação gratuita de US$ 300.
Inicie o Cloud Shell
Embora o Google Cloud e o Spanner possam ser operados remotamente do seu laptop, neste codelab usaremos o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.
Ativar o Cloud Shell
- No Console do Cloud, clique em Ativar o Cloud Shell
.
Se você nunca tiver iniciado o Cloud Shell, verá uma tela intermediária (abaixo da dobra) com a descrição do que ele é. Se esse for o caso, clique em Continuar e você não o verá novamente. Esta é uma tela única:
Leva apenas alguns instantes para provisionar e se conectar ao Cloud Shell.
Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Praticamente todo o seu trabalho neste codelab pode ser feito em um navegador ou no seu Chromebook.
Depois de se conectar ao Cloud Shell, você já estará autenticado e o projeto já estará configurado com seu ID do projeto.
- Execute o seguinte comando no Cloud Shell para confirmar que você está autenticado:
gcloud auth list
Resposta ao comando
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
Resposta ao comando
[core] project = <PROJECT_ID>
Se o projeto não estiver configurado, configure-o usando este comando:
gcloud config set project <PROJECT_ID>
Resposta ao comando
Updated property [core/project].
3. Ativar a API Speech-to-Text
Antes de começar a usar a API Speech-to-Text, você precisa ativá-la. É possível ativar a API usando o seguinte comando no Cloud Shell:
gcloud services enable speech.googleapis.com
4. Autenticar as solicitações de API
Para fazer solicitações à API Speech-to-Text, você precisa usar uma conta de serviço. Uma conta de serviço pertence ao seu projeto e é usada pela biblioteca Node.js do cliente do Google para fazer solicitações da API Speech-to-Text. Como qualquer outra conta de usuário, uma conta de serviço é representada por um endereço de e-mail. Nesta seção, você vai usar o SDK Cloud para criar uma conta de serviço e, em seguida, criar as credenciais necessárias para autenticar como a conta de serviço.
Primeiro, defina uma variável de ambiente com seu PROJECT_ID para usar neste codelab. Se você estiver usando o Cloud Shell, ela será definida automaticamente:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
Em seguida, crie uma nova conta de serviço para acessar a API Speech-to-Text usando:
gcloud iam service-accounts create my-speech-to-text-sa \
--display-name "my speech-to-text codelab service account"
Em seguida, crie credenciais que o código Node.js usará para fazer login como a nova conta de serviço. Crie essas credenciais e salve-as como um arquivo JSON ~/key.json
usando o seguinte comando:
gcloud iam service-accounts keys create ~/key.json \
--iam-account my-speech-to-text-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Por fim, defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS
, que é usada pela biblioteca Node.js da API Speech-to-Text, abordada na próxima etapa, para encontrar suas credenciais. A variável de ambiente deve ser definida para o caminho completo do arquivo JSON de credenciais que você criou. Para isso, use:
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
Leia mais sobre como autenticar a API Speech-to-Text.
5. Instalar a biblioteca de cliente da API Cloud Speech-to-Text para Node.js
Primeiro, crie um projeto que você vai usar para executar este laboratório da API Speech-to-Text e inicialize um novo pacote Node.js em uma pasta de sua escolha:
npm init
O NPM faz várias perguntas sobre a configuração do projeto, como nome e versão. Para cada pergunta, pressione ENTER
para aceitar os valores padrão. O ponto de entrada padrão é um arquivo chamado index.js
.
Em seguida, instale a biblioteca do Google Cloud Speech no projeto:
npm install --save @google-cloud/speech
Para mais instruções sobre como configurar um desenvolvimento em Node.js para o Google Cloud, consulte o Guia de configuração.
Agora, está tudo pronto para você usar a API Speech-to-Text.
6. Transcrever arquivos de áudio
Nesta seção, você vai transcrever um arquivo de áudio pré-gravado em inglês. O arquivo de áudio está disponível no Google Cloud Storage.
Navegue até o arquivo index.js
dentro do e substitua o código pelo seguinte:
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'LINEAR16',
sampleRateHertz: 16000,
languageCode: 'en-US',
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
.map(result => result.alternatives[0].transcript)
.join('\n');
console.log(`Transcription: ${transcription}`);
}
quickstart();
Reserve alguns minutos para estudar o código e ver que ele é usado para transcrever um arquivo de áudio*.*
O parâmetro Encoding
informa à API o tipo de codificação de áudio que você está usando para o arquivo de áudio. Flac
é o tipo de codificação usada com os arquivos .raw. Para mais detalhes, consulte o documento sobre o tipo de codificação.
No objeto RecognitionAudio
, é possível transmitir à API o URI do arquivo de áudio no Cloud Storage ou o caminho do arquivo local. Estamos usando um URI do Cloud Storage.
Execute o programa:
node .
Você verá esta resposta:
how old is the Brooklyn Bridge
7. Transcrever com carimbos de data/hora de palavras
A Speech-to-Text pode detectar ajustes de horário (carimbo de data/hora) para o áudio transcrito. Os ajustes de horário mostram o início e o fim de cada palavra falada no áudio fornecido. Um valor de ajuste de horário representa a quantidade de tempo decorrido desde o início do áudio, em incrementos de 100 ms.
Navegue até o arquivo index.js
dentro do e substitua o código pelo seguinte:
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'LINEAR16',
sampleRateHertz: 16000,
languageCode: 'en-US',
enableWordTimeOffsets: true,
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
response.results.forEach((result) => {
result.alternatives.forEach((alternative) => {
console.log(`Transcript: ${alternative.transcript}`);
console.log(`Word details:`);
console.log(` Word count ${alternative.words.length}`);
alternative.words.forEach((item) => {
console.log(` ${item.word}`);
const s = parseInt(item.startTime.seconds) +
item.startTime.nanos/1000000000;
console.log(` WordStartTime: ${s}s`);
const e = parseInt(item.endTime.seconds) +
item.endTime.nanos/1000000000;
console.log(` WordEndTime: ${e}s`);
});
});
});
}
quickstart();
Reserve alguns minutos para estudar o código e conferir que ele é usado para transcrever um arquivo de áudio com marcações de tempo de palavras*.* O parâmetro EnableWordTimeOffsets
instrui a API a ativar os ajustes de horário. Consulte o documento para mais detalhes.
Execute o programa novamente:
node .
Você verá esta resposta:
Transcript: how old is the Brooklyn Bridge
Word details:
Word count 6
how
WordStartTime: 0s
WordEndTime: 0.3s
old
WordStartTime: 0.3s
WordEndTime: 0.6s
is
WordStartTime: 0.6s
WordEndTime: 0.8s
the
WordStartTime: 0.8s
WordEndTime: 0.9s
Brooklyn
WordStartTime: 0.9s
WordEndTime: 1.1s
Bridge
WordStartTime: 1.1s
WordEndTime: 1.4s
8. Transcrever idiomas diferentes
A API Speech-to-Text oferece suporte à transcrição em mais de 100 idiomas. Confira uma lista de idiomas compatíveis neste link.
Nesta seção, você vai transcrever um arquivo de áudio pré-gravado em francês. O arquivo de áudio está disponível no Google Cloud Storage.
Navegue até o arquivo index.js
dentro do e substitua o código pelo seguinte:
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/corbeau_renard.flac';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'FLAC',
languageCode: 'fr-FR',
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
.map((result) => result.alternatives[0].transcript)
.join('\n');
console.log(`Transcription: ${transcription}`);
}
quickstart();
Execute o programa novamente. A saída a seguir será exibida:
maître corbeau sur un arbre perché tenait en son bec un fromage
Essa é uma frase de um famoso conto infantil francês.
Para conferir a lista completa de idiomas compatíveis e códigos de idioma, consulte a documentação aqui.
9. Parabéns!
Você aprendeu a usar a API Speech-to-Text com Node.js para realizar diferentes tipos de transcrição em arquivos de áudio.
Limpar
Para evitar a cobrança na sua conta do Google Cloud Platform pelo uso de recursos neste guia de início rápido, siga estas etapas:
- Acesse o console do Cloud Platform.
- Selecione o projeto que você quer encerrar e clique em "Excluir". Na parte superior: isso programa a exclusão do projeto.
Saiba mais
- API Cloud Speech-to-Text: https://cloud.google.com/speech-to-text/docs
- Node.js no Google Cloud Platform: https://cloud.google.com/nodejs/
- Cliente Node.js do Google Cloud: https://googlecloudplatform.github.io/google-cloud-node/
Licença
Este conteúdo está sob a licença Atribuição 2.0 Genérica da Creative Commons.