Início → Blog → Preparando áudio para transcrição: receitas de ffmpeg
Preparando áudio para transcrição: receitas de ffmpeg
Metade dos problemas de transcrição se resolve antes da requisição — no preparo do arquivo. Abaixo, um conjunto de comandos ffmpeg que cobre quase todos os casos: vídeo em vez de áudio, estéreo em vez de mono, uma hora de silêncio no fim e arquivos que não cabem no limite.
Extrair o áudio do vídeo
Gravações de reunião, webinars e capturas de tela costumam vir em mp4. A faixa de vídeo é peso morto para o reconhecimento:
ffmpeg -i meeting.mp4 -vn -ac 1 -ar 16000 -c:a libopus -b:a 24k meeting.ogg
Uma gravação de noventa minutos cai de cerca de 1,5 GB para uns 15 MB e sobe em segundos.
Separar interlocutores por canal
Se a telefonia grava atendente e cliente em canais estéreo distintos, esse é o caminho gratuito para atribuição perfeita de falas, sem nenhum algoritmo de diarização:
ffmpeg -i call.wav -map_channel 0.0.0 agent.ogg -map_channel 0.0.1 customer.ogg
Transcreva os dois arquivos separadamente e intercale as falas pelas marcações de tempo — sai um diálogo com atribuição exata.
Aparar bordas e silêncio
Arquivos de gravador costumam começar dez minutos antes de alguém falar. Corte por tempo:
ffmpeg -i raw.ogg -ss 00:09:30 -to 01:12:00 -c copy trimmed.ogg
Remova pausas longas no meio da gravação:
ffmpeg -i raw.ogg -af silenceremove=stop_periods=-1:stop_duration=2:stop_threshold=-40dB clean.ogg
Saiba o preço desse último: as marcações de tempo do resultado deixam de bater com a gravação original. Se você pretende voltar ao vídeo, deixe as pausas em paz.
Dividir uma gravação longa
Pedaços fixos de quinze minutos:
ffmpeg -i long.ogg -f segment -segment_time 900 -c copy part%03d.ogg
Simples, mas cedo ou tarde corta uma palavra ao meio. Para cortar nas pausas, encontre primeiro o silêncio:
ffmpeg -i long.ogg -af silencedetect=noise=-35dB:d=1 -f null - 2>&1 | grep silence_end
Use essas marcas como limites dos pedaços e nenhuma frase se parte, de modo que o texto reunido se lê como um só.
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
É obrigatório converter para mono?
Não é obrigatório, mas reduz o arquivo à metade sem mudar o resultado. Mantenha estéreo só quando os locutores estão em canais separados.
Por que 16 kHz especificamente?
É a taxa em que o modelo trabalha; qualquer coisa acima é reamostrada internamente. Enviar 48 kHz só gasta tráfego com dados que serão descartados.
A compressão opus prejudica a precisão?
A 24 kbps mono o texto é praticamente idêntico — o codec foi feito para voz. As perdas aparecem abaixo de 16 kbps.
Como juntar as transcrições dos pedaços?
Ordene pelos números nos nomes dos arquivos e concatene nessa ordem. Para tempos contínuos, some o deslocamento inicial de cada pedaço.
Leitura relacionada
- Qual formato de áudio usar para reconhecimento de fala — mp3, wav, ogg, opus, m4a e webm no reconhecimento de fala: o que o bitrate muda, por que mono a 16 kHz basta e como ficar dentro do limite de tamanho.
- Como transcrever uma gravação que não cabe em uma requisição — O que fazer com áudio de várias horas: compressão, corte nas pausas, processamento paralelo dos pedaços e junção em um texto com tempos contínuos.
- Quem disse o quê: separando locutores em uma transcrição — Por que uma gravação única e misturada não volta identificada por locutor, e quatro formas práticas de obter a separação mesmo assim — da gravação multipista aos canais.