Formatos de áudio suportados
O serviço IBM Watson® Speech to Text pode extrair o discurso do áudio em muitos formatos. As seções mais recentes deste tópico podem ajudá-lo a aproveitar ao máximo o uso do serviço. Se não estiver familiarizado com processamento de áudio, comece com Terminologia de áudio e características para obter informações sobre conceitos de áudio.
Formatos de áudio
A Tabela 1 fornece um resumo dos formatos de áudio que o serviço suporta.
- Formato de áudio identifica cada formato suportado por sua especificação
Content-Type
. - Compactação indica o suporte do formato para compactação. Usando um formato que suporta compactação, é possível reduzir o tamanho do seu áudio para maximizar a quantidade de dados que podem ser transmitidos para o serviço. Mas é preciso considerar os possíveis efeitos da compactação na qualidade do áudio. Para obter mais informações, consulte Limites de dados e compactação.
- Especificação do tipo de conteúdo indica se deve-se usar o cabeçalho
Content-Type
ou parâmetro equivalente para especificar o formato (tipo MIME) do áudio que você envia para o serviço. Para obter mais informações, consulte Especificando um formato de áudio.
As colunas finais identificam Parâmetros necessários adicionais e Parâmetros opcionais para cada formato. As seções a seguir fornecem mais informações sobre esses parâmetros.
Formato de áudio | Compactação | Especificação do tipo de conteúdo | Parâmetros necessários | Parâmetros opcionais |
---|---|---|---|---|
audio/alaw | Com perdas | Obrigatório | rate={integer} |
Nenhum |
audio/basic | Com perdas | Obrigatório | Nenhum | Nenhum |
áudio / flac | Sem perdas | Opcional | Nenhum | Nenhum |
audio/g729 | Com perdas | Opcional | Nenhum | Nenhum |
audio/l16 | Nenhum | Obrigatório | rate={integer} |
channels={integer} endianness=big-endian endianness=little-endian |
audio/mp3 audio/mpeg |
Com perdas | Opcional | Nenhum | Nenhum |
audio/mulaw | Com perdas | Obrigatório | rate={integer} |
Nenhum |
audio/ogg | Com perdas | Opcional | Nenhum | codecs=opus codecs=vorbis |
áudio / wav | Nenhum, sem perda ou com perda | Opcional | Nenhum | Nenhum |
audio/webm | Com perdas | Opcional | Nenhum | codecs=opus codecs=vorbis |
Formato audio/alaw
A-law (audio/alaw
) é um formato de áudio de canal único com perdas. Ele usa um algoritmo que é semelhante ao algoritmo u-law aplicado pelos formatos audio/basic
e audio/mulaw
, embora o algoritmo
A-law produza diferentes características de sinal. Quando você usa esse formato, o serviço requer um parâmetro extra na especificação de formato.
Parâmetro | Descrição |
---|---|
rate Obrigatório |
Um número inteiro que especifica a taxa de amostragem na qual o áudio é capturado. Por exemplo, especifique o parâmetro a seguir para dados de áudio capturado em 8 kHz:
|
Formato audio/basic
Áudio básico (audio/basic
) é um formato de áudio de canal único com perdas que é codificado usando dados de 8 bits u-law (ou mu-law) que são amostrados em 8 kHz. Esse formato fornece um denominador comum mais baixo para
indicar o tipo de mídia de áudio. O serviço suporta o uso de arquivos no formato audio/basic
apenas com modelos de banda estreita.
Para obter mais informações, consulte a Request for Comment(RFC)2046 da Internet Engineering Task Force (IETF) e iana iana.org/assignments/media-types/audio/basic.
Formato audio/flac
Free Lossless Audio Codec (FLAC) (audio/flac
) é um formato de áudio sem perdas.
Formato audio/g729
G.729 (audio/g729
) é um formato de áudio com perdas que suporta dados que são codificados a 8 kHz. O serviço suporta apenas G.729 Anexo D, não o anexo J. O serviço suporta o uso de arquivos no formato audio/g729
somente com modelos de banda estreita.
Formato audio/l16
Linear 16-bit Pulse-Code Modulation (PCM) (audio/l16
) é um formato de áudio não compactado. Use esse formato para passar um arquivo PCM bruto. O áudio PCM linear também pode ser transportado dentro de um arquivo Waveform
Audio File Format (WAV) do contêiner. Quando você usa o formato audio/l16
, o serviço aceita parâmetros extras necessários e opcionais na especificação de formato.
Parâmetro | Descrição |
---|---|
rate Obrigatório |
Um número inteiro que especifica a taxa de amostragem na qual o áudio é capturado. Por exemplo, especifique o parâmetro a seguir para dados de áudio capturado em 16 kHz:
|
channels Opcional |
Por padrão, o serviço trata o áudio como se ele tivesse um único canal. Se o áudio tiver mais de um canal, você deverá especificar um número inteiro que identifica o número de canais. Por exemplo, especifique o parâmetro a seguir
para dados de áudio de dois canais capturado em 16 kHz:
O serviço aceita no máximo 16 canais. Ele efetua downmix do áudio para um canal durante a transcodificação. |
endianness Opcional |
Por padrão, o serviço detecta automaticamente a ordenação do áudio recebido. Mas, às vezes, sua detecção automática pode falhar e descartar a conexão para áudio curto no formato audio/l16 . Especificar a ordenação desativa
a detecção automática. Especifique big-endian ou little-endian . Por exemplo, especifique o parâmetro a seguir para dados de áudio capturado em 16 kHz em formato little endian:
a Seção 5.1 de Request for Comment (RFC) 2045 especifica o formato big endian para dados |
Para obter mais informações, consulte a RFC(Request for Comment)2586 da IETF.
Formatos audio/mp3 e audio/mpeg
MP3 (audio/mp3
) ou Motion Picture Experts Group (MPEG) (audio/mpeg
) é um formato de áudio com perdas. MP3 e MPEG referem-se ao mesmo formato).
Formato audio/mulaw
Mu-law (audio/mulaw
) é um formato de áudio de canal único com perdas. Os dados são codificados usando o algoritmo u-law (ou mu-law). O formato audio/basic
é um formato equivalente que é sempre amostrado em
8 kHz. Quando você usa esse formato, o serviço requer um parâmetro extra na especificação de formato.
Parâmetro | Descrição |
---|---|
rate Obrigatório |
Um número inteiro que especifica a taxa de amostragem na qual o áudio é capturado. Por exemplo, especifique o parâmetro a seguir para dados de áudio capturado em 8 kHz:
|
Formato audio/ogg
Ogg (audio/ogg
) é um formato de contêiner aberto mantido pela Fundação Xiph.orgxiph.org/ogg). É possível usar fluxos de áudio que são compactados
com os seguintes codecs com perdas:
- Opus (
audio/ogg;codecs=opus
). Para obter mais informações, consulte opus-codec.org. - Vorbis (
audio/ogg;codecs=vorbis
). Para obter mais informações, consulte xiph.org/vorbis.
OGG Opus é o codec preferencial. Ele é o sucessor lógico do OGG Vorbis devido à baixa latência, alta qualidade de áudio e tamanho reduzido. Ele é padronizado pela Internet Engineering Task Force (IETF) como Request for Comment(RFC)6716.
Se você omitir o codec do tipo de conteúdo, o serviço o detectará automaticamente por meio do áudio de entrada.
Formato audio/wav
Waveform Audio File Format (WAV) (audio/wav
) é um formato de contêiner frequentemente usado para fluxos de áudio descompactados, mas pode conter áudio compactado também. O serviço suporta áudio WAV que usa qualquer codificação.
Ele aceita áudio WAV com um máximo de nove canais (devido a uma limitação de FFmpeg).
Para obter mais informações sobre como reduzir o tamanho do áudio do WAV, convertendo-o para o codec do Opus, consulte Convertendo em audio/ogg com o codec do Opus.
Formato audio/webm
O Web Media (WebM) (audio/webm
) é um formato de contêiner aberto mantido pelo projeto WebMwebmproject.org). É possível usar fluxos de áudio que
são compactados com os seguintes codecs com perdas:
- Opus (
audio/webm;codecs=opus
). Para obter mais informações, consulte opus-codec.org. - Vorbis (
audio/webm;codecs=vorbis
). Para obter mais informações, consulte xiph.org/vorbis.
Se você omitir o codec, o serviço o detectará automaticamente por meio do áudio de entrada.
Para obter o código JavaScript que mostra como capturar o áudio de um microfone em um navegador Chrome e codificá-lo em um fluxo de dados WebM, consulte jsbin.com/hedujihuqo/edit?js,console. O código não envia o áudio capturado para o serviço.
Especificando um Formato de Áudio
Você usa o cabeçalho de solicitação Content-Type
ou parâmetro equivalente para especificar o formato (tipo MIME) do áudio enviado para o serviço. É possível especificar o formato de áudio para qualquer solicitação, mas isso nem
sempre é necessário:
- Para a maioria dos formatos, o tipo de conteúdo é opcional. É possível omitir o tipo de conteúdo ou especificar
application/octet-stream
para fazer com que o serviço detecte automaticamente o formato. - Para outros formatos, o tipo de conteúdo é necessário. Esses formatos não fornecem as informações, como a taxa de amostragem, que o serviço precisa para detectar automaticamente seu formato. Deve-se especificar um tipo de conteúdo para os
formatos
audio/alaw
,audio/basic
,audio/l16
eaudio/mulaw
.
Para obter mais informações sobre os formatos que requerem uma especificação de tipo de conteúdo, consulte a Tabela 1 em Formatos de áudio. A coluna Especificação do tipo de conteúdo da tabela indica se você deve especificar o tipo de conteúdo.
Para obter exemplos de especificação de um tipo de conteúdo com cada uma das interfaces do serviço, consulte Fazendo uma solicitação de reconhecimento de voz. Todos os exemplos neste tópico especificam um tipo de conteúdo.
Ao usar o comando curl
para fazer uma solicitação de reconhecimento de voz com as interfaces HTTP, você deve especificar o formato de áudio com o cabeçalho Content-Type
, especificar "Content-Type: application/octet-stream"
ou especificar apenas "Content-Type:"
. Se você omitir o cabeçalho completamente, curl
usará um valor padrão de application/x-www-form-urlencoded
.
Limites de dados e compactação
O serviço aceita no máximo 100 MB de dados de áudio para transcrição com uma solicitação WebSocket ou HTTP síncrona e 1 GB de dados de áudio com uma solicitação HTTP assíncrona. Ao reconhecer longos fluxos de áudio contínuo ou grandes arquivos de áudio, você precisa considerar e acomodar esses limites de dados.
Uma maneira de maximizar a quantidade de dados de áudio que pode ser passada com uma solicitação de reconhecimento de voz é usar um formato que ofereça Compactação. Existem dois tipos básicos de compactação, com perda e sem perda. O formato de áudio e algoritmo de compressão escolhidos podem ter impacto direto na precisão do reconhecimento de voz.
Formatos de áudio que usam compactação com perda reduzem significativamente o tamanho do fluxo de áudio. Mas comprimir o áudio muito severamente pode resultar em menor exatidão de transcrição. Você não pode ouvir a diferença, mas o serviço é muito mais sensível a tal perda de dados.
Comparando tamanhos de áudio aproximados
Considere o tamanho aproximado do fluxo de dados que resulta de 2 horas da transmissão de fala contínua que é amostrada em 16 kHz e em 16 bits por amostra:
- Se os dados forem codificados com o formato
audio/wav
, o fluxo de duas horas terá um tamanho de 230 MB, bem além do limite de 100 MB do serviço. - Se os dados forem codificados no formato
audio/ogg
, o fluxo de duas horas terá um tamanho de apenas 23 MB, bem abaixo do limite do serviço.
A tabela a seguir aproxima a duração máxima de áudio que pode ser enviada para reconhecimento de voz com uma solicitação síncrona de HTTP ou WebSocket em formatos diferentes. A duração considera o limite de serviço de 100 MB. Os valores reais podem variar dependendo da complexidade do áudio e da taxa de compactação atingida.
Formato de áudio | Duração máxima do áudio (aproximado) |
---|---|
audio/wav |
55 minutos |
audio/flac |
1 hora e 40 minutos |
audio/mp3 |
3 horas e 20 minutos |
audio/ogg |
8 horas e 40 minutos |
Em testes para comparar os diferentes formatos de áudio, a IBM® determinou que os formatos WAV e FLAC entregaram a melhor taxa de erro de palavra (WER). Esses formatos podem servir como uma linha de base para a exatidão de transcrição porque mantêm o áudio intacto sem perda de dados. O formato Ogg com o codec Opus mostrou uma ligeira degradação de 2% de WER em relação à linha de base. O formato MP3 entregou os piores resultados, com uma degradação de 10% de WER em relação à linha de base.
Os formatos audio/ogg;codecs=opus
e audio/webm;codecs=opus
são geralmente equivalentes e seus tamanhos são quase idênticos. Internamente, eles usam o mesmo codec. Apenas o formato do contêiner é diferente.
Maximizando a exatidão de transcrição
Ao escolher um algoritmo de formato de áudio e compactação, considere as recomendações a seguir para maximizar a exatidão de transcrição:
- Use um formato de áudio descompactado e sem perda. Se a duração do áudio for menor que 55 minutos (menos de 100 MB), considere usar o formato
audio/wav
. Embora o formato WAV possa acomodar apenas 55 minutos de áudio, isso muitas vezes é suficiente para a maioria dos aplicativos de transcrição, como chamadas para o suporte ao cliente. E o áudio WAV descompactado pode produzir uma transcrição mais precisa. - Use a interface HTTP assíncrona. Se você optar por usar o formato WAV, mas seu áudio exceder o limite de 100 MB, a interface assíncrona permitirá o envio de até 1 GB de dados.
- Use um formato de áudio compactado, mas sem perda. Se você tiver que compactar o arquivo de áudio, use o formato
audio/flac
, que emprega compactação sem perdas. A compressão sem perda reduz o tamanho do áudio, mas mantém sua qualidade. O formato FLAC é um bom candidato para maximizar a exatidão de transcrição. - Use a compressão sem perda como último recurso. Se você precisar de compactação ainda maior, use o formato
audio/ogg
com o codec Opus. Embora o formato Ogg use compactação com perda, a combinação do formato Ogg com o codec Opus mostrou a menor degradação na precisão da voz entre algoritmos de compactação com perda.
Utilizar outros formatos com maiores níveis de compactação pode comprometer a precisão da transcrição. Experimente o serviço para determinar qual formato é melhor para o áudio e o aplicativo. Para conhecer outras maneiras de melhorar o reconhecimento de voz, consulte Dicas para melhorar o reconhecimento da voz.
Conversão de áudio
É possível usar várias ferramentas para converter o áudio em um formato diferente. As ferramentas podem ser úteis quando seu áudio está em um formato que não é suportado pelo serviço ou que está em um formato descompactado ou sem perda. No último caso, é possível converter o áudio em um formato com perdas para reduzir seu tamanho.
As ferramentas freeware a seguir estão disponíveis para converter seu áudio de um formato para outro:
- Sound eXchangeSoX)sox.sourceforge.net).
- FFmpeg ffmpeg.org). É possível também usar FFmpeg para separar áudio de um arquivo multimídia que contém dados de áudio e de vídeo. Para obter mais informações, consulte Transcrevendo a fala de arquivos de vídeo.
- Audacity® audacityteam.org).
- Para o formato Ogg com o codec Opus, opus-tools.
Essas ferramentas oferecem suporte de plataforma cruzada para diversos formatos de áudio. Além disso, é possível usar muitas das ferramentas para reproduzir seu áudio. Não use as ferramentas para violar leis de copyright aplicáveis.
Convertendo para audio/ogg com o codec do Opus
O opus-tools inclui três utilitários de linha de comando para trabalhar com áudio Ogg no codec Opus:
- O utilitário opusenc codifica áudio de WAV, FLAC e outros formatos para Ogg com o codec Opus. A página mostra como compactar fluxos de áudio. A compactação é útil para passar o áudio em tempo real para o serviço.
- O utilitário opusdec decodifica o áudio do codec Opus para arquivos PCM WAV não compactados.
- O utilitário opusinfo fornece informações e verificação de validade para arquivos Opus.
Muitos usuários enviam arquivos WAV para reconhecimento de voz. Com o limite de dados de 100 MB do serviço para solicitações síncronas de HTTP e do WebSocket, o formato WAV reduz a quantia de áudio que pode ser reconhecida com uma única solicitação.
Usar o comando opusenc para converter o áudio no formato audio/ogg:codecs=opus
preferencial pode aumentar grandemente a quantia de áudio que é possível enviar com uma solicitação de reconhecimento.
Por exemplo, considere um arquivo WAV de banda larga descompactado (16 kHz) (input.wav) que usa 16 bits por amostra para uma taxa de bits de 256 kbps. O comando a seguir converte o áudio em um arquivo (output.opus) que usa o codec do Opus:
opusenc input.wav output.opus
A conversão compacta o áudio por um fator de quatro e produz um arquivo de saída com uma taxa de bits de 64 kbps. Entretanto, de acordo com as Configurações recomendadas do Opus,
você pode reduzir com segurança a taxa de bits para 24 kbps e ainda manter uma banda completa para o áudio da fala. Essa redução compacta o áudio por um fator de 10. O comando a seguir usa a opção --bitrate
para produzir um
arquivo de saída com uma taxa de bits de 24 kbps:
opusenc --bitrate 24 input.wav output.opus
A compactação com o utilitário opusenc é rápida. A compactação acontece a uma taxa que é aproximadamente 100 vezes mais rápida do que o tempo real. Quando ele é concluído, o comando grava a saída no console que fornece detalhes completos sobre seu tempo de execução e os dados de áudio resultantes.
Transcrevendo a fala de arquivos de vídeo
Não é possível transcrever a fala de um arquivo multimídia que contém tanto áudio quanto vídeo. O serviço aceita apenas dados de áudio para reconhecimento de voz.
Para transcrever a fala de um arquivo multimídia que contém áudio e vídeo, deve-se separar os dados de áudio dos dados de vídeo. É possível usar o utilitário FFmpeg para separar o áudio da fonte de vídeo. Para obter mais informações, consulte ffmpeg.org.
Dicas para reconhecimento de voz melhorado
As dicas a seguir podem ajudar a melhorar a qualidade do reconhecimento de voz:
-
A forma como você grava áudio pode fazer uma grande diferença nos resultados do serviço. O reconhecimento de voz pode ser muito sensível à qualidade de áudio de entrada. Para obter a máxima precisão, assegure-se de que a qualidade de áudio de entrada seja tão boa quanto possível.
- Use um microfone próximo, orientado para fala (como um fone) sempre que possível e ajuste as configurações do microfone, se necessário. O serviço funciona melhor quando microfones profissionais são usados para capturar áudio.
- Evite usar um microfone integrado do sistema. Os microfones que são normalmente instalados em dispositivos móveis e tablets frequentemente são inadequados.
- Assegure-se de que os falantes próximos dos microfones. A precisão diminui à medida que um falante se afasta de um microfone. Em uma distância de 10 metros, por exemplo, o serviço tem dificuldade para produzir resultados adequados.
-
Use uma taxa de amostragem de até 16 kHz (para modelos de banda larga) ou 8 kHz (para modelos de banda estreita) e use 16 bits por amostra. O serviço converte áudio gravado em uma taxa de amostragem que é mais alta que o modelo de destino (16 kHz ou 8 kHz) para a taxa do modelo. Portanto, as frequências maiores não resultam em uma precisão de reconhecimento aprimorada, mas aumentam o tamanho do fluxo de áudio.
-
Codifique seu áudio em um formato que ofereça compactação de dados. Ao codificar seus dados com mais eficiência, é possível enviar muito mais áudio sem exceder o limite de 100 MB. Como a faixa dinâmica da voz humana é mais limitada do que, digamos, música, a fala pode acomodar uma taxa de bits menor que os outros tipos de áudio. Ainda assim, a IBM® recomenda escolher com cuidado o algoritmo de formato de áudio e compactação. Para obter mais informações, consulte Maximizando a exatidão de transcrição.
-
O reconhecimento de voz é sensível ao ruído de plano de fundo e às nuances da fala humana.
- O ruído do mecanismo, os dispositivos de trabalho, o ruído de rua e as conversas em segundo plano podem reduzir significativamente a precisão do reconhecimento.
- Os sotaques regionais e as diferenças na pronúncia também podem reduzir a precisão.
Se seu áudio tiver essas características, considere usar a customização do modelo acústico para melhorar a precisão do reconhecimento de voz. Para obter mais informações, consulte Entendendo a customização.
-
Para saber mais sobre as características do seu áudio, considere o uso de métricas de áudio com sua solicitação de reconhecimento de voz. Se você for conhecedor do processamento de sinal de áudio, as métricas poderão fornecer insight significativo e detalhado sobre as características de áudio. Para obter mais informações, consulte Métricas de áudio.