Início → Blog → Transcrição de mensagens de voz: WhatsApp, Telegram e outros
Transcrição de mensagens de voz: WhatsApp, Telegram e outros
Mensagem de voz é cômoda para quem manda e incômoda para quem recebe: não dá para passar os olhos, nem buscar, nem ler numa reunião. A transcrição automática resolve isso — veja como colocá-la dentro de um bot ou de um processo de atendimento.
O que diferencia uma mensagem de voz
Mensagens de voz têm três particularidades que valem ser levadas em conta:
- Formato ogg/opus. WhatsApp e Telegram comprimem a voz em opus — não é preciso converter antes, o arquivo é aceito como está.
- Duração curta. A mensagem típica tem de três segundos a um minuto. Quanto mais curta, menos contexto o modelo tem.
- Fala espontânea. Frases interrompidas, barulho de rua, vícios de linguagem — tudo isso entra na transcrição, porque o que é reconhecido é o que foi dito.
Enviando o áudio para transcrição
O arquivo vai exatamente como chegou do mensageiro:
from openai import OpenAI
client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="sua chave")
with open("mensagem.ogg", "rb") as f:
text = client.audio.transcriptions.create(model="whisper-1", file=f).text
print(text)
O formato é identificado pelo conteúdo do arquivo, não pela extensão, então um nome errado não atrapalha o reconhecimento.
Um bot que responde em texto
O fluxo é simples: recebeu o áudio, baixou o arquivo, mandou transcrever, devolveu o texto no chat.
async def on_voice(message, bot):
file = await bot.download(message.voice.file_id) # ogg/opus
text = client.audio.transcriptions.create(
model="whisper-1", file=("voz.ogg", file), language="pt",
).text
await message.reply(text or "Não consegui entender o áudio")
A resposta vem na mesma requisição, então o usuário recebe o texto poucos segundos depois de enviar a mensagem.
Mensagens curtas: como ganhar precisão
Em gravações de dois ou três segundos o trabalho é mais difícil: há pouco contexto e a detecção de idioma pode errar. Três truques que quase sempre ajudam:
- Informe o idioma —
language="pt". A detecção automática é desligada e os erros em frases curtas desaparecem. - Sugira o formato esperado pelo
prompt. Para códigos:prompt="Código de confirmação de quatro dígitos". - Olhe a confiança. A resposta
verbose_jsontraz a probabilidade do idioma: um valor baixo é sinal de que vale reconferir.
Fluxos em vários idiomas
Se as mensagens chegam em idiomas diferentes, não há nada a configurar: o idioma é detectado pelo som e há suporte a 99 deles. A resposta verbose_json devolve o idioma reconhecido — um jeito prático de rotear o atendimento para quem fala aquela língua.
Uma ressalva: o idioma é decidido pelo começo da gravação. Se a pessoa começa em português e passa para o inglês, a transcrição segue em «modo português» — esse tipo de mensagem é melhor tratar à parte.
O que fazer com silêncio e áudios vazios
Parte das mensagens acaba vazia: toque acidental, queda de conexão, ruído de fundo sem fala. Nesses casos o serviço devolve texto vazio em vez de frases inventadas — filtros internos cortam as «alucinações» típicas de redes neurais, como créditos finais e agradecimentos por assistir.
No código basta checar a string vazia e não mostrar ao usuário uma resposta sem sentido.
Teste com as suas próprias gravações. O cadastro leva um minuto e os minutos gratuitos bastam para avaliar a qualidade.
Obter uma chave de API grátisPerguntas frequentes
Preciso converter ogg para wav antes de enviar?
Não. O arquivo é aceito no formato em que o mensageiro o entrega: ogg, opus, mp3, m4a, wav e outros formatos comuns.
Áudios em português são bem reconhecidos?
Sim, o português está entre os idiomas com melhor qualidade de reconhecimento. O idioma é detectado sozinho, mas em fluxos de um idioma só vale informá-lo explicitamente.
Quanto tempo leva a transcrição de um áudio?
Uma mensagem comum de até um minuto é processada em um ou dois segundos, e a resposta volta na mesma requisição.
O que volta se não houver fala na gravação?
Texto vazio. O serviço não inventa conteúdo onde não existe.
Existe limite de tamanho de arquivo?
Sim, 25 MB por requisição. Para mensagens de voz isso é folgado: em opus, esse tamanho corresponde a várias horas de fala.
Leitura relacionada
- Como transcrever a gravação de uma chamada — Guia passo a passo para transformar a gravação de uma ligação em texto pela API em poucos minutos. Com exemplos em Python e C# e a lista de erros mais comuns.
- Legendas SRT e VTT automáticas a partir de vídeos e webinars — Como obter legendas prontas com marcações de tempo a partir de um webinar ou vídeo: extração do áudio, formatos SRT e VTT, código e os problemas mais frequentes.
- Quais idiomas o reconhecimento de fala realmente domina — Os 99 idiomas suportados não são iguais: quais são confiáveis, onde a precisão cai, como funciona a detecção e o que fazer com gravações que trocam de idioma.