Transcrição local de vídeos e áudios usando faster-whisper. Roda 100% na sua máquina, sem API key, sem envio de dados para nuvem.
- Python 3.10+
- uv (gerenciador de pacotes e ambientes)
- ffmpeg instalado no sistema
- Driver NVIDIA + CUDA Toolkit + cuDNN (para GPU)
Arch/Manjaro:
sudo pacman -S ffmpeg cuda cudnnUbuntu/Debian:
sudo apt install ffmpeg nvidia-cuda-toolkit libcudnn8curl -LsSf https://astral.sh/uv/install.sh | sh# Clonar o repositório
git clone <repo-url>
cd transcriber
# Criar venv e instalar dependências (uv faz tudo automaticamente)
uv sync
# Rodar o projeto
uv run python -m transcriber --list-modelsO uv sync cria o .venv, resolve e instala todas as dependências do pyproject.toml automaticamente.
# Transcrição básica (detecta idioma automaticamente)
uv run python -m transcriber video.mp4
# Forçar português
uv run python -m transcriber video.mp4 --lang pt
# Gerar legenda SRT
uv run python -m transcriber video.mp4 --lang pt --format srt -o legenda.srt
# Gerar VTT (compatível com HTML5 <track>)
uv run python -m transcriber video.mp4 --lang pt --format vtt -o legenda.vtt
# Gerar JSON com timestamps
uv run python -m transcriber video.mp4 --format json -o transcricao.json
# Gerar texto puro
uv run python -m transcriber video.mp4 --format txt -o transcricao.txt
# Escolher modelo
uv run python -m transcriber video.mp4 --model large-v3
# Processar pasta inteira (batch)
uv run python -m transcriber ./videos/ --lang pt --format srt
# Timestamps por palavra (útil para karaokê)
uv run python -m transcriber video.mp4 --word-timestamps --format json
# Listar modelos disponíveis
uv run python -m transcriber --list-models
# Usar CPU ao invés de GPU
uv run python -m transcriber video.mp4 --device cpu --compute-type int8Benchmarks com AMD Ryzen 7 5700G, 32GB RAM, RTX 3060 12GB, modelo large-v3-turbo, float16:
$ uv run python -m transcriber preview-controls.mp4 --lang pt --format srt
Modelo: large-v3-turbo | Device: cuda | Compute: float16
Modelo carregado.
──── preview-controls.mp4 ────
Duração: 11min 26s
Transcrevendo... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:17
Salvo em: preview-controls.srt
11min 26s de áudio em 20s — 34x realtime
$ uv run python -m transcriber 2026-02-21\ 14-22-10.mp4 --lang pt --format srt
Modelo: large-v3-turbo | Device: cuda | Compute: float16
Modelo carregado.
──── 2026-02-21 14-22-10.mp4 ────
Duração: 1h 55min 19s
Transcrevendo... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:03:09
Salvo em: 2026-02-21 14-22-10.srt
1h 55min 19s de áudio em 4min 18s — 27x realtime
| Duração do áudio | Tempo de processamento | Velocidade |
|---|---|---|
| 11min 26s | 20s | 34x realtime |
| 1h 55min 19s | 4min 18s | 27x realtime |
| Modelo | Tamanho | VRAM estimada | Observação |
|---|---|---|---|
| tiny | ~75 MB | ~1 GB | Mais rápido, menos preciso |
| base | ~145 MB | ~1 GB | |
| small | ~488 MB | ~2 GB | |
| medium | ~1.5 GB | ~5 GB | |
| large-v3 | ~3.1 GB | ~10 GB | Mais preciso |
| large-v3-turbo | ~1.6 GB | ~6 GB | Default — boa precisao com velocidade |
- txt — Texto puro, um parágrafo por segmento
- srt — SubRip, formato padrão de legenda
- vtt — WebVTT, compatível com HTML5
<track> - json — Array de objetos com timestamps (útil para integração)
| Argumento | Descrição | Default |
|---|---|---|
input |
Arquivo de vídeo/áudio ou diretório | — |
--lang, -l |
Código do idioma (pt, en, es...) | auto-detect |
--model, -m |
Modelo whisper | large-v3-turbo |
--format, -f |
Formato de saída (txt, srt, vtt, json) | txt |
--output, -o |
Arquivo de saída | mesmo nome + extensão |
--device |
cuda ou cpu | cuda |
--compute-type |
float16, int8_float16, int8 | float16 |
--beam-size |
Beam size para decodificação | 5 |
--vad / --no-vad |
VAD filter (Silero) | ativado |
--word-timestamps |
Timestamps por palavra | desativado |
--list-models |
Lista modelos disponíveis | — |
--verbose, -v |
Modo verboso | desativado |
Instale o CUDA toolkit e cuDNN do sistema:
# Arch/Manjaro
sudo pacman -S cuda cudnnVerifique se o driver NVIDIA está funcionando:
nvidia-smiIsso acontece quando a versão do CUDA do sistema (ex: 13.x) é mais recente que a versão esperada pelo CTranslate2 (12.x). O projeto já inclui as libs CUDA 12 via pip (nvidia-cublas-cu12, nvidia-cudnn-cu12) e as pré-carrega automaticamente. Se mesmo assim der erro, verifique se o uv sync instalou esses pacotes:
uv run python -c "import nvidia.cublas; print('cublas OK')"
uv run python -c "import nvidia.cudnn; print('cudnn OK')"O VLC pode ter problemas com codificação de legendas. Duas soluções:
-
No VLC: vá em Ferramentas > Preferências > Legendas/OSD e mude a codificação padrão para UTF-8.
-
Use o mpv (recomendado, funciona sem configuração):
sudo pacman -S mpv
mpv --sub-file="legenda.srt" video.mp4Este projeto roda 100% local. Nenhum dado é enviado para servidores externos. Não requer API key nem conta em nenhum serviço. Seus áudios e transcrições permanecem na sua máquina.
Projeto criado usando Claude Code com base no prompt.md.