Objetivos
Transmitir o texto reconhecido pela API Cloud Vision para a API Cloud Translation.
Criar e usar glossários do Cloud Translation para personalizar as traduções da API Cloud Translation.
Criar uma representação de áudio do texto traduzido usando a API Text-to-Speech.
Custos
Cada API do Google Cloud tem uma estrutura de preços diferente.Para detalhes sobre preços, consulte os respectivos guias do Cloud Vision, do Cloud Translation e do Text-to-Speech.
Antes de começar
Você precisa ter o seguinte:- Um projeto no Console do Google Cloud em que a API Vision, a API Cloud Translation e a API Text-to-Speech estejam ativadas.
- Noções básicas de programação em Python ou NodeJS
Como configurar bibliotecas de cliente
Neste tutorial, as bibliotecas de cliente do Vision, Translation e Text-to-Speech são usadas.
Para instalar as bibliotecas de cliente necessárias, execute os comandos a seguir no terminal.
Python
pip install --upgrade google-cloud-vision pip install --upgrade google-cloud-translate pip install --upgrade google-cloud-texttospeech
Node.js
npm install --save @google-cloud/vision npm install --save @google-cloud/translate npm install --save @google-cloud/text-to-speech
Como definir permissões para criar o glossário
Para criar glossários do Translation, é preciso usar uma chave de conta de serviço que tenha as permissões de editor da API Cloud Translation.
Para configurar uma chave de conta de serviço com as permissões do editor da API Cloud Translation, faça o seguinte:
Crie uma conta de serviço:
No Console do Google Cloud, acesse a página Contas de serviço.
Selecione o projeto.
Clique em
Criar conta de serviço.No campo Nome da conta de serviço, insira um nome. O console do Google Cloud preenche o campo ID da conta de serviço com base nesse nome.
Opcional: preencha o campo Descrição da conta de serviço.
Clique em Criar e continuar.
Clique no campo Selecionar papel e selecione Cloud Translation > Editor da API Cloud Translation.
Clique em Concluído para terminar a criação da conta de serviço.
Não feche a janela do navegador. Você vai usá-la na próxima etapa.
Faça o download de uma chave JSON para a conta de serviço que você acabou de criar:
- No console do Google Cloud, clique no endereço de e-mail da conta de serviço que você criou.
- Clique em Chaves.
- Clique em Adicionar chave e em Criar nova chave.
Clique em Criar. O download de um arquivo de chave JSON é feito no seu computador.
Armazene o arquivo de chave com segurança, porque ele pode ser usado para autenticar como sua conta de serviço. Mova e renomeie esse arquivo como quiser.
Clique em Fechar.
No terminal, defina a variável GOOGLE_APPLICATION_CREDENTIALS usando o comando a seguir. Substitua path_to_key pelo caminho para o arquivo JSON transferido por download que contém a nova chave de conta de serviço.
Linux ou macOS
export GOOGLE_APPLICATION_CREDENTIALS=path_to_key
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path_to_key
Como importar bibliotecas
Neste tutorial, as importações de sistema e de biblioteca de cliente a seguir são usadas.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do Cloud Translation: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Cloud Translation em Python.
Para autenticar no Cloud Translation, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do Cloud Translation: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Cloud Translation em Node.js.
Para autenticar no Cloud Translation, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Como definir o ID do projeto
É preciso associar um projeto do Google Cloud a cada solicitação feita a uma API do Google Cloud. Para escolher o projeto do Google Cloud, defina a variável de ambiente GCLOUD_PROJECT
no terminal.
Substitua project-id pelo ID do projeto do Google Cloud com o comando a seguir. Execute o comando a seguir no terminal.
Linux ou macOS
export GCLOUD_PROJECT=project-id
Windows
set GCLOUD_PROJECT=project-id
Como usar o Vision para detectar o texto de uma imagem
Use a API Vision para detectar e extrair o texto de uma imagem.
A API Vision usa o Reconhecimento ótico de caracteres (OCR, na sigla em inglês) para fornecer dois recursos de detecção de texto: detecção de textos densos ou DOCUMENT_TEXT_DETECTION
e a detecção de textos esparsos ou TEXT_DETECTION
.
Veja no código a seguir como usar o recurso
DOCUMENT_TEXT_DETECTION
da API Vision para detectar
o texto em uma foto com texto denso.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do Cloud Translation: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Cloud Translation em Python.
Para autenticar no Cloud Translation, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do Cloud Translation: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Cloud Translation em Node.js.
Para autenticar no Cloud Translation, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Como usar o Translation com glossários
Após extrair o texto de uma imagem, use glossários do Translation para personalizar a tradução dele. Os glossários fornecem traduções predefinidas que modificam as traduções de certos termos da API Cloud Translation.
Os casos de uso do glossário incluem o seguinte:
Nomes de produtos: por exemplo, Google Home precisa ser mantido como "Google Home".
Palavras ambíguas: por exemplo, a palavra "bat" pode significar um equipamento esportivo ou um animal. Se você souber que está traduzindo palavras sobre esporte, usará um glossário para alimentar a API Cloud Translation com a tradução esportiva de "bat", não com a de animal.
Palavras emprestadas: do francês para o inglês, "bouillabaisse" é traduzido como "bouillabaisse". A língua inglesa pegou emprestada a palavra "bouillabaisse" do francês. Um falante de inglês sem o contexto cultural francês pode não saber que "bouillabaisse" é um prato típico de ensopado de peixe. Com os glossários, é possível substituir uma tradução para que "bouillabaisse", em francês, seja traduzido como "fish stew" (ensopado de peixe).
Como criar um arquivo de glossário
A API Cloud Translation aceita arquivos de glossário TSV, CSV ou TMX. Neste tutorial, um arquivo CSV enviado ao Cloud Storage é usado para definir conjuntos de termos equivalentes.
Para criar um arquivo CSV do glossário:
Defina o idioma de uma coluna usando os códigos ISO-639 ou BCP-47 na primeira linha do arquivo CSV.
fr,en,
Liste pares de termos equivalentes em cada linha do arquivo CSV. Separe os termos com vírgulas. No exemplo a seguir, a tradução em inglês de várias palavras francesas sobre culinária é definida.
fr,en, chèvre,goat cheese, crème brulée,crème brulée, bouillabaisse,fish stew, steak frites,steak with french fries,
Defina variantes de uma palavra. A API Cloud Translation diferencia maiúsculas e minúsculas, além de caracteres especiais, como palavras acentuadas. Defina explicitamente várias grafias de uma palavra para garantir que o glossário processe as variações dela.
fr,en, chevre,goat cheese, Chevre,Goat cheese, chèvre,goat cheese, Chèvre,Goat cheese, crème brulée,crème brulée, Crème brulée,Crème brulée, Crème Brulée,Crème Brulée, bouillabaisse,fish stew, Bouillabaisse,Fish stew, steak frites,steak with french fries, Steak frites,Steak with french fries, Steak Frites,Steak with French Fries,
Faça upload do glossário para um bucket do Cloud Storage. Neste tutorial, você não precisa fazer upload de um arquivo de glossário para um bucket do Cloud Storage nem criar esse bucket. Em vez disso, use o arquivo de glossário disponível publicamente. Ele foi criado para que não sejam gerados custos do Cloud Storage. Envie o URI de um arquivo de glossário no Cloud Storage para a API Cloud Translation para criar um recurso de glossário. O URI do arquivo de glossário disponível publicamente neste tutorial é gs://cloud-samples-data/translation/bistro_glossary.csv. Para fazer o download do glossário, clique no link do URI acima, mas não o abra em uma nova guia.
Como criar um recurso de glossário
Para usar um glossário, é preciso criar um recurso correspondente com a API Cloud Translation. Para criar um recurso de glossário, envie o URI de um arquivo de glossário no Cloud Storage para a API Cloud Translation.
Verifique se você está usando uma conta de serviço com as permissões de editor da API Cloud Translation e se definiu o ID do projeto no terminal.
Com a função a seguir, você cria um recurso de glossário. Com ele, será possível personalizar a solicitação de tradução na próxima etapa deste tutorial.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do Cloud Translation: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Cloud Translation em Python.
Para autenticar no Cloud Translation, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do Cloud Translation: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Cloud Translation em Node.js.
Para autenticar no Cloud Translation, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Como traduzir com glossários
Depois de criar um recurso de glossário, é possível usá-lo para personalizar traduções de textos enviados para a API Cloud Translation.
A função a seguir usa o recurso de glossário já criado para personalizar a tradução do texto.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do Cloud Translation: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Cloud Translation em Python.
Para autenticar no Cloud Translation, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do Cloud Translation: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Cloud Translation em Node.js.
Para autenticar no Cloud Translation, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Como usar o Text-to-Speech com a linguagem de marcação de síntese de fala
Agora que você personalizou uma tradução de texto detectado por imagem, use a API Text-to-Speech. Com ela, é possível criar áudios sintéticos do texto traduzido.
A API Text-to-Speech gera um áudio sintético a partir de uma string de texto simples ou marcada com a linguagem de marcação de síntese de fala (SSML, na sigla em inglês). A SSML é compatível com a anotação de texto com tags correspondentes. Use essas tags para determinar como a API Text-to-Speech formata a criação de fala sintética.
A função a seguir converte uma string de SSML em um arquivo MP3 de fala sintética.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do Cloud Translation: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Cloud Translation em Python.
Para autenticar no Cloud Translation, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do Cloud Translation: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Cloud Translation em Node.js.
Para autenticar no Cloud Translation, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Como tudo funciona em conjunto
Nas etapas anteriores, você definiu funções em hybrid_glossaries.py
que usam o Vision, o Translation e o Text-to-Speech. Agora, utilize-as para gerar a fala sintética do texto traduzido da foto a seguir.
O código a seguir chama funções definidas em hybrid_glossaries.py
para:
criar um recurso de glossário da API Cloud Translation;
usar a API Vision para detectar o texto na imagem acima;
realizar uma tradução do glossário da API Cloud Translation do texto detectado;
gerar a fala sintética do Text-to-Speech do texto traduzido.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do Cloud Translation: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Cloud Translation em Python.
Para autenticar no Cloud Translation, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do Cloud Translation: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Cloud Translation em Node.js.
Para autenticar no Cloud Translation, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Como executar o código
Para executar o código, digite o seguinte comando no terminal no diretório em que o código está localizado:
Python
python hybrid_tutorial.py
Node.js
node hybridGlossaries.js
A seguinte resposta é exibida:
Created glossary bistro-glossary. Audio content written to file resources/example.mp3
Depois de executar o código, navegue até o diretório resources no diretório hybrid_glossaries.
Verifique o diretório de recursos de um arquivo example.mp3
.
Ouça o áudio a seguir para verificar se o arquivo example.mp3
é igual.
Como solucionar mensagens de erro
403 IAM permission 'cloudtranslate.glossaries.create' denied.
Essa exceção é gerada pelo uso de uma chave de conta de serviço sem as permissões de editor da API Cloud Translation.
KeyError: 'GCLOUD_PROJECT'
Esse erro é gerado ao não configurar a variável GCLOUD_PROJECT.
400 Invalid resource name project id
Essa exceção é gerada pelo uso de um nome de glossário que contenha caracteres diferentes de letras minúsculas, dígitos, pontos, dois-pontos e hifens ou de uma chave da conta de serviço sem as permissões de editor da API Cloud Translation.
File filename was not found.
Essa exceção é gerada pela definição da variável GOOGLE_APPLICATION_CREDENTIALS em um caminho de arquivo inválido.
Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or explicitly create credentials and re-run the application
Essa exceção é gerada ao não configurar a variável GOOGLE_APPLICATION_CREDENTIALS.
Forbidden: 403 POST API has not been used or is disabled
Esse aviso é gerado ao chamar a API Cloud Translation, a API Cloud Vision ou a API Text-to-Speech sem ativar as APIs.
AttributeError: 'module' object has no attribute 'escape'
O Python 2.7.10 ou anterior não é compatível com
HTML
. Para corrigir esse erro, use um ambiente virtual em Python (em inglês). Ele usará a versão mais recente do Python.UnicodeEncodeError
O Python 2.7.10 ou anterior não é compatível com
HTML
. Para corrigir esse erro, use um ambiente virtual em Python (em inglês). Ele usará a versão mais recente do Python.
Limpeza
Se você não precisar do projeto, use o Console do Google Cloud para excluí-lo. A exclusão do projeto evita outros custos da conta de faturamento do Cloud pelos recursos usados neste tutorial.
Como excluir o projeto
- No console do Google Cloud, abra a página "Projetos".
- Na lista de projetos, selecione um e clique em Excluir.
- Na caixa de diálogo, insira o ID do projeto e clique em Encerrar para excluí-lo.
A seguir
Parabéns! Você acabou de usar o OCR da Vision para detectar texto em uma imagem. Depois, você criou um glossário do Translation e gerou uma tradução com ele. E então, usou o Text-to-Speech para gerar um áudio sintético do texto traduzido.
Para desenvolver seus conhecimentos sobre o Vision, o Translation e a conversão de texto em voz:
- Crie seu próprio glossário. Saiba como criar um bucket do Cloud Storage e fazer upload do arquivo CSV do glossário no bucket.
- Tente outras formas de usar os glossários do Translation.
- Saiba como usar o Cloud Storage com o OCR do Cloud Vision.
- Saiba mais sobre como usar a SSML com o Text-to-Speech.
- Saiba como usar o
campo
imageContext
da API Vision para transmitir outros contextos sobre uma foto ao usar o OCR do Vision. - Veja os tutoriais da comunidade.