Início → Blog → Como criar um bot de Telegram que transcreve mensagens de voz
Como criar um bot de Telegram que transcreve mensagens de voz
Mensagem de voz não se lê em reunião, no metrô ou simplesmente quando a preguiça bate. Um bot que responde a um áudio com o texto dele elimina esse atrito, e sai em uma noite de trabalho. Segue o fluxo inteiro, do arquivo à resposta.
O que o bot faz
A lógica cabe em quatro passos:
- Receber a atualização com a mensagem de voz e ler o identificador do arquivo.
- Baixar o arquivo pelo link que o Telegram fornece.
- Mandar reconhecer.
- Responder com o texto na mesma conversa.
Um detalhe agradável: o Telegram guarda as mensagens de voz em ogg/opus — formato aceito sem nenhuma conversão.
O manipulador
O exemplo usa python-telegram-bot, mas a lógica é a mesma em qualquer biblioteca:
import io
from telegram import Update
from telegram.ext import Application, MessageHandler, filters, ContextTypes
from openai import OpenAI
client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="sua chave")
async def on_voice(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
voice = update.message.voice or update.message.audio
tg_file = await ctx.bot.get_file(voice.file_id)
buf = io.BytesIO(await tg_file.download_as_bytearray())
buf.name = "voice.ogg"
text = client.audio.transcriptions.create(model="whisper-1", file=buf).text
await update.message.reply_text(text or "não consegui entender a fala")
app = Application.builder().token("token do bot").build()
app.add_handler(MessageHandler(filters.VOICE | filters.AUDIO, on_voice))
app.run_polling()
A linha decisiva é a atribuição de buf.name. Sem nome de arquivo a biblioteca não deduz o formato e a requisição falha.
Pontos que incomodam
- Resposta demorada. Envie a ação "digitando" enquanto o reconhecimento roda, senão o bot parece travado.
- Resultados longos. O Telegram corta mensagens acima de 4096 caracteres, então divida transcrições grandes.
- Vídeos redondos. Chegam como o tipo video_note; o áudio transcreve normalmente, mas é preciso tratar esse tipo explicitamente.
- Grupos. Por padrão o bot não vê mensagens dos outros — o modo de privacidade se desliga no BotFather.
O que somar depois da primeira versão
A primeira versão responde texto puro. Os três acréscimos habituais são: resumo para mensagens longas, cota por usuário para o bot não virar serviço gratuito da internet inteira, e armazenamento das transcrições para tornar o histórico pesquisável.
Meça o uso em minutos de áudio: é assim que a cobrança funciona, e o mesmo número mostra quanto cada usuário custa.
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 os áudios do Telegram?
Não. O aplicativo envia ogg/opus, aceito diretamente — basta dar ao upload um nome terminado em .ogg.
Por que áudios muito curtos falham?
Costumam ser gravações vazias de frações de segundo, resultado de um toque acidental. Verifique a duração antes de enviar.
Como saber quem usou quanto?
Some a duração das mensagens processadas por usuário: a cobrança é por minuto de áudio, então essa métrica é o seu custo.
Dá para transcrever os vídeos redondos?
Dá, o áudio dentro deles transcreve igual. A diferença é só o tipo de mensagem na API.
Leitura relacionada
- Transcrição de mensagens de voz: WhatsApp, Telegram e outros — Como transformar mensagens de voz em texto automaticamente: o formato ogg/opus, o problema das gravações curtas e exemplos de código para bots de atendimento.
- Como transformar notas de voz em texto automaticamente — Transforme notas de voz do celular e do gravador numa base pesquisável: pasta sincronizada, script observador, modelo de nota e dicas para áudio de rua.
- Voz para texto em Python: de um arquivo a um script que funciona — Transcrição em Python funcionando em dez minutos: instalação, a primeira requisição, formatos de resposta, tratamento de erros e os erros que mais custam tempo.