Transcrição de áudio
Versão notebook (rodável no Colab):
examples/notebooks/transcricao.ipynb.
labdados.transcricao usa Whisper (Large V3 Turbo ou WhisperX) para transformar áudio em texto. Suporta .mp3, .wav, .m4a, .ogg, .flac, .wma.
Receita 1 — Entrevista única, na nuvem
import os, labdados
labdados.transcricao(
arquivos="entrevista_juiz.m4a",
api_key=os.environ["LABDADOS_API_KEY"],
saida="transcricoes/",
idioma="pt",
formato="srt", # legenda — abre em qualquer player
)
# transcricoes/transcricao_<id>.zip → entrevista_juiz.srtReceita 2 — Audiência com vários falantes (diarização)
Diarização separa quem falou o quê. Exige modelo WhisperX (sem ele, o SDK levanta ValueError cedo):
labdados.transcricao(
arquivos="audiencia.mp3",
api_key=os.environ["LABDADOS_API_KEY"],
saida="transcricoes/",
modelo="whisperx",
diarizacao=True,
num_falantes=4, # juiz + procurador + 2 testemunhas
formato="srt",
)A saída marca cada trecho com SPEAKER_00, SPEAKER_01, …
Receita 3 — Pasta inteira de podcasts
labdados.transcricao(
arquivos="podcasts/",
api_key=os.environ["LABDADOS_API_KEY"],
saida="textos_podcasts/",
idioma="pt",
formato="txt",
timestamps=True, # [00:01:23] no início de cada trecho
)Receita 4 — Local, sem GPU
pip install labdados[transcricao]labdados.transcricao(
arquivos="reuniao.mp3",
local=True,
modelo_local="small", # bom equilíbrio precisão / tempo em CPU
idioma="pt",
formato="srt",
saida="resultados/",
)
Dica
Tabela rápida de modelos do faster-whisper:
| Modelo | Tamanho | Qualidade | Velocidade em CPU |
|---|---|---|---|
tiny |
75MB | ★ | rápido |
base |
145MB | ★★ | rápido |
small |
480MB | ★★★ | médio |
medium |
1.5GB | ★★★★ | lento |
large-v3 |
3GB | ★★★★★ | muito lento (use GPU) |
Receita 5 — Áudio em outro idioma
labdados.transcricao(
arquivos="entrevista_es.mp3",
api_key=os.environ["LABDADOS_API_KEY"],
idioma="es", # espanhol
formato="txt",
saida="resultados/",
)Use "auto" quando o idioma não é conhecido — o Whisper tenta detectar.
Quando o áudio é muito longo
O backend tem timeout total de 4 horas. Áudios maiores que isso devem ser quebrados antes:
# Dividir um audio.mp3 em pedaços de 2h
ffmpeg -i audio.mp3 -f segment -segment_time 7200 -c copy parte_%02d.mp3labdados.transcricao(
arquivos="parte_00.mp3 parte_01.mp3 parte_02.mp3".split(),
api_key=os.environ["LABDADOS_API_KEY"],
saida="resultados/",
modelo="whisperx", # usar diarização integrada por arquivo
)Parâmetros principais
| Parâmetro | Default | Quando mexer |
|---|---|---|
modelo |
"whisper-large-v3-turbo" |
"whisperx" para diarização ou timestamps por palavra |
idioma |
"pt" |
Outros idiomas (ISO 639-1) ou "auto" |
diarizacao |
False |
True (exige whisperx) |
num_falantes |
0 (auto) |
Quando você sabe quantas pessoas falam |
formato |
"srt" |
"txt" para texto corrido, "vtt" para web |
timestamps |
True |
False no txt para suprimir [hh:mm:ss] |