Uma codificação de áudio refere-se à forma como os dados de áudio são armazenados e transmitidos. A documentação abaixo descreve como funcionam essas codificações em relação à API Speech-to-Text.
Para ver diretrizes sobre como escolher a melhor codificação para a sua aplicação, consulte as práticas recomendadas.
A codificação de áudio digital é um tópico complexo e, geralmente, não precisa de saber os detalhes para processar áudio na API Speech. Os conceitos apresentados aqui destinam-se apenas a uma vista geral. Algumas destas informações gerais podem ser úteis para compreender como funciona a API e como o áudio deve ser formulado e processado nas suas aplicações.
Formatos de áudio vs. codificações
Tenha em atenção que um formato de áudio não é equivalente a uma codificação de áudio. Um formato de ficheiro popular, como .WAV
, por exemplo, define o formato do cabeçalho de um ficheiro de áudio, mas não é, em si, uma codificação de áudio. Os ficheiros de áudio .WAV
usam frequentemente, mas nem sempre, uma codificação PCM linear. Não assuma que um ficheiro .WAV
tem uma codificação específica até inspecionar o respetivo cabeçalho.
No entanto, o FLAC
é um formato de ficheiro e uma codificação, o que, por vezes, gera alguma confusão. Um ficheiro FLAC
tem de conter a taxa de amostragem no cabeçalho para ser enviado para a API Speech-to-Text.FLAC
FLAC
é a única codificação que requer que os dados de áudio incluam um cabeçalho. Todas as outras codificações de áudio especificam dados de áudio sem cabeçalho. Quando nos referimos a FLAC
na API Speech-to-Text,
estamos sempre a referir-nos ao codec. Quando nos referimos a um formato de ficheiro FLAC, usamos o formato "um ficheiro .FLAC
".
Não tem de especificar a codificação nem a taxa de amostragem para ficheiros WAV ou FLAC. Se for omitido, o Speech-to-Text determina automaticamente a codificação e a taxa de amostragem para ficheiros WAV ou FLAC com base no cabeçalho do ficheiro. Se especificar um valor de codificação ou taxa de amostragem que não corresponda ao valor no cabeçalho do ficheiro, o Speech-to-Text devolve um erro.
Codificações de áudio suportadas para a conversão de voz em texto
A API Speech-to-Text suporta várias codificações diferentes. A tabela seguinte indica os codecs de áudio suportados:
Codec | Nome | Sem perdas | Notas de utilização |
---|---|---|---|
MP3 |
MPEG Audio Layer III | Não | A codificação MP3 é uma funcionalidade beta e só está disponível na versão v1p1beta1. Consulte a
documentação de referência RecognitionConfig
para ver detalhes. |
FLAC |
Free Lossless Audio Codec | Sim | 16 ou 24 bits necessários para streams |
LINEAR16 |
PCM linear | Sim | Codificação de modulação por impulsos de código (PCM) linear de 16 bits. O cabeçalho tem de conter a taxa de amostragem. |
MULAW |
μ-law | Não | Codificação PCM de 8 bits |
AMR |
Banda estreita de taxa múltipla adaptável | Não | A taxa de amostragem tem de ser de 8000 Hz |
AMR_WB |
Adaptive Multi-Rate Wideband | Não | A taxa de amostragem tem de ser de 16 000 Hz |
OGG_OPUS |
Frames de áudio codificados em Opus num contentor Ogg | Não | A taxa de amostragem tem de ser uma das seguintes: 8000 Hz, 12 000 Hz, 16 000 Hz, 24 000 Hz ou 48 000 Hz |
SPEEX_WITH_HEADER_BYTE |
Banda larga Speex | Não | A taxa de amostragem tem de ser de 16 000 Hz |
WEBM_OPUS |
WebM Opus | Não | A taxa de amostragem tem de ser uma das seguintes: 8000 Hz, 12 000 Hz, 16 000 Hz, 24 000 Hz ou 48 000 Hz |
Para mais informações sobre os codecs de áudio da API Speech-to-Text, consulte a documentação de referência de AudioEncoding.
Se tiver uma escolha ao codificar o material de origem, use uma codificação sem perdas, como FLAC
ou LINEAR16
, para uma melhor reconhecimento de voz. Para ver diretrizes sobre como selecionar o codec adequado para a sua tarefa, consulte as práticas recomendadas.
Porquê codificar?
O áudio é composto por formas de onda, que consistem na interposição de ondas de diferentes frequências e amplitudes. Para representar estas formas de onda em suportes digitais, é necessário amostrá-las a taxas que possam (pelo menos) representar sons da frequência mais alta que quer replicar. Também é necessário armazenar uma profundidade de bits suficiente para representar a amplitude adequada (volume e suavidade) das formas de onda na amostra de som.
A capacidade de um dispositivo de processamento de som recriar frequências é conhecida como a sua resposta de frequência, e a capacidade de criar o volume e a suavidade adequados é conhecida como o seu intervalo dinâmico. Em conjunto, estes termos são frequentemente denominados fidelidade de um dispositivo de som. Uma codificação, na sua forma mais simples, é um meio com o qual se pode reconstruir o som através destes dois princípios básicos, bem como armazenar e transportar esses dados de forma eficiente.
Taxas de amostragem
O som existe como uma forma de onda analógica. Um segmento de áudio digital aproxima-se desta onda analógica através da amostragem da amplitude desta onda analógica a uma taxa suficientemente rápida para imitar as frequências intrínsecas da onda. A frequência de amostragem de um segmento de áudio digital especifica o número de amostras a retirar do material de origem de um áudio (por segundo). Uma frequência de amostragem elevada aumenta a capacidade do áudio digital de representar fielmente as frequências elevadas.
Como consequência do teorema de Nyquist-Shannon, geralmente, tem de amostrar mais do dobro da frequência mais elevada de qualquer onda sonora que queira captar digitalmente. Para representar o áudio dentro do alcance da audição humana (20 a 20 000 Hz), por exemplo, um formato de áudio digital tem de fazer a amostragem, pelo menos, 40 000 vezes por segundo (que é parte do motivo pelo qual o áudio de CD usa uma taxa de amostragem de 44 100 Hz).
Profundidades de bits
A profundidade de bits afeta o intervalo dinâmico de uma determinada amostra de áudio. Uma profundidade de bits mais elevada permite representar amplitudes mais precisas. Se tiver muitos sons altos e baixos na mesma amostra de áudio, precisa de mais profundidade de bits para representar esses sons corretamente.
As profundidades de bits mais elevadas também reduzem a relação sinal/ruído nas amostras de áudio. O áudio musical de CD é fornecido com uma profundidade de bits de 16 bits. O DVD Audio usa 24 bits de profundidade de bits, enquanto a maioria dos equipamentos de telefonia usa 8 bits de profundidade de bits. (Determinadas técnicas de compressão podem compensar as profundidades de bits mais pequenas, mas tendem a ser com perdas.)
Áudio não comprimido
A maioria do processamento de áudio digital usa estas duas técnicas (taxa de amostragem e profundidade de bits) para armazenar dados de áudio de forma simples. Uma das técnicas de áudio digital mais populares (popularizada na utilização do disco compacto) é conhecida como modulação por código de impulsos (ou PCM). O áudio é amostrado a intervalos definidos e a amplitude da onda amostrada nesse ponto é armazenada como um valor digital através da profundidade de bits da amostra.
O PCM linear (que indica que a resposta de amplitude é linearmente uniforme na amostra) é a norma usada nos CDs e na codificação LINEAR16
da API Speech-to-Text. Ambas as codificações produzem um fluxo não comprimido de bytes correspondentes diretamente aos dados de áudio, e ambas as normas contêm 16 bits de profundidade. O PCM linear usa uma taxa de amostragem de 44 100 Hz em CDs,o que é
adequado para a recomposição de música. No entanto, uma taxa de amostragem de 16 000 Hz é
mais adequada para recompor a fala.
O PCM linear (LINEAR16
) é um exemplo de áudio não comprimido, uma vez que os dados digitais são armazenados exatamente como os padrões acima implicam. Ao ler um fluxo de bytes de um canal codificado através de PCM linear, pode contar a cada 16 bits (2 bytes), por exemplo, para obter outro valor de amplitude da forma de onda.
Quase todos os dispositivos podem manipular esses dados digitais de forma nativa. Pode até recortar ficheiros de áudio PCM linear com um editor de texto. No entanto, (obviamente) o áudio não comprimido não é a forma mais eficiente de transportar ou armazenar áudio digital. Por esse motivo, a maioria do áudio usa técnicas de compressão digital.
Áudio comprimido
Os dados de áudio, como todos os dados, são frequentemente comprimidos para facilitar o armazenamento e o transporte. A compressão na codificação de áudio pode ser sem perdas ou com perdas. A compressão sem perdas pode ser descompactada para restaurar os dados digitais à sua forma original. A compressão com perdas remove necessariamente algumas dessas informações durante a compressão e a descompressão, e é parametrizada para indicar a tolerância a dar à técnica de compressão para remover dados.
Compressão sem perdas
A compressão sem perdas comprime os dados de áudio digital através de reorganizações complexas dos dados armazenados, mas não resulta numa degradação da qualidade da amostra digital original. Com a compressão sem perdas, quando descompacta os dados na respetiva forma digital original, não perde informações.
Então, por que motivo as técnicas de compressão sem perdas têm, por vezes, parâmetros de otimização? Estes parâmetros trocam frequentemente o tamanho do ficheiro pelo tempo de descompressão. Por exemplo, o FLAC
usa um parâmetro de nível de compressão de 0 (mais rápido) a 8 (tamanho de ficheiro mais pequeno). A compressão FLAC de nível superior não perde informações em comparação com a compressão de nível inferior. Em alternativa, o algoritmo de compressão só precisa de gastar mais energia computacional ao construir ou desconstruir o áudio digital original.
A API Speech-to-Text suporta duas codificações sem perdas: FLAC
e LINEAR16
.
Tecnicamente, LINEAR16
não é "compressão sem perdas" porque não existe qualquer compressão. Se o tamanho do ficheiro ou a transmissão de dados for importante para si, escolha FLAC
como opção de codificação de áudio.
Compressão com perdas
Por outro lado, a compressão com perdas comprime os dados de áudio eliminando ou reduzindo determinados tipos de informações durante a construção dos dados comprimidos. A API Speech-to-Text suporta vários formatos com perdas, embora deva evitá-los se tiver controlo sobre o áudio, uma vez que a perda de dados pode afetar a precisão do reconhecimento.
O popular codec MP3 é um exemplo de uma técnica de codificação com perdas. Todas as técnicas de compressão MP3 removem o áudio fora do alcance de áudio normal de um ser humano e ajustam a quantidade de compressão ajustando a taxa de bits efetiva do codec MP3 ou a quantidade de bits por segundo para armazenar a data de áudio.
Por exemplo, um CD estéreo que use PCM linear de 16 bits tem uma taxa de bits efetiva de:
44100 * 2 channels * 16 bits = 1411200 bits per second (bps) = 1411 kbps
A compressão MP3 remove esses dados digitais através de taxas de bits, como 320 kbps, 128 kbps ou 96 kbps, por exemplo, com a consequente degradação da qualidade de áudio. O MP3 também suporta taxas de bits variáveis, que podem comprimir ainda mais o áudio. Ambas as técnicas perdem informações e podem afetar a qualidade. A maioria das pessoas consegue distinguir, por exemplo, entre música MP3 codificada a 96 kbps ou 128 kbps.
Outras formas de compressão parametrizam outra restrição.
MULAW é uma codificação PCM de 8 bits, em que a amplitude da amostra é modulada logaritmicamente em vez de linearmente. Como resultado, o uLaw reduz o intervalo dinâmico efetivo do áudio comprimido. Embora o uLaw tenha sido introduzido para otimizar especificamente a codificação de voz em contraste com outros tipos de áudio, o LINEAR16
de 16 bits (PCM não comprimido) continua a ser muito superior ao áudio comprimido uLaw de 8 bits.
AMR e AMR_WB modulam a amostra de áudio codificada através da introdução de uma taxa de bits variável na amostra de áudio de origem.
Embora a API Speech-to-Text suporte vários formatos com perdas, deve evitá-los se tiver controlo sobre o áudio de origem. Embora a remoção desses dados através da compressão com perdas possa não afetar visivelmente o áudio ouvido pelo ouvido humano, a perda desses dados para um motor de reconhecimento de voz pode degradar significativamente a precisão.