Veja neste tutorial como realizar uma verificação de simulação nos arquivos de áudio que você está preparando para usar com a Conversão de voz em texto.
Ele fornece informações sobre formatos de arquivos de áudio, descreve como otimizar arquivos de áudio para uso com a Conversão de voz em texto e como diagnosticar erros. O tutorial foi desenvolvido para profissionais de mídia e entretenimento não técnicos e profissionais de pós-produção. Ele não requer conhecimento profundo do Google Cloud; é necessário apenas conhecimento básico de como usar a ferramenta de linha de comando gcloud
com arquivos armazenados localmente e em um bucket do Cloud Storage.
Objetivos
- Instale a ferramenta FFMPEG.
- Faça o download dos arquivos de mídia de amostra.
- Reproduza arquivos de áudio e vídeo usando o FFMPEG.
- Extrair, transcodificar e converter propriedades de arquivos de áudio usando o FFMPEG.
- Execute a Conversão de voz em texto em uma variedade de arquivos de amostra que contém uma caixa de diálogo.
Custos
Neste tutorial, usamos o seguinte componente faturável do Google Cloud:
Use a calculadora de preços para gerar uma estimativa de custo com base no uso previsto.
Antes de começar
- 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
Neste tutorial, você usa o Cloud Shell para executar os procedimentos, como a cópia de dados de um bucket do Cloud Storage para a sessão do Cloud Shell. O Cloud Shell é um ambiente shell com o Google Cloud CLI já instalado. Você vai usar a CLI gcloud para várias etapas deste tutorial. Você também instala softwares e arquivos de áudio de amostra na máquina local e executa esses mesmos exercícios no terminal, conforme descrito posteriormente na seção Como executar exemplos de tutorial em um terminal local.
Visão geral
Neste tutorial, use o FFMPEG, uma ferramenta de código aberto para gravação, conversão e streaming de áudio e vídeo. O tutorial fornece mais informações sobre essa ferramenta posteriormente.
Entender os atributos do arquivo de som
Nesta seção, descrevemos tipos de arquivos de áudio típicos, taxas de amostragem, profundidade de bits e gravação de mídia encontrada em fluxos de trabalho de produção e pós-produção de mídia.
Para ter os melhores resultados da Conversão de voz em texto, verifique se os arquivos usados para transcrição são arquivos mono que atendem a determinadas especificações mínimas, conforme descrito posteriormente. Se os arquivos não atenderem às especificações, talvez seja necessário gerar arquivos modificados. Por exemplo, talvez seja necessário fazer o seguinte:
- Extraia os dados de áudio de um arquivo de vídeo.
- Extraia uma única faixa mono de um arquivo de áudio com várias faixas.
- Faça a transcodificação de um codec de áudio para outro codec mais adequado para a Conversão de voz em texto.
Taxa de amostragem (intervalo de frequência)
A taxa de amostragem determina o intervalo de frequência do arquivo de áudio. Ela é baseada no número de amostras por segundo que constituem o arquivo de áudio. Normalmente, a maior frequência reproduzível de um arquivo de áudio digital equivale à metade da taxa de amostragem. Por exemplo, a frequência mais alta que pode ser reproduzida de um arquivo de áudio de 44,1 kHz é de aproximadamente 22 kHz, que está na extremidade superior do intervalo da resposta de frequência de um ouvinte típico.
As taxas de amostragem em telefonia e telecomunicações tendem a estar na faixa de 8 kHz a 16 kHz. Neste tutorial, focamos em formatos específicos para o setor de mídia e entretenimento, que normalmente são superiores a 16 kHz. Para mais informações sobre telefonia e outros aplicativos de som, consulte Como transcrever o áudio do telefone com modelos aprimorados.
Recomendamos uma taxa de amostragem de pelo menos 16 kHz nos arquivos de áudio que você usa para transcrição com a Conversão de voz em texto. As taxas de amostra encontradas em arquivos de áudio são normalmente de 16 kHz, 32 kHz, 44, 1 kHz e 48 kHz. Como a inteligibilidade é muito afetada pelo intervalo de frequência, especialmente nas altas frequências, uma taxa de amostragem inferior a 16 kHz resulta em um arquivo de áudio com pouca ou nenhuma informação acima de 8 kHz. Isso pode impedir que a Conversão de voz em texto possa transcrever corretamente o áudio falado. A inteligibilidade de voz requer informações em todo o intervalo de 2 kHz a 4 kHz, ainda que os harmônicos (múltiplos) dessas frequências no intervalo superior também sejam importantes para preservar a inteligibilidade de voz. Portanto, é uma boa prática manter a taxa de amostragem para um mínimo de 16 kHz.
É possível converter de uma taxa de amostragem para outra. No entanto, não há benefícios em aumentar a amostragem do áudio, porque as informações de intervalo de frequência são limitadas pela taxa de amostragem mais baixa e não podem ser recuperadas ao converter para uma taxa de amostragem maior. Isso significa que o aumento da amostragem de 8 kHz a 44,1 kHz limitaria o intervalo de frequência reproduzível à metade da taxa de amostragem mais baixa, ou aproximadamente 4 kHz. Neste tutorial, você ouve os arquivos de áudio gravados com várias taxas de amostragem e profundidades de bits para ouvir a diferença.
Profundidade de bits (intervalo dinâmico)
A profundidade de bits do arquivo de áudio determina o intervalo entre os sons mais baixos e os mais altos, bem como a proporção sinal/ruído do arquivo. O intervalo dinâmico afeta menos a qualidade da transcrição do que a resposta de frequência, mas profundidades de bits iguais ou inferiores a 8 bits podem causar ruído de quantização excessivo na faixa de áudio, dificultando a transcrição precisa. Os erros de quantização são erros de arredondamento entre o sinal de entrada analógico e o mapeamento do valor de saída digital desse sinal. Os erros causam uma distorção audível que afeta diretamente a fidelidade do som. A profundidade de bits recomendada para análise com a conversão de voz em texto é de 16 bits ou mais. Assim como na frequência de amostragem, não há vantagem em converter a profundidade de bits de 8 para 16 bits, porque as informações do intervalo dinâmico são limitadas ao formato original de 8 bits.
Mídia de gravação
A mídia de gravação original também pode afetar a qualidade do arquivo de áudio. Por exemplo, o conteúdo de áudio que foi gravado originalmente em fita magnética pode ter um assobio em segundo plano incorporado no arquivo. Em alguns casos, pode ser necessário pré-processar o áudio com ruído para conseguir melhores resultados no processo de transcrição ao usar a Conversão de voz em texto. O tratamento de gravações com ruído e a interferência de ruído em segundo plano estão além do escopo deste tutorial. Para mais informações, consulte Práticas recomendadas na documentação da Conversão de voz em texto.
Introdução ao FFMPEG
Neste tutorial, você usará o FFMPEG para trabalhar com arquivos de áudio. O conjunto de ferramentas FFMPEG oferece uma ampla variedade de funções que incluem os itens a seguir:
- Reproduzir um arquivo de áudio ou vídeo.
- Converter arquivos de áudio em um dos codecs reconhecidos pela Conversão de voz em texto.
- Converter taxas de amostragem e taxas de bits de arquivo de áudio em configurações otimizadas para análise pela Conversão de voz em texto.
- Extrair faixas de áudio individuais ou streams de um arquivo de stream de transporte ou arquivo de vídeo.
- Como dividir arquivos estéreo em dois arquivos mono.
- Como dividir arquivos de áudio 5.1 em seis arquivos mono.
- Como aplicar equalização e filtragem para melhorar a clareza do áudio.
Você também pode usar a função ffprobe (em inglês) do FFMPEG para revelar metadados associados a um arquivo de mídia. Isso é importante quando você quer diagnosticar problemas relacionados a tipos de arquivos e formatos para análise de machine learning.
Codecs reconhecidos pela conversão de voz em texto
Embora a Conversão de voz em texto reconheça vários formatos de arquivo de áudio, ele pode não ler ou analisar determinados codecs corretamente. No tutorial, mostramos como verificar se o conteúdo está em um dos formatos de arquivo compatíveis.
No tutorial, você lê as informações de metadados para revelar e corrigir problemas possíveis antes de usar a Conversão de voz em texto. As mesmas ferramentas permitem converter o arquivo em um formato compatível se você descobrir uma incompatibilidade.
A Conversão de voz em texto reconhece os codecs a seguir:
- FLAC: codec de áudio livre sem perdas
- LINEAR16: um formato de modulação por código de pulsos não compactado (PCM) usado em contêineres WAV, AIFF, AU e RAW
- MulaW: um codec PCM projetado para telecomunicações nos EUA e no Japão
- AMR: um codec adaptável de várias taxas projetado para voz
- AMR_WB: uma variação de banda larga da AMR com o dobro da largura de banda da AMR
- OGG_OPUS: um codec com perdas projetado para aplicativos de baixa latência
- SPEEX_With_HEADER_BYTE: um codex projetado para aplicativos de voz sobre IP (VOIP)
É importante entender que codecs e formatos do arquivo não são iguais. A extensão de nome de arquivo não indica necessariamente que o codec usado na criação do arquivo pode ser lido pela Conversão de voz em texto.
Neste tutorial, focamos nos codecs FLAC e LINEAR16, porque eles são frequentemente encontrados em ambientes de fluxo de trabalho de mídia. Ambos são formatos sem perdas.
Se você usar arquivos WAV (no formato PCM linear não compactado) com a conversão de voz em texto, os arquivos precisam ter uma profundidade máxima de 16 bits e ser codificados em um formato de ponto não flutuante. A extensão de nome de arquivo .wav
não garante que o arquivo possa ser lido pela Conversão de voz em texto. Na
seção Otimizar arquivos de áudio para
análise deste tutorial, fornecemos um exemplo de como converter o arquivo de
ponto flutuante em bit inteiro (assinatura) para transcrever o arquivo em
Conversão de voz em texto.
Inicializar seu ambiente
Antes de executar as tarefas deste tutorial, você precisa inicializar seu ambiente para instalar o FFMPEG, configurar algumas variáveis de ambiente e fazer o download de arquivos de áudio. Você usa arquivos de mídia armazenados em uma instância do Cloud Shell e em um bucket do Cloud Storage. O uso de fontes diferentes permite que você trabalhe com diferentes recursos da Conversão de voz em texto.
Nesta seção, você instala o FFMPEG e configura variáveis de ambiente que apontam para os locais de armazenamento de dados de amostra no armazenamento da instância do Cloud Shell e em um bucket do Cloud Storage. Os arquivos de mídia são os mesmos nos dois locais, e alguns exemplos neste tutorial acessam arquivos do Cloud Shell e do bucket do Cloud Storage. É possível instalar o FFMPEG na máquina local e executar esses mesmos exercícios, conforme descrito posteriormente na seção Como executar exemplos de tutorial em um terminal local.
-
In the Google Cloud console, activate Cloud Shell.
No Cloud Shell, instale a versão atual do FFMPEG:
sudo apt update sudo apt install ffmpeg
Verifique se o FFMPEG está instalado:
ffmpeg -version
Se um número de versão for exibido, a instalação foi bem-sucedida.
Crie um diretório para os arquivos do projeto:
mkdir project_files
Crie um diretório para os arquivos de saída que você criará em uma etapa posterior:
mkdir output
Faça o download dos arquivos do áudio de amostra:
gcloud storage cp gs://cloud-samples-data/speech/project_files/*.* ~/project_files/
Crie uma variável de ambiente para o nome do bucket do Cloud Storage:
export GCS_BUCKET_PATH=gs://cloud-samples-data/speech/project_files
Crie uma variável de ambiente para o caminho do diretório da instância do Cloud Shell que direcione para os arquivos de áudio de amostra salvos:
export PROJECT_FILES=~/project_files
Examinar metadados em arquivos de mídia
Ao analisar arquivos de áudio ou vídeo com a Conversão de voz em texto, é preciso conhecer os detalhes dos metadados do arquivo. Isso ajuda a identificar inconsistências ou parâmetros incompatíveis que podem causar problemas.
Nesta seção, use o comando ffprobe
no FFMPEG para examinar os metadados de vários arquivos de mídia para entender as especificações de um arquivo.
No Cloud Shell, revele os metadados do arquivo
HumptyDumptySample4416.flac
:ffprobe $PROJECT_FILES/HumptyDumptySample4416.flac
A saída é esta:
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
Essa saída indica os seguintes metadados sobre o arquivo:
- A duração do arquivo de áudio é de 26,28 segundos.
- A taxa de bits é de 283 KB por segundo.
- O formato do codec é FLAC.
- A taxa de amostragem é de 44,1 kHz.
- O arquivo é um arquivo mono de canal único.
- A profundidade de bits é 16 bits (número inteiro assinado).
Revele metadados para o arquivo
HumptyDumptySampleStereo.flac
:ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flac
A saída é esta:
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
As diferenças entre este arquivo e o anterior é que este é um arquivo estéreo com uma taxa de bits maior (378 KB/segundo, em vez de 283 KB/segundo), porque contém dois canais em vez de uma faixa mono. Todos os outros valores são iguais.
Verifique o número de canais em um arquivo de áudio que você quer processar usando a Conversão de voz em texto. Os arquivos de áudio precisam ter apenas um canal de áudio. Para transcrever vários canais de áudio no mesmo arquivo, recomendamos que você faça o script dos comandos conforme descrito posteriormente na seção Otimizar arquivos de áudio para análise.
Revele metadados para um arquivo de mixagem de áudio 5.1:
ffprobe $PROJECT_FILES/Alice_51_sample_mix.aif
A saída é esta:
Duration: 00:00:58.27, bitrate: 4610 kb/s Stream #0:0: Audio: pcm_s16be, 48000 Hz, 5.1, s16, 4608 kb/s
Como esse arquivo está em um formato diferente do arquivo mono ou estéreo, você verá informações adicionais. Nesse caso, o áudio está em um formato PCM linear, gravado a uma taxa de amostragem de 44,1 kHz e a uma taxa de 16 bits (número inteiro assinado, little endian).
Observe a designação
5.1
. A taxa de dados de 4608 Kbits por segundo neste arquivo é significativamente maior do que a taxa de qualquer um dos exemplos anteriores, porque o arquivo de áudio contém seis faixas de áudio.Mais adiante neste tutorial, você verá como esse arquivo causa erros quando você tenta transcrevê-lo usando a Conversão de voz em texto. Mais importante, você verá como otimizar o arquivo para usá-lo com a Conversão de voz em texto sem erros.
Otimizar arquivos de áudio para análise
Como mencionado anteriormente, quando você usa a Conversão de voz em texto, os arquivos de áudio precisam ser arquivos mono de canal único para evitar erros no processo de transcrição. Na tabela a seguir, mostramos formatos de áudio comuns e o processo de conversão para converter arquivos mono para processamento.
Formato de áudio atual | Processo de conversão | Formato de áudio de saída |
---|---|---|
Mono | Nenhuma extração necessária | FLAC ou LINEAR16 |
Estéreo | Dividido em dois arquivos mono ou downmix em um arquivo mono | FLAC ou LINEAR16 |
Múltiplas faixas (5.1) | Dividir em seis arquivos mono | FLAC ou LINEAR16 |
Áudio/vídeo com vários streams | Dividir em arquivos mono separados | FLAC ou LINEAR16 |
Para processar arquivos com várias faixas de áudio, você extrai as faixas mono do arquivo estéreo usando o FFMPEG ou outras ferramentas de edição de áudio. Como alternativa, é possível automatizar o processo conforme descrito na seção Como transcrever áudio com vários canais da documentação da Conversão de voz em texto. Para este tutorial, você explora a opção de usar o FFMPEG para extrair faixas mono individuais do arquivo estéreo.
Conforme mostrado na seção anterior, é possível usar o comando ffprobe
para determinar quantos canais de áudio existem em um arquivo e usar o comando ffmpeg
para extrair ou converter o arquivo em um formato mono, se necessário.
Visualizar um erro com base em um formato inválido
Para ver como um formato incorreto afeta a transcrição, tente executar a Conversão de voz em texto em um arquivo que não esteja no formato mono.
No Cloud Shell, execute a Conversão de voz em texto no arquivo
HumptyDumptySampleStereo.flac
:gcloud ml speech recognize $PROJECT_FILES/HumptyDumptySampleStereo.flac \ --language-code='en-US'
A saída é esta:
ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Invalid audio channel count
Embora o formato do codec, a taxa de amostragem e a profundidade de bits do arquivo estejam corretos, o descritor estéreo indica que existem duas faixas no arquivo de áudio. Portanto, executar a Conversão de voz em texto causa um erro
Invalid audio channel count
.Execute o comando
ffprobe
no arquivo:ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flac
A saída é esta:
Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
Isso revela que o erro da Conversão de voz em texto foi causado por uma tentativa de processar um arquivo estéreo
Para informações sobre como gerenciar arquivos estéreo por meio de scripts, consulte Como transcrever áudio com vários canais na documentação da Conversão de voz em texto.
Dividir um arquivo estéreo em vários arquivos mono FLAC
Um exemplo de como evitar o erro de várias faixas é extrair duas faixas mono de um arquivo de áudio estéreo. As faixas resultantes estão no formato FLAC e são gravadas no diretório de saída. Ao extrair dois arquivos mono de um arquivo estéreo, é recomendável criar nomes para os arquivos extraídos que indiquem o local do canal do arquivo original. Por exemplo, no procedimento a seguir, você escolhe o canal esquerdo usando o sufixo FL
e o direito usando o sufixo FR
.
Se a amostra de áudio a ser transcrita estiver nos dois canais, apenas um canal será usado para a transcrição. No entanto, se diferentes alto-falantes forem gravados em canais diferentes, recomendamos que você transcreva os canais separadamente. A Conversão de voz em texto pode reconhecer várias vozes em uma única gravação. No entanto, isolar cada voz em canais separados resulta em níveis de confiança maiores na transcrição. O nível de confiança também é conhecido como taxa de erro de palavras (ou WER, na sigla em inglês) no reconhecimento de fala. Para mais informações sobre como trabalhar com várias vozes na mesma gravação, consulte Como separar interlocutores diferentes em uma gravação de áudio na documentação da Conversão de voz em texto.
No Cloud Shell, divida o arquivo estéreo
HumptyDumptySampleStereo.flac
em dois arquivos 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
A saída é a seguinte, que mostra os arquivos mono
HumptyDumptySample_FL.flac
(canal frontal esquerdo) eHumptyDumptySample_FR.flac
(canal frontal direito).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
Este arquivo agora está otimizado para a Conversão de voz em texto.
Dividir um arquivo de áudio 5.1 em vários arquivos mono
Outro exemplo de como otimizar arquivos de áudio é dividir arquivos de áudio 5.1 em arquivos mono FLAC individuais. Ao se referir a canais em uma mixagem de diversos canais, como uma mixagem 5.1, as designações de nome de arquivo normalmente são diferentes dos arquivos estéreo ou mono. O arquivo do canal esquerdo normalmente é designado como FL
para o frontal esquerdo, e o canal direito é designado como FR
para o frontal direito. Os canais restantes de um mix 5.1 são chamados aqui de FC
para o frontal central, LFE
para efeitos de baixa frequência, BL
para o traseiro esquerdo (também conhecido como surround esquerdo) e BR
para o traseiro direito (também conhecido como surround direito). Essas não são designações padrão, mas são práticas recomendadas para identificar a origem de um arquivo de som.
Normalmente, em arquivos de áudio com vários canais para filmes e televisão, o diálogo principal é transmitido pelo canal central frontal. Geralmente, esse é o arquivo a ser escolhido quando você usa a Conversão de voz em texto, porque ele normalmente contém a maior parte do diálogo na mixagem.
Em um ambiente de pós-produção, os elementos principais do diálogo, da música e dos efeitos são divididos em grupos chamados radicais para que todo o diálogo seja separado da música e dos efeitos até que a mixagem final seja feita. Como o radical do diálogo consiste apenas em diálogo, a Conversão de voz em texto fornece melhores resultados ao transcrevê-lo, em vez de tentar extrair o canal central de uma mixagem final. Isso ocorre porque um canal central extraído pode ser mixado com sons que não são de diálogo, o que causa a falta de inteligibilidade.
No Cloud Shell, divida o arquivo
Alice_51_sample_mix.aif
em arquivos FLAC, especificando os nomes dos arquivos de saída para cada canal: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
A saída é esta:
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 (...)
Clique no arquivo a seguir para ouvi-lo. Esse arquivo está no bucket do Cloud Storage e, quando você clica no nome, o arquivo é reproduzido em uma guia nova no navegador.
Alice_mono_downmix.flac
Ouça o FC (arquivo somente do canal central) que você acabou de criar. O diálogo é iniciado após alguns segundos de silêncio.
Alice_FC.flac
Observe a diferença de clareza do arquivo anterior. Essa faixa é baseada somente na parte do diálogo da mixagem.
Testar a qualidade do arquivo de áudio
Antes de converter os arquivos de mídia usando a Conversão de voz em texto, é recomendável ouvir os arquivos para determinar se eles têm anomalias na qualidade do som que podem impedir que as ferramentas de ML forneçam resultados precisos. Nesta seção, você reproduz os arquivos no seu navegador clicando nos nomes deles. Recomendamos o uso de fones de ouvido ou caixas de som de faixa dinâmica ampla.
Ouvir o áudio de um arquivo de vídeo
Clique no seguinte arquivo para reproduzi-lo:
HumptyDumptySample4416.flac
Este arquivo tem uma frequência de 44,1 kHz e uma profundidade de 16 bits. Observe a fidelidade nítida e sem distorção e a inteligibilidade desse arquivo. Ele é um bom candidato para a transcrição usando a Conversão de voz em texto.
Reproduza a amostra de arquivo de vídeo a seguir no formato 5.1 para ouvir uma mixagem de som sem diálogo em todos os canais, exceto no canal central:
sample_51_mix_movie.mp4
O arquivo foi projetado para reprodução em um sistema de áudio 5.1. Se você estiver usando apenas fones de ouvido ou um sistema de dois canais, nem todos os canais poderão ser audíveis durante a reprodução. (Para ouvir todos os seis canais, a reprodução precisaria ser decodificada em um sistema 5.1 ou você precisaria criar um downmix estéreo de dois canais.)
O ideal é usar o canal somente de diálogo para a Conversão de voz em texto. O arquivo de amostra tem áudio em cinco canais sem diálogo e diálogo em um canal. Na seção Otimizar arquivos de áudio para análise, você verá como extrair os seis canais de áudio mono individuais que estão codificados no arquivo 5.1 para ouvir cada faixa. Isso permite isolar o canal somente de diálogo (normalmente o canal central ou central frontal) dos canais que não são de diálogo para melhorar a capacidade da Conversão de voz em texto de transcrever o arquivo.
Testar o mesmo arquivo em diferentes taxas de amostragem
A tabela a seguir lista várias versões do mesmo arquivo de áudio para você ouvir, cada uma com uma profundidade de bits e uma taxa de amostragem diferentes.
Arquivo de áudio | Taxa de amostragem / profundidade de bits |
---|---|
HumptyDumptySample4416.flac |
PCM linear de 44,1 kHz/16 bits |
HumptyDumptySample2216.flac |
PCM linear de 22 kHz/16 bits |
HumptyDumptySample1616.flac |
PCM linear de 16 kHz/16 bits |
HumptyDumptySample1116.flac |
PCM linear de 11 kHz/16 bits |
HumptyDumptySample0808.flac |
PCM linear de 8 kHz/8 bits |
HumptyDumptyUpSample4416.flac |
PCM linear de 44,1 kHz (upsampled)/16 bits |
HumptyDumptySample4408.flac |
PCM linear de 44,1 kHz/8 bits |
HumptyDumptySample4408to16.flac |
PCM linear (convertido para cima) de 44,1 kHz/16 bits |
Clique no nome de cada arquivo na tabela anterior para ouvi-lo. O player de áudio é aberto em uma nova guia do navegador. Observe a diferença na qualidade quando a taxa de amostragem é reduzida.
A fidelidade dos arquivos de 16 bits é reduzida nas taxas de amostragem mais baixas e a proporção de sinal para ruído é reduzida drasticamente nas versões de arquivos de 8 bits devido aos erros de quantização. O último arquivo na tabela é um arquivo original de 8 kHz/8 bits que foi ampliado para 44,1 kHz/16 bits. Observe que a qualidade do som é a mesma do arquivo de 8 kHz/8 bits.
No Cloud Shell, examine os metadados do arquivo
HumptyDumptySampleStereo.flac
:ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flac
A saída é esta:
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
A saída mostra o seguinte:
- A duração do arquivo é de 26 segundos e 28 frames. Essas informações são úteis para casos de uso avançados. Por exemplo, se você quiser processar arquivos com mais de um minuto usando o comando
gcloud speech recognize-long-running
. - A taxa de bits do arquivo é 378 kb/s.
- O número de streams no arquivo é 1. Isso é diferente do número de canais.
- A taxa de amostragem do arquivo é 44,1 kHz.
- O número de canais de áudio é 2 (estéreo).
- A profundidade de bits do arquivo é de 16 bits.
Um stream de transporte pode conter vários streams, incluindo áudio, vídeo e metadados. Cada um deles tem características diferentes, como o número de canais de áudio por stream, o codec dos streams de vídeo e o número de quadros por segundo dos streams de vídeo.
Observe que os metadados revelam que este é um arquivo estéreo. Isso é importante porque o número padrão de canais de áudio recomendados para análise com a Conversão de voz em texto é um canal mono.
- A duração do arquivo é de 26 segundos e 28 frames. Essas informações são úteis para casos de uso avançados. Por exemplo, se você quiser processar arquivos com mais de um minuto usando o comando
Transcrever arquivos usando o Speech-to-Text
Agora que você extraiu os arquivos mono, pode usar a Conversão de voz em texto para transcrever as faixas de áudio. Você usa o comando gcloud ml speech
, que invoca a API Speech-to-Text.
Transcreva o arquivo de diálogo
Alice_FC.flac
limpo:gcloud ml speech recognize ~/output/Alice_FC.flac \ --language-code='en-US' --format=text
Aguarde alguns segundos para concluir a transcrição. A saída é esta:
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"
Transcreva uma faixa “suja”
É possível ter arquivos de áudio de pessoas falando que têm outros elementos de som misturados no diálogo. Elas costumam ser chamadas de faixas "sujas", ao contrário da faixa "limpa", que não tem outros elementos misturados. Embora a Conversão de voz em texto possa reconhecer a fala em ambientes com ruído, os resultados podem ser menos precisos que para as faixas limpas. Podem ser necessários filtragem e processamento de áudio adicionais para melhorar a inteligibilidade do diálogo antes de analisar o arquivo com a Conversão de voz em texto.
Nesta seção, você transcreve um downmix mono do arquivo de áudio 5.1 analisado no exemplo anterior.
No Cloud Shell, transcreva o arquivo
Alice_mono_downmix.flac
:gcloud ml speech recognize $PROJECT_FILES/Alice_mono_downmix.flac \ --language-code='en-US' --format=text
A saída é esta:
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"
Os resultados dessa análise são imprecisos devido aos sons adicionais que encobrem o diálogo. O nível de confiança da transcrição está abaixo de 85%. Como é possível ver pela saída, o texto não corresponde ao diálogo na gravação da forma que deveria.
Transcrever arquivos de áudio de diferentes taxas de amostragem e profundidade de bits
Para entender melhor como a taxa de amostragem e a profundidade de bits afetam a transcrição, nesta seção você transcreve o mesmo arquivo de áudio gravado em uma variedade de taxas de amostragem e de profundidades de bits. Isso permite que você veja o nível de confiança da Conversão de voz em texto e a relação dele com a qualidade do som geral.
Clique nos nomes dos arquivos na tabela a seguir para ouvir a amostra e observar a diferença na qualidade. Cada vez que você clica no nome de um arquivo, o arquivo de áudio é reproduzido em uma nova guia no navegador.
Nome do arquivo de áudio Especificações do arquivo Speech_11k8b.flac
Taxa de amostragem de 11025 Hz, profundidade de 8 bits Speech_16k8b.flac
Taxa de amostragem de 16 kHz, profundidade de 8 bits Speech_16k16b.flac
Taxa de amostragem de 16 kHz, profundidade de 16 bits Speech_441k8b.flac
Taxa de amostragem de 44100 Hz, profundidade de 8 bits Speech_441k16b.flac
Taxa de amostragem de 44100Hz, profundidade de 16 bits No Cloud Shell, transcreva o arquivo
Speech_11k8b.flac
, que representa a menor qualidade de áudio neste exemplo:gcloud ml speech recognize $PROJECT_FILES/Speech_11k8b.flac \ --language-code='en-US' --format=text
A saída é esta:
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"
Transcreva o arquivo
Speech_441k16b.flac
, que é gravado com uma fidelidade significativamente maior:gcloud ml speech recognize $PROJECT_FILES/Speech_441k16b.flac \ --language-code='en-US' --format=text
A saída é esta:
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"
Observe a diferença de confiança na saída dos dois exemplos. O primeiro arquivo (
Speech_11k8b.flac
), que foi gravado a 11 kHz com profundidade de 8 bits, tem um nível de confiança abaixo de 78%. O segundo arquivo tem um nível de confiança de aproximadamente 94%.Opcionalmente, transcreva os outros arquivos listados na tabela na etapa 1 para fazer outras comparações entre a taxa de amostragem do arquivo de áudio e a precisão da profundidade de bits.
A tabela a seguir mostra um resumo da saída da Conversão de voz em texto para cada um dos arquivos listados na tabela na etapa 1 do procedimento anterior. Observe a diferença nos resultados do nível de confiança para cada tipo de arquivo. Os resultados podem variar um pouco. As transcrições dos arquivos de áudio que têm a taxa de bits e de amostragem mais baixas tendem a ter resultados de confiança menores devido à qualidade do som mais baixa.
Nome do arquivo de áudio | Confiança (seção um) | Confiança (seção dois) |
---|---|---|
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 |
Otimizar arquivos de vídeo para análise
Esta seção do tutorial orienta você pelas etapas necessárias para extrair o áudio 5.1 de um arquivo de filme.
No Cloud Shell, extraia seis canais mono de um arquivo de filme 5.1 e converta os arquivos individuais para o 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
Esse comando extrai os arquivos a seguir para o diretório de saída:
sample_BL.flac sample_BR.flac sample_FC.flac sample_FL.flac sample_FR.flac sample_LFE.flac
Verifique os metadados do arquivo de amostra:
ffprobe $PROJECT_FILES/Speech_48kFloat.wav
A saída é esta:
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
Os valores de metadados
pcm_f32le
eflt
indicam que esse arquivo tem uma taxa de bits de pontos flutuantes. Você precisa converter um arquivo WAV de taxa de bits de pontos flutuantes em um formato de número inteiro assinado.Converta a taxa de bits do arquivo em um formato de número inteiro assinado:
ffmpeg -i $PROJECT_FILES/Speech_48kFloat.wav -c:a pcm_s16le output/Speech_48k16bNonFloatingPoint.wav
Esse comando cria um arquivo WAV novo com taxa de bits no formato de número inteiro assinado.
Examine os metadados do arquivo recém-criado:
ffprobe ~/output/Speech_48k16bNonFloatingPoint.wav
A saída é esta:
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
Os metadados agora mostram que a taxa de bits no arquivo convertido está em um formato de número inteiro assinado (little endian), conforme mostrado pelas designações
pcm_s16le
es16
.
Executar exemplos de tutorial em um terminal local
É possível executar todos os exemplos neste tutorial a partir de um terminal no seu computador local. Executar os exemplos localmente oferece um recurso importante para reproduzir arquivos de áudio e vídeo diretamente usando o comando ffplay
(em vez de simplesmente ouvi-los no navegador).
Em um terminal no seu computador local, instale a ferramenta FFMPEG:
sudo apt update sudo apt install ffmpeg
Faça o download dos arquivos de amostra para sua máquina local:
gcloud storage cp gs://cloud-samples-data/speech/project_files/*.* local_destination_path
Substitua local_destination_path pelo local para colocar os arquivos de amostra.
Defina a variável de ambiente
LOCAL_PATH
como o local no seu computador em que você fez o download dos arquivos de amostra:export LOCAL_PATH=local_destination_path
Substitua local_destination_path pelo caminho da etapa anterior.
No terminal, use o comando
ffplay
no terminal para ouvir um arquivo de áudio de amostra:- Arquivo de áudio:
ffplay
$LOCAL_PATH/HumptyDumpty4416.flac
- Arquivo de vídeo:
ffplay $LOCAL_PATH/sample_51_mix_movie.mp4
- Reprodução do bucket do Cloud Storage:
ffplay
$GCS_BUCKET_PATH/HumptyDumpty4416.flac
Faça experiências em seu terminal local com os exemplos com os quais você trabalhou anteriormente neste tutorial. Isso ajuda você a entender melhor como usar melhor a Conversão de voz em texto.
- Arquivo de áudio:
Solução de problemas
Pode haver erros causados por diversos fatores, por isso vale a pena examinar alguns erros comuns e aprender a corrigi-los. Em um determinado arquivo de áudio, é possível encontrar vários erros que impedem a conclusão do processo de transcrição.
O áudio é muito longo
O comando gcloud speech recognize
pode processar arquivos de até um minuto. Por exemplo, tente o exemplo a seguir:
gcloud ml speech recognize $PROJECT_FILES/HumptyDumpty4416.flac \
--language-code='en-US' --format=text
A saída é esta:
ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Request payload size exceeds the limit: 10485760 bytes.
O erro é causado pela tentativa de usar o comando speech recognize
para processar um arquivo com mais de um minuto.
Para arquivos com mais de 1 minuto e menos de 80 minutos, use o comando speech recognize-long-running
. Para ver o comprimento do arquivo, use o comando ffprobe
, como no exemplo a seguir:
ffprobe $PROJECT_FILES/HumptyDumpty4416.flac
A resposta será assim:
Duration: 00:04:07.91, start: 0.000000, bitrate: 280 kb/s Stream #0:0: Audio: flac, 44100 Hz, mono, s16
Observe que o tempo de execução do arquivo de áudio é de aproximadamente 4 minutos e 8 segundos.
Ler arquivos grandes do computador local
O comando speech recognize-long-running
pode processar arquivos de até um minuto no computador local. Para ver onde é possível encontrar um erro, tente usar o comando speech recognize-long-running
no Cloud Shell para um arquivo mais longo:
gcloud ml speech recognize-long-running $PROJECT_FILES/HumptyDumpty4416.flac \
--language-code='en-US' --format=text
A saída é esta:
ERROR: (gcloud.ml.speech.recognize-long-running) INVALID_ARGUMENT: Request payload size exceeds the limit: 10485760 bytes.
Esse erro não é resultado da duração do áudio, mas sim do tamanho do arquivo na máquina local. Quando você usa o comando recognize-long-running
, o arquivo precisa estar em um bucket do Cloud Storage.
Para ler arquivos com mais de um minuto, use recognize-long-running
para ler um arquivo de um bucket do Cloud Storage, como no comando a seguir:
gcloud ml speech recognize-long-running $GCS_BUCKET_PATH/HumptyDumpty4416.flac \
--language-code='en-US' --format=text
Esse processo leva alguns minutos para ser concluído.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Exclua o projeto
- 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.
A seguir
- Leia a documentação da Conversão de voz em texto.
- Leia a documentação dos comandos Reconhecimento de fala e speech recognize-long-running.
- Conclua o codelab Transcrição da conversão de voz em texto com a API Cloud Speech-to-Text (em inglês).