Se você já usou o NeoVoice AI para transcrição e análise de áudio, sabe que a API já entregava bastante coisa: transcrição completa, análise de sentimento, identificação de tópicos e resumo executivo — tudo em uma única chamada POST.
Agora, o NeoVoice deu um passo além. Com a adição de um único parâmetro booleano no body da requisição, a API passa a gerar atas de reunião estruturadas com título, participantes, decisões, tarefas e pendências. E se você precisar de um documento formal, pode receber a ata como um arquivo .docx pronto para download.
O melhor? Zero breaking changes. Se você já integra o NeoVoice, sua implementação continua funcionando exatamente como antes.
A Arquitetura da Mudança
O design dessa feature é elegantemente simples. O endpoint continua sendo o mesmo POST /analyze_audio. O fluxo de transcrição é idêntico. A única diferença está em dois novos parâmetros opcionais no body JSON:
{
"audio_base64": "...",
"filename": "reuniao_sprint.mp3",
"language_code": "pt-BR",
"generate_ata": true,
"output_format": "json"
}
generate_ata (boolean, default false) — Quando true, a IA analisa a transcrição com um prompt especializado em atas de reunião em vez do prompt padrão de analytics. O modelo de IA é o mesmo; a diferença está 100% no system prompt.
output_format (string, "json" | "docx", default "json") — Só é relevante quando generate_ata: true. Controla se a resposta volta como JSON estruturado ou como binário .docx.
O parâmetro generate_ata usa comparação estrita is True — aceita apenas JSON boolean true, não strings. Requisições sem o campo se comportam exatamente como antes. Backward-compatible por omissão.
Os Três Modos de Resposta
Modo 1: Analytics (comportamento original)
Sem generate_ata ou com generate_ata: false. Nada muda:
import requests
url = "https://neovoice-ai.p.rapidapi.com/analyze_audio"
headers = {
"X-RapidAPI-Key": "SUA_CHAVE",
"X-RapidAPI-Host": "neovoice-ai.p.rapidapi.com"
}
payload = {
"audio_url": "https://exemplo.com/reuniao.mp3",
"language_code": "pt-BR"
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
print(data["transcript"])
print(data["analytics"]["overall_sentiment"])
print(data["analytics"]["main_topics"])
print(data["analytics"]["summary"])
Resposta:
{
"status": "success",
"transcript": "...",
"analytics": {
"overall_sentiment": "positivo",
"main_topics": ["sprint planning", "prazo de entrega", "módulo X"],
"summary": "A equipe alinhou prioridades para o próximo sprint..."
}
}
Modo 2: Ata Inteligente em JSON
Adicione generate_ata: true:
payload = {
"audio_url": "https://exemplo.com/reuniao.mp3",
"language_code": "pt-BR",
"generate_ata": True,
"output_format": "json"
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
print(data["ata"]["titulo"])
print(data["ata"]["participantes"])
print(data["ata"]["decisoes"])
print(data["ata"]["tarefas"])
print(data["ata"]["pendentes"])
Resposta:
{
"status": "success",
"transcript": "...",
"ata": {
"titulo": "Reunião de alinhamento de sprint",
"participantes": ["Ana (PO)", "Bruno (dev)", "Carlos (QA)"],
"decisoes": [
"Aprovado prazo de entrega para 15/07",
"Módulo X será priorizado sobre o módulo Y"
],
"tarefas": [
{
"responsavel": "Bruno",
"acao": "Subir PR do módulo X",
"prazo": "28/06"
},
{
"responsavel": "Carlos",
"acao": "Criar suite de testes de regressão",
"prazo": "30/06"
}
],
"pendentes": [
"Aguardar resposta jurídica sobre cláusula 4"
]
}
}
A estrutura é previsível e parseável. Cada tarefa tem responsavel, acao e prazo — perfeito para alimentar boards de projeto, Jira, Notion ou qualquer sistema de gestão.
Modo 3: Ata como Documento Word (.docx)
Troque output_format para "docx":
payload = {
"audio_url": "https://exemplo.com/reuniao.mp3",
"language_code": "pt-BR",
"generate_ata": True,
"output_format": "docx"
}
response = requests.post(url, json=payload, headers=headers)
# A resposta é binária — salve direto em arquivo
with open("ata_reuniao.docx", "wb") as f:
f.write(response.content)
print("Ata salva como ata_reuniao.docx")
A resposta vem com Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document e Content-Disposition: attachment; filename="ata_reuniao.docx". Não é JSON. Trate como blob/binário no frontend.
O documento gerado é um .docx real — abre no Word, Google Docs, LibreOffice. Formatado com seções, listas e tabelas de tarefas.
Limites Técnicos
| Parâmetro | Valor |
|---|---|
| Tamanho máximo do áudio | 100 MB |
| Duração máxima processada | 7 minutos |
| Formatos aceitos |
.wav, .mp3, .m4a, .mp4, .ogg, .opus, .flac, .aac, .wma, .webm, .amr
|
| Idiomas |
pt-BR, en-US e outros suportados pelo motor de speech |
A detecção de formato usa magic bytes — não depende da extensão do arquivo. Se você renomear um .mp3 para .wav, a API detecta o formato real e converte corretamente.
Por Que Isso é Bom de Verdade
A maioria das APIs de transcrição para por aí — te entrega texto e tchau. Se você quer algo estruturado, precisa montar seu próprio pipeline de LLM, escrever prompts, parsear saídas, lidar com alucinações e formatos quebrados.
O NeoVoice faz tudo isso em uma chamada. A mesma chamada que já existia. Com um campo a mais. Sem novo endpoint, sem nova autenticação, sem novo deployment. Se você já consome a API, é literalmente adicionar "generate_ata": true no seu payload.
E o export .docx é gerado server-side em memória — sem escrita em disco, sem dependência de serviços externos de conversão. Binário puro na resposta HTTP.
Comece Agora
Acesse o NeoVoice AI — Transcrição e Análise de Áudio com IA para conhecer o produto, ver demos e testar gratuitamente direto no navegador.
Para integrar via API, pegue sua chave no 👉 NeoVoice AI no RapidAPI
Os 3 primeiros usos são gratuitos. Happy coding! 🚀
Top comments (0)