transcritorio 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- transcritorio-0.2.0/LICENSE +21 -0
- transcritorio-0.2.0/NOTICE +34 -0
- transcritorio-0.2.0/PKG-INFO +245 -0
- transcritorio-0.2.0/README.md +200 -0
- transcritorio-0.2.0/pyproject.toml +97 -0
- transcritorio-0.2.0/setup.cfg +4 -0
- transcritorio-0.2.0/transcribe_pipeline/__init__.py +7 -0
- transcritorio-0.2.0/transcribe_pipeline/__main__.py +5 -0
- transcritorio-0.2.0/transcribe_pipeline/app_service.py +976 -0
- transcritorio-0.2.0/transcribe_pipeline/app_settings.py +99 -0
- transcritorio-0.2.0/transcribe_pipeline/ask.py +133 -0
- transcritorio-0.2.0/transcribe_pipeline/assets/transcritorio_icon.ico +0 -0
- transcritorio-0.2.0/transcribe_pipeline/assets/transcritorio_icon.svg +10 -0
- transcritorio-0.2.0/transcribe_pipeline/audio.py +89 -0
- transcritorio-0.2.0/transcribe_pipeline/boundary_check.py +407 -0
- transcritorio-0.2.0/transcribe_pipeline/capabilities.py +361 -0
- transcritorio-0.2.0/transcribe_pipeline/channels.py +505 -0
- transcritorio-0.2.0/transcribe_pipeline/cli.py +718 -0
- transcritorio-0.2.0/transcribe_pipeline/config.py +251 -0
- transcritorio-0.2.0/transcribe_pipeline/cuda_installer.py +114 -0
- transcritorio-0.2.0/transcribe_pipeline/diagnostics.py +172 -0
- transcritorio-0.2.0/transcribe_pipeline/diar_signals.py +231 -0
- transcritorio-0.2.0/transcribe_pipeline/diarization.py +371 -0
- transcritorio-0.2.0/transcribe_pipeline/glossario.py +662 -0
- transcritorio-0.2.0/transcribe_pipeline/gui_launcher.py +147 -0
- transcritorio-0.2.0/transcribe_pipeline/gui_tk.py +240 -0
- transcritorio-0.2.0/transcribe_pipeline/install_tools.py +152 -0
- transcritorio-0.2.0/transcribe_pipeline/llm_env.py +141 -0
- transcritorio-0.2.0/transcribe_pipeline/llm_worker.py +410 -0
- transcritorio-0.2.0/transcribe_pipeline/manifest.py +295 -0
- transcritorio-0.2.0/transcribe_pipeline/mlx_whisper_runner.py +494 -0
- transcritorio-0.2.0/transcribe_pipeline/model_manager.py +1755 -0
- transcritorio-0.2.0/transcribe_pipeline/onnx_env.py +144 -0
- transcritorio-0.2.0/transcribe_pipeline/parakeet_runner.py +623 -0
- transcritorio-0.2.0/transcribe_pipeline/parakeet_worker.py +130 -0
- transcritorio-0.2.0/transcribe_pipeline/progress_bar_fallback.py +35 -0
- transcritorio-0.2.0/transcribe_pipeline/project_store.py +909 -0
- transcritorio-0.2.0/transcribe_pipeline/qc.py +266 -0
- transcritorio-0.2.0/transcribe_pipeline/recent_projects.py +41 -0
- transcritorio-0.2.0/transcribe_pipeline/render.py +618 -0
- transcritorio-0.2.0/transcribe_pipeline/research_context.py +93 -0
- transcritorio-0.2.0/transcribe_pipeline/review_store.py +393 -0
- transcritorio-0.2.0/transcribe_pipeline/review_studio_qt.py +11880 -0
- transcritorio-0.2.0/transcribe_pipeline/runtime.py +444 -0
- transcritorio-0.2.0/transcribe_pipeline/search.py +380 -0
- transcritorio-0.2.0/transcribe_pipeline/status.py +78 -0
- transcritorio-0.2.0/transcribe_pipeline/summarize.py +152 -0
- transcritorio-0.2.0/transcribe_pipeline/token_vault.py +271 -0
- transcritorio-0.2.0/transcribe_pipeline/ui_banners.py +53 -0
- transcritorio-0.2.0/transcribe_pipeline/ui_docs_panel.py +234 -0
- transcritorio-0.2.0/transcribe_pipeline/ui_shell.py +64 -0
- transcritorio-0.2.0/transcribe_pipeline/ui_tokens.py +134 -0
- transcritorio-0.2.0/transcribe_pipeline/utils.py +212 -0
- transcritorio-0.2.0/transcribe_pipeline/voice_recognition.py +172 -0
- transcritorio-0.2.0/transcribe_pipeline/whisperx_runner.py +302 -0
- transcritorio-0.2.0/transcribe_pipeline/words.py +127 -0
- transcritorio-0.2.0/transcritorio.egg-info/PKG-INFO +245 -0
- transcritorio-0.2.0/transcritorio.egg-info/SOURCES.txt +60 -0
- transcritorio-0.2.0/transcritorio.egg-info/dependency_links.txt +1 -0
- transcritorio-0.2.0/transcritorio.egg-info/entry_points.txt +5 -0
- transcritorio-0.2.0/transcritorio.egg-info/requires.txt +23 -0
- transcritorio-0.2.0/transcritorio.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Rogerio Jeronimo Barbosa
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Transcritorio — third-party components bundled with distributed binaries.
|
|
2
|
+
|
|
3
|
+
NOTE (2026-08): this notice applies to the LEGACY standalone releases
|
|
4
|
+
(.exe/.dmg/AppImage, v0.1.x), which bundled FFmpeg builds. The current
|
|
5
|
+
distribution channel (Python wheel on PyPI installed via uv) bundles no
|
|
6
|
+
third-party binaries: FFmpeg comes from the user's package manager
|
|
7
|
+
(winget/brew/apt) and Python dependencies come from PyPI under their own
|
|
8
|
+
licenses.
|
|
9
|
+
|
|
10
|
+
The Python source in this repository is licensed under the MIT License (see LICENSE).
|
|
11
|
+
|
|
12
|
+
Some distributed release artifacts bundle static builds of FFmpeg (ffmpeg + ffprobe),
|
|
13
|
+
which are licensed under the GNU General Public License (GPL). The bundled builds
|
|
14
|
+
come from the following upstream sources, which also provide the corresponding
|
|
15
|
+
source code required by the GPL:
|
|
16
|
+
|
|
17
|
+
- Windows x86_64: https://github.com/BtbN/FFmpeg-Builds (GPL 3.0 shared build)
|
|
18
|
+
- macOS arm64: https://evermeet.cx/ffmpeg/ (GPL 3.0 static build)
|
|
19
|
+
- Linux x86_64: https://johnvansickle.com/ffmpeg/ (GPL 3.0 static build)
|
|
20
|
+
|
|
21
|
+
Using, redistributing or modifying the bundled FFmpeg binaries is subject to the
|
|
22
|
+
terms of their license. The Python source of Transcritorio (MIT) and the bundled
|
|
23
|
+
FFmpeg binaries (GPL) are distributed together as a convenience; this repository
|
|
24
|
+
as source does not include, require or derive from FFmpeg's source code.
|
|
25
|
+
|
|
26
|
+
This product also relies on the following open-source libraries (each under its
|
|
27
|
+
own permissive or compatible license; not bundled as binary):
|
|
28
|
+
|
|
29
|
+
- WhisperX https://github.com/m-bain/whisperX BSD-2
|
|
30
|
+
- faster-whisper https://github.com/SYSTRAN/faster-whisper MIT
|
|
31
|
+
- mlx-whisper https://github.com/ml-explore/mlx-examples MIT
|
|
32
|
+
- pyannote.audio https://github.com/pyannote/pyannote-audio MIT
|
|
33
|
+
- PySide6 https://pypi.org/project/PySide6/ LGPL
|
|
34
|
+
- torch https://pytorch.org BSD-3
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: transcritorio
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Transcricao local de entrevistas em portugues brasileiro, com separacao de falantes (WhisperX + pyannote). Nenhum audio sai do computador.
|
|
5
|
+
Author: Rogerio Jeronimo Barbosa
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://antrologos.github.io/Transcritorio/pt/
|
|
8
|
+
Project-URL: Repository, https://github.com/antrologos/Transcritorio
|
|
9
|
+
Project-URL: Changelog, https://github.com/antrologos/Transcritorio/blob/main/CHANGELOG.md
|
|
10
|
+
Project-URL: Issues, https://github.com/antrologos/Transcritorio/issues
|
|
11
|
+
Keywords: transcricao,whisper,whisperx,diarizacao,entrevistas,pesquisa-qualitativa,asr
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Natural Language :: Portuguese (Brazilian)
|
|
15
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
16
|
+
Classifier: Operating System :: MacOS
|
|
17
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Topic :: Multimedia :: Sound/Audio :: Speech
|
|
20
|
+
Requires-Python: <3.14,>=3.10
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
License-File: NOTICE
|
|
24
|
+
Requires-Dist: PySide6==6.11.0
|
|
25
|
+
Requires-Dist: whisperx==3.8.5
|
|
26
|
+
Requires-Dist: pyannote-audio==4.0.4
|
|
27
|
+
Requires-Dist: faster-whisper==1.2.1
|
|
28
|
+
Requires-Dist: torchcodec==0.7.0
|
|
29
|
+
Requires-Dist: huggingface_hub>=0.28.1
|
|
30
|
+
Requires-Dist: python-docx>=1.2.0
|
|
31
|
+
Requires-Dist: jiwer>=3.0.0
|
|
32
|
+
Requires-Dist: keyring>=24
|
|
33
|
+
Requires-Dist: cryptography>=42
|
|
34
|
+
Requires-Dist: onnx-asr<1.0,>=0.12
|
|
35
|
+
Requires-Dist: onnxruntime>=1.20
|
|
36
|
+
Provides-Extra: build
|
|
37
|
+
Requires-Dist: pyinstaller>=6.0; extra == "build"
|
|
38
|
+
Provides-Extra: mac
|
|
39
|
+
Requires-Dist: mlx-whisper>=0.4.0; extra == "mac"
|
|
40
|
+
Provides-Extra: cuda
|
|
41
|
+
Requires-Dist: torch>=2.7; extra == "cuda"
|
|
42
|
+
Requires-Dist: torchaudio>=2.7; extra == "cuda"
|
|
43
|
+
Requires-Dist: torchvision>=0.22; extra == "cuda"
|
|
44
|
+
Dynamic: license-file
|
|
45
|
+
|
|
46
|
+
# Transcritório
|
|
47
|
+
|
|
48
|
+
[](https://pypi.org/project/transcritorio/)
|
|
49
|
+
[](LICENSE)
|
|
50
|
+

|
|
51
|
+
[](https://antrologos.github.io/Transcritorio/pt/)
|
|
52
|
+
|
|
53
|
+
**Transcreva entrevistas sem enviar seu áudio para a nuvem.**
|
|
54
|
+
Aplicativo desktop gratuito para transcrição automática e separação de falantes em português brasileiro.
|
|
55
|
+
|
|
56
|
+
- **100% local** — o áudio nunca sai da sua máquina; compatível com LGPD e com qualquer TCLE razoável.
|
|
57
|
+
- **Português brasileiro nativo** — baseado no Whisper (modelo de transcrição de fala da OpenAI) treinado com ampla variação dialetal.
|
|
58
|
+
- **Gratuito e código aberto** — licença MIT, desenvolvido no IESP-UERJ / CERES. Sem assinatura, sem telemetria (o primeiro uso pede apenas uma conta gratuita da Hugging Face para baixar o modelo de separação de falantes).
|
|
59
|
+
|
|
60
|
+
Site do projeto: **[antrologos.github.io/Transcritorio](https://antrologos.github.io/Transcritorio/pt/)** (passo a passo com imagens)
|
|
61
|
+
|
|
62
|
+
## Instalação
|
|
63
|
+
|
|
64
|
+
O Transcritório é instalado pelo [uv](https://docs.astral.sh/uv/), que baixa o Python e todas as dependências **das fontes oficiais** (Microsoft, PyPI, PyTorch). É uma vez só; no dia a dia você abre pelo atalho da área de trabalho.
|
|
65
|
+
|
|
66
|
+
**Windows 10/11, sem terminal (recomendado)** — baixe o instalador de um clique e clique duas vezes nele:
|
|
67
|
+
|
|
68
|
+
**[⬇ Instalar-Transcritorio.bat](https://github.com/antrologos/Transcritorio/releases/latest/download/Instalar-Transcritorio.bat)**
|
|
69
|
+
|
|
70
|
+
Ele faz sozinho os três comandos abaixo, mostra o progresso e abre o programa no final (se o Windows perguntar "Deseja executar este arquivo?", confirme — o script é [auditável](scripts/Instalar-Transcritorio.bat) e só instala de fontes oficiais assinadas). Para atualizar depois: [Atualizar-Transcritorio.bat](https://github.com/antrologos/Transcritorio/releases/latest/download/Atualizar-Transcritorio.bat).
|
|
71
|
+
|
|
72
|
+
**Windows 10/11, pelo terminal** — abra o *Prompt de Comando* (menu Iniciar → digite `cmd` → Enter) e cole os três comandos, um por vez:
|
|
73
|
+
|
|
74
|
+
```bat
|
|
75
|
+
winget install astral-sh.uv
|
|
76
|
+
winget install Gyan.FFmpeg
|
|
77
|
+
uv tool install transcritorio
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Feche e reabra o Prompt, digite `transcritorio` e pressione Enter. O programa abre e cria o atalho **Transcritório** na área de trabalho — a partir daí, é só clicar nele.
|
|
81
|
+
|
|
82
|
+
Guia detalhado com solução de problemas: [`docs/INSTALL_WINDOWS.md`](docs/INSTALL_WINDOWS.md)
|
|
83
|
+
|
|
84
|
+
**macOS (beta)** — no Terminal, com [Homebrew](https://brew.sh):
|
|
85
|
+
|
|
86
|
+
```sh
|
|
87
|
+
brew install uv ffmpeg
|
|
88
|
+
uv tool install transcritorio
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Em Apple Silicon (M1/M2/M3/M4), use `uv tool install "transcritorio[mac]"` para transcrever com aceleração Metal. Sem Gatekeeper: não há app para "autorizar". Guia: [`docs/MAC_INSTALL.md`](docs/MAC_INSTALL.md)
|
|
92
|
+
|
|
93
|
+
**Linux (beta)** — no terminal:
|
|
94
|
+
|
|
95
|
+
```sh
|
|
96
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
97
|
+
sudo apt install ffmpeg # ou o gerenciador da sua distribuição
|
|
98
|
+
uv tool install transcritorio
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Guia: [`docs/LINUX_INSTALL.md`](docs/LINUX_INSTALL.md)
|
|
102
|
+
|
|
103
|
+
- **Atualizar:** `uv tool upgrade transcritorio` (o app avisa quando há versão nova).
|
|
104
|
+
- **Reparar:** menu **Ajuda → Reparar instalação** (não afeta projetos, áudios nem modelos).
|
|
105
|
+
- **Aceleração NVIDIA (opcional, 3–9× mais rápido):** menu **Transcrever → Instalar aceleração NVIDIA**.
|
|
106
|
+
|
|
107
|
+
> **Por que não tem mais instalador `.exe`?** As versões em instalador (.exe/.dmg/AppImage) foram descontinuadas: sem assinatura digital paga, antivírus e SmartScreen bloqueavam a instalação para boa parte dos usuários. O formato atual usa apenas componentes assinados pelos distribuidores oficiais e elimina esses bloqueios. Histórico e downloads antigos: [`docs/LEGACY_STANDALONE.md`](docs/LEGACY_STANDALONE.md).
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Para pesquisadores
|
|
112
|
+
|
|
113
|
+
### O que você consegue fazer
|
|
114
|
+
|
|
115
|
+
- **Importar** áudios e vídeos (MP3, WAV, M4A, MP4 e outros) — arraste para a janela, um arquivo ou uma pasta inteira.
|
|
116
|
+
- **Transcrever** em português brasileiro com alta acurácia (90–96% em áudios limpos), com **dois motores locais**: Whisper (o padrão, nas variantes small a large-v3-turbo, escolhidas conforme a sua máquina) e o **Parakeet pt-BR "TAGARELA"** (experimental, muito rápido em CPU). Ao transcrever, o app pergunta quantas pessoas falam — entrevista a dois ou **grupo focal** (até ~8 participantes). Gravações em **16 outros idiomas** também transcrevem, com tempos por palavra.
|
|
117
|
+
- **Separar falantes** automaticamente — e nomeá-los ouvindo amostras: o diálogo **"De quem é esta voz?"** toca trechos de cada voz para você dizer quem é. Vozes recorrentes do projeto (ex.: a sua) passam a ser **reconhecidas automaticamente**. Uma **verificação acústica** confere cada troca de falante e marca com 🔍 as trocas duvidosas, no ponto exato do áudio.
|
|
118
|
+
- **Revisar no Estúdio** com player sincronizado, forma de onda interativa, cores por falante e edição por bloco — o duplo clique numa palavra leva o áudio até ela. Painéis ajustáveis: recolha o vídeo, amplie os blocos, trabalhe do seu jeito.
|
|
119
|
+
- **Analisar com AI local** (✨ nada sai do seu computador): **resumo com índice temático** de cada entrevista, **glossário de nomes** do projeto com **revisão de grafias** (a AI encontra "Joao/João/Jono" e você decide, ocorrência por ocorrência, com a grafia certa editável), e **"Perguntar às entrevistas"** — uma pergunta em português, respondida com citações dos trechos.
|
|
120
|
+
- **Exportar** em DOCX, MD, SRT, VTT, CSV, TSV e formato NVivo (importa direto no NVivo, Atlas.ti, MAXQDA ou num script R/Python). A aba **Documentos** reúne tudo que o app produz, com data e botão de abrir.
|
|
121
|
+
- **Tudo offline** depois do download inicial dos modelos (uma única vez; o tamanho depende do perfil de instalação — ver abaixo).
|
|
122
|
+
|
|
123
|
+
### Requisitos por tipo de instalação
|
|
124
|
+
|
|
125
|
+
O assistente de primeiro uso examina a sua máquina e sugere o perfil
|
|
126
|
+
adequado — nada é imposto, e dá para mudar depois em **Ferramentas →
|
|
127
|
+
Gerenciar modelos…**. Números medidos (disco = aplicativo + modelos;
|
|
128
|
+
tempos em CPU de 8 núcleos — em 4 núcleos, conte aproximadamente o dobro):
|
|
129
|
+
|
|
130
|
+
| Perfil | O que faz | Máquina | Disco | 1 h de áudio |
|
|
131
|
+
|---|---|---|---|---|
|
|
132
|
+
| **Essencial** | Só transcrever (modelo `small`) | 2+ núcleos, 4 GB RAM | ~3,5 GB | ~1 h (CPU) |
|
|
133
|
+
| **Padrão** | + separar falantes + tempos por palavra | 4+ núcleos, 8 GB RAM | ~5 GB | ~1–1,5 h (CPU) |
|
|
134
|
+
| **Padrão + GPU** | idem, com aceleração NVIDIA (`large-v3-turbo`) | GPU NVIDIA 4 GB+ VRAM | ~10 GB | ~5–10 min |
|
|
135
|
+
| **Completo** | + análise com AI local (resumo, glossário, perguntar) | GPU NVIDIA 6 GB+ VRAM, 16 GB RAM | ~19 GB | ~5–10 min |
|
|
136
|
+
|
|
137
|
+
> **Máquina modesta, pressa grande?** O motor experimental **Parakeet
|
|
138
|
+
> pt-BR (TAGARELA)** transcreve ~25× mais rápido que o tempo real **em
|
|
139
|
+
> CPU** (1 h de áudio em poucos minutos, sem placa de vídeo) — escolha-o
|
|
140
|
+
> clicando no selo **Modelo** da barra inferior (ou em **Ferramentas →
|
|
141
|
+
> Configurar transcrição…**). Por ser experimental, revise com um pouco
|
|
142
|
+
> mais de atenção.
|
|
143
|
+
|
|
144
|
+
### Primeiros passos
|
|
145
|
+
|
|
146
|
+
**1. Instale e abra.** Siga a seção **Instalação** acima (três comandos, uma vez). Depois, abra pelo atalho **Transcritório** da área de trabalho. No primeiro uso, um assistente em português prepara os modelos de IA — e pergunta se você quer a identificação de falantes (opcional).
|
|
147
|
+
|
|
148
|
+
**2. Crie um projeto.** Abra o Transcritório e vá em **Projeto → Novo projeto…** Dê um nome (ex.: `tese-entrevistas-2026`) e escolha uma pasta. O app cria uma estrutura `.transcricao` com áudios, transcrições e metadados lado a lado — fácil de fazer backup e arquivar.
|
|
149
|
+
|
|
150
|
+
**3. Adicione os áudios ou vídeos.** Clique em **Adicionar mídia…** (ou arraste arquivos para a janela). Ao transcrever, o app pergunta quantas pessoas falam (entrevista, grupo focal, número exato ou automático) — e **Editar propriedades…** permite ajustar por arquivo depois (idioma, falantes, rótulos).
|
|
151
|
+
|
|
152
|
+
**4. Clique em Transcrever e revise no Estúdio.** O botão **Transcrever** faz o fluxo completo: prepara o áudio, transcreve, separa os falantes e monta o texto editável. Ao final, o diálogo **"De quem é esta voz?"** toca uma amostra de cada voz para você nomeá-las — os nomes valem para a transcrição inteira. Tempos realistas para 1 hora de entrevista: **~5–10 min** em máquina com GPU NVIDIA ou Apple Silicon, **~20–30 min** em notebook recente sem GPU, **~40–60 min** em máquina modesta. Ao final, abra o **Estúdio de Revisão** para ouvir o áudio sincronizado com o texto, ajustar trechos com a forma de onda e exportar. Guia visual completo no [site do projeto](https://antrologos.github.io/Transcritorio/pt/#how).
|
|
153
|
+
|
|
154
|
+
> **Modelos de IA no primeiro uso:** o Transcritório baixa os modelos uma única vez (~5 GB só para transcrever; ~7 GB com identificação de falantes); depois roda offline. A **identificação de falantes é opcional**: quem quer apenas transcrever não precisa de cadastro algum. Quem a ativa é orientado pelo assistente a criar uma conta gratuita na [Hugging Face](https://huggingface.co/), aceitar os termos do modelo pyannote e colar um *token* de leitura — tudo em português, e dá para ativar depois sem repetir as transcrições.
|
|
155
|
+
|
|
156
|
+
### Privacidade e ética
|
|
157
|
+
|
|
158
|
+
- **Processamento 100% local:** o áudio da entrevista nunca é enviado a servidores externos.
|
|
159
|
+
- **Sem coleta de dados, sem telemetria:** nenhum dado sai do seu computador. O único cadastro externo é a conta gratuita da Hugging Face, usada apenas uma vez para baixar o modelo de separação de falantes.
|
|
160
|
+
- **Código-fonte aberto sob licença MIT:** auditável por qualquer pessoa, incluindo o setor de TI da sua instituição.
|
|
161
|
+
- **Compatível com LGPD e TCLE:** você mantém controle integral sobre o áudio do informante e pode demonstrar a cadeia de custódia dos dados.
|
|
162
|
+
|
|
163
|
+
**Texto pronto para submissão ao CEP** (copie e cole no seu projeto de pesquisa):
|
|
164
|
+
|
|
165
|
+
> A transcrição e a separação automática de falantes dos áudios coletados nesta pesquisa serão realizadas por meio do software Transcritório (Barbosa, 2026), uma aplicação de desktop gratuita e de código aberto (licença MIT), desenvolvida no IESP-UERJ/CERES. Todo o processamento ocorre localmente na máquina do pesquisador, sem envio do material a servidores externos, em conformidade com a Lei nº 13.709/2018 (LGPD) e com o TCLE assinado pelos participantes. O software utiliza os modelos Whisper (Radford et al., 2022) para transcrição e pyannote.audio (Bredin et al., 2020) para separação de falantes, ambos executados offline.
|
|
166
|
+
|
|
167
|
+
### Como citar
|
|
168
|
+
|
|
169
|
+
Barbosa, R. J. (2026). *Transcritório: transcrição local de entrevistas em português brasileiro* (v0.2.0) [Software]. IESP-UERJ/CERES. https://github.com/antrologos/Transcritorio
|
|
170
|
+
|
|
171
|
+
```bibtex
|
|
172
|
+
@software{barbosa2026transcritorio,
|
|
173
|
+
author = {Barbosa, Rog{\'e}rio Jer{\^o}nimo},
|
|
174
|
+
title = {Transcrit{\'o}rio: transcri{\c{c}}{\~a}o local de entrevistas em portugu{\^e}s brasileiro},
|
|
175
|
+
year = {2026},
|
|
176
|
+
version = {0.2.0},
|
|
177
|
+
publisher = {IESP-UERJ/CERES},
|
|
178
|
+
license = {MIT},
|
|
179
|
+
url = {https://github.com/antrologos/Transcritorio}
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
O GitHub também exibe o botão **"Cite this repository"** no menu lateral, com os mesmos dados em formato APA e BibTeX, lendo o arquivo [`CITATION.cff`](CITATION.cff).
|
|
184
|
+
|
|
185
|
+
Modelos de IA utilizados:
|
|
186
|
+
- Radford, A., Kim, J. W., Xu, T., Brockman, G., McLeavey, C., & Sutskever, I. (2022). *Robust speech recognition via large-scale weak supervision*. arXiv. https://arxiv.org/abs/2212.04356
|
|
187
|
+
- Bredin, H., Yin, R., Coria, J. M., Gelly, G., Korshunov, P., Lavechin, M., Fustes, D., Titeux, H., Bouaziz, W., & Gill, M.-P. (2020). *pyannote.audio: neural building blocks for speaker diarization*. ICASSP 2020. https://arxiv.org/abs/1911.01255
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Para desenvolvedores
|
|
192
|
+
|
|
193
|
+
Se você quer rodar do código-fonte, contribuir com pull requests ou auditar o pipeline:
|
|
194
|
+
|
|
195
|
+
- **Setup de ambiente, CLI e primeiros commits:** [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md)
|
|
196
|
+
- **Arquitetura do pipeline e estrutura de arquivos:** [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)
|
|
197
|
+
- **Histórico de experimentos e decisões de modelo (testes A/B, variants):** [`docs/EXPERIMENTS.md`](docs/EXPERIMENTS.md)
|
|
198
|
+
- **Checklist pré-release (canal standalone legado):** [`docs/PACKAGING_CHECKLIST.md`](docs/PACKAGING_CHECKLIST.md)
|
|
199
|
+
- **Segurança de tokens:** [`docs/SEGURANCA_SEGREDOS.md`](docs/SEGURANCA_SEGREDOS.md)
|
|
200
|
+
- **Instalação no macOS:** [`docs/MAC_INSTALL.md`](docs/MAC_INSTALL.md)
|
|
201
|
+
- **Instalação no Linux:** [`docs/LINUX_INSTALL.md`](docs/LINUX_INSTALL.md)
|
|
202
|
+
- **Aceleração MLX no Apple Silicon:** [`docs/MLX_WHISPER_MACOS.md`](docs/MLX_WHISPER_MACOS.md)
|
|
203
|
+
- **Troubleshooting macOS/Linux:** [`docs/MAC_LINUX.md`](docs/MAC_LINUX.md)
|
|
204
|
+
- **Code signing no Windows (encerrado — canal standalone aposentado):** [`docs/WINDOWS_CODE_SIGNING.md`](docs/WINDOWS_CODE_SIGNING.md)
|
|
205
|
+
|
|
206
|
+
### Estrutura do repositório
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
transcribe_pipeline/ pacote Python principal (GUI, CLI, runners, render)
|
|
210
|
+
scripts/ instaladores .bat de duplo clique + wrappers CMD/PS1 (dev)
|
|
211
|
+
packaging/ (LEGADO) spec do PyInstaller, Inno Setup, hooks
|
|
212
|
+
tests/ toy tests (isolados) e smoke tests
|
|
213
|
+
docs/ documentação completa
|
|
214
|
+
.github/workflows/ ci.yml (testes) e publish.yml (tag v* → PyPI);
|
|
215
|
+
release.yml é o build standalone LEGADO (manual)
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Status
|
|
221
|
+
|
|
222
|
+
| Plataforma | Estado | Notas |
|
|
223
|
+
|---|---|---|
|
|
224
|
+
| Windows 10/11 | Suportada | CPU por padrão; aceleração NVIDIA opcional pelo extra `[cuda]` (menu do app). |
|
|
225
|
+
| Linux x64 | Beta | Mesmo canal `uv tool install transcritorio`; CPU. |
|
|
226
|
+
| macOS (Apple Silicon) | Beta | `uv tool install "transcritorio[mac]"` habilita a aceleração Metal (MLX). |
|
|
227
|
+
|
|
228
|
+
As versões em instalador (.exe/.dmg/AppImage) foram descontinuadas — ver [`docs/LEGACY_STANDALONE.md`](docs/LEGACY_STANDALONE.md).
|
|
229
|
+
|
|
230
|
+
Histórico do desenvolvimento (era do app standalone): [`docs/STANDALONE_APP_ROADMAP.md`](docs/STANDALONE_APP_ROADMAP.md).
|
|
231
|
+
|
|
232
|
+
## Contribuir e reportar bugs
|
|
233
|
+
|
|
234
|
+
- Bugs e sugestões: [GitHub Issues](https://github.com/antrologos/Transcritorio/issues).
|
|
235
|
+
- Discussões de metodologia e uso em pesquisa qualitativa são bem-vindas no mesmo canal.
|
|
236
|
+
- Pull requests: siga o estilo do código existente; toy tests passando em Windows/Linux/macOS; sem refatoração além do escopo.
|
|
237
|
+
|
|
238
|
+
## Licença e autoria
|
|
239
|
+
|
|
240
|
+
Software distribuído sob **licença MIT** (veja [`LICENSE`](LICENSE)).
|
|
241
|
+
Autor: **Rogério Jerônimo Barbosa** — IESP-UERJ / CERES — [antrologos.github.io](https://antrologos.github.io/) — [ORCID 0000-0002-6796-4547](https://orcid.org/0000-0002-6796-4547).
|
|
242
|
+
|
|
243
|
+
Agradecimentos às bibliotecas e modelos sobre os quais este projeto se apoia: [Whisper](https://github.com/openai/whisper) (OpenAI), [WhisperX](https://github.com/m-bain/whisperX), [faster-whisper](https://github.com/SYSTRAN/faster-whisper)/CTranslate2, [mlx-whisper](https://github.com/ml-explore/mlx-examples/tree/main/whisper), [pyannote.audio](https://github.com/pyannote/pyannote-audio), [Parakeet pt-BR](https://huggingface.co/nvidia) (NVIDIA) via [onnx-asr](https://github.com/istupakov/onnx-asr), [Qwen](https://github.com/QwenLM) (análise local), [GLiNER](https://github.com/urchade/GLiNER) (nomes), [PyTorch](https://pytorch.org/), [PySide6/Qt](https://pypi.org/project/PySide6/), [FFmpeg](https://ffmpeg.org/) e [uv](https://docs.astral.sh/uv/) (Astral).
|
|
244
|
+
|
|
245
|
+
No canal atual, o ffmpeg/ffprobe vêm do gerenciador de pacotes do sistema (winget/brew/apt) — nada é embutido. Nas releases legadas em instalador, o ffmpeg/ffprobe embutidos eram builds GPL de terceiros (BtbN para Windows, evermeet.cx para macOS, johnvansickle.com para Linux); veja [`NOTICE`](NOTICE) para a lista de componentes dessas versões e seus termos.
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# Transcritório
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/transcritorio/)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+

|
|
6
|
+
[](https://antrologos.github.io/Transcritorio/pt/)
|
|
7
|
+
|
|
8
|
+
**Transcreva entrevistas sem enviar seu áudio para a nuvem.**
|
|
9
|
+
Aplicativo desktop gratuito para transcrição automática e separação de falantes em português brasileiro.
|
|
10
|
+
|
|
11
|
+
- **100% local** — o áudio nunca sai da sua máquina; compatível com LGPD e com qualquer TCLE razoável.
|
|
12
|
+
- **Português brasileiro nativo** — baseado no Whisper (modelo de transcrição de fala da OpenAI) treinado com ampla variação dialetal.
|
|
13
|
+
- **Gratuito e código aberto** — licença MIT, desenvolvido no IESP-UERJ / CERES. Sem assinatura, sem telemetria (o primeiro uso pede apenas uma conta gratuita da Hugging Face para baixar o modelo de separação de falantes).
|
|
14
|
+
|
|
15
|
+
Site do projeto: **[antrologos.github.io/Transcritorio](https://antrologos.github.io/Transcritorio/pt/)** (passo a passo com imagens)
|
|
16
|
+
|
|
17
|
+
## Instalação
|
|
18
|
+
|
|
19
|
+
O Transcritório é instalado pelo [uv](https://docs.astral.sh/uv/), que baixa o Python e todas as dependências **das fontes oficiais** (Microsoft, PyPI, PyTorch). É uma vez só; no dia a dia você abre pelo atalho da área de trabalho.
|
|
20
|
+
|
|
21
|
+
**Windows 10/11, sem terminal (recomendado)** — baixe o instalador de um clique e clique duas vezes nele:
|
|
22
|
+
|
|
23
|
+
**[⬇ Instalar-Transcritorio.bat](https://github.com/antrologos/Transcritorio/releases/latest/download/Instalar-Transcritorio.bat)**
|
|
24
|
+
|
|
25
|
+
Ele faz sozinho os três comandos abaixo, mostra o progresso e abre o programa no final (se o Windows perguntar "Deseja executar este arquivo?", confirme — o script é [auditável](scripts/Instalar-Transcritorio.bat) e só instala de fontes oficiais assinadas). Para atualizar depois: [Atualizar-Transcritorio.bat](https://github.com/antrologos/Transcritorio/releases/latest/download/Atualizar-Transcritorio.bat).
|
|
26
|
+
|
|
27
|
+
**Windows 10/11, pelo terminal** — abra o *Prompt de Comando* (menu Iniciar → digite `cmd` → Enter) e cole os três comandos, um por vez:
|
|
28
|
+
|
|
29
|
+
```bat
|
|
30
|
+
winget install astral-sh.uv
|
|
31
|
+
winget install Gyan.FFmpeg
|
|
32
|
+
uv tool install transcritorio
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Feche e reabra o Prompt, digite `transcritorio` e pressione Enter. O programa abre e cria o atalho **Transcritório** na área de trabalho — a partir daí, é só clicar nele.
|
|
36
|
+
|
|
37
|
+
Guia detalhado com solução de problemas: [`docs/INSTALL_WINDOWS.md`](docs/INSTALL_WINDOWS.md)
|
|
38
|
+
|
|
39
|
+
**macOS (beta)** — no Terminal, com [Homebrew](https://brew.sh):
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
brew install uv ffmpeg
|
|
43
|
+
uv tool install transcritorio
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Em Apple Silicon (M1/M2/M3/M4), use `uv tool install "transcritorio[mac]"` para transcrever com aceleração Metal. Sem Gatekeeper: não há app para "autorizar". Guia: [`docs/MAC_INSTALL.md`](docs/MAC_INSTALL.md)
|
|
47
|
+
|
|
48
|
+
**Linux (beta)** — no terminal:
|
|
49
|
+
|
|
50
|
+
```sh
|
|
51
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
52
|
+
sudo apt install ffmpeg # ou o gerenciador da sua distribuição
|
|
53
|
+
uv tool install transcritorio
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Guia: [`docs/LINUX_INSTALL.md`](docs/LINUX_INSTALL.md)
|
|
57
|
+
|
|
58
|
+
- **Atualizar:** `uv tool upgrade transcritorio` (o app avisa quando há versão nova).
|
|
59
|
+
- **Reparar:** menu **Ajuda → Reparar instalação** (não afeta projetos, áudios nem modelos).
|
|
60
|
+
- **Aceleração NVIDIA (opcional, 3–9× mais rápido):** menu **Transcrever → Instalar aceleração NVIDIA**.
|
|
61
|
+
|
|
62
|
+
> **Por que não tem mais instalador `.exe`?** As versões em instalador (.exe/.dmg/AppImage) foram descontinuadas: sem assinatura digital paga, antivírus e SmartScreen bloqueavam a instalação para boa parte dos usuários. O formato atual usa apenas componentes assinados pelos distribuidores oficiais e elimina esses bloqueios. Histórico e downloads antigos: [`docs/LEGACY_STANDALONE.md`](docs/LEGACY_STANDALONE.md).
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Para pesquisadores
|
|
67
|
+
|
|
68
|
+
### O que você consegue fazer
|
|
69
|
+
|
|
70
|
+
- **Importar** áudios e vídeos (MP3, WAV, M4A, MP4 e outros) — arraste para a janela, um arquivo ou uma pasta inteira.
|
|
71
|
+
- **Transcrever** em português brasileiro com alta acurácia (90–96% em áudios limpos), com **dois motores locais**: Whisper (o padrão, nas variantes small a large-v3-turbo, escolhidas conforme a sua máquina) e o **Parakeet pt-BR "TAGARELA"** (experimental, muito rápido em CPU). Ao transcrever, o app pergunta quantas pessoas falam — entrevista a dois ou **grupo focal** (até ~8 participantes). Gravações em **16 outros idiomas** também transcrevem, com tempos por palavra.
|
|
72
|
+
- **Separar falantes** automaticamente — e nomeá-los ouvindo amostras: o diálogo **"De quem é esta voz?"** toca trechos de cada voz para você dizer quem é. Vozes recorrentes do projeto (ex.: a sua) passam a ser **reconhecidas automaticamente**. Uma **verificação acústica** confere cada troca de falante e marca com 🔍 as trocas duvidosas, no ponto exato do áudio.
|
|
73
|
+
- **Revisar no Estúdio** com player sincronizado, forma de onda interativa, cores por falante e edição por bloco — o duplo clique numa palavra leva o áudio até ela. Painéis ajustáveis: recolha o vídeo, amplie os blocos, trabalhe do seu jeito.
|
|
74
|
+
- **Analisar com AI local** (✨ nada sai do seu computador): **resumo com índice temático** de cada entrevista, **glossário de nomes** do projeto com **revisão de grafias** (a AI encontra "Joao/João/Jono" e você decide, ocorrência por ocorrência, com a grafia certa editável), e **"Perguntar às entrevistas"** — uma pergunta em português, respondida com citações dos trechos.
|
|
75
|
+
- **Exportar** em DOCX, MD, SRT, VTT, CSV, TSV e formato NVivo (importa direto no NVivo, Atlas.ti, MAXQDA ou num script R/Python). A aba **Documentos** reúne tudo que o app produz, com data e botão de abrir.
|
|
76
|
+
- **Tudo offline** depois do download inicial dos modelos (uma única vez; o tamanho depende do perfil de instalação — ver abaixo).
|
|
77
|
+
|
|
78
|
+
### Requisitos por tipo de instalação
|
|
79
|
+
|
|
80
|
+
O assistente de primeiro uso examina a sua máquina e sugere o perfil
|
|
81
|
+
adequado — nada é imposto, e dá para mudar depois em **Ferramentas →
|
|
82
|
+
Gerenciar modelos…**. Números medidos (disco = aplicativo + modelos;
|
|
83
|
+
tempos em CPU de 8 núcleos — em 4 núcleos, conte aproximadamente o dobro):
|
|
84
|
+
|
|
85
|
+
| Perfil | O que faz | Máquina | Disco | 1 h de áudio |
|
|
86
|
+
|---|---|---|---|---|
|
|
87
|
+
| **Essencial** | Só transcrever (modelo `small`) | 2+ núcleos, 4 GB RAM | ~3,5 GB | ~1 h (CPU) |
|
|
88
|
+
| **Padrão** | + separar falantes + tempos por palavra | 4+ núcleos, 8 GB RAM | ~5 GB | ~1–1,5 h (CPU) |
|
|
89
|
+
| **Padrão + GPU** | idem, com aceleração NVIDIA (`large-v3-turbo`) | GPU NVIDIA 4 GB+ VRAM | ~10 GB | ~5–10 min |
|
|
90
|
+
| **Completo** | + análise com AI local (resumo, glossário, perguntar) | GPU NVIDIA 6 GB+ VRAM, 16 GB RAM | ~19 GB | ~5–10 min |
|
|
91
|
+
|
|
92
|
+
> **Máquina modesta, pressa grande?** O motor experimental **Parakeet
|
|
93
|
+
> pt-BR (TAGARELA)** transcreve ~25× mais rápido que o tempo real **em
|
|
94
|
+
> CPU** (1 h de áudio em poucos minutos, sem placa de vídeo) — escolha-o
|
|
95
|
+
> clicando no selo **Modelo** da barra inferior (ou em **Ferramentas →
|
|
96
|
+
> Configurar transcrição…**). Por ser experimental, revise com um pouco
|
|
97
|
+
> mais de atenção.
|
|
98
|
+
|
|
99
|
+
### Primeiros passos
|
|
100
|
+
|
|
101
|
+
**1. Instale e abra.** Siga a seção **Instalação** acima (três comandos, uma vez). Depois, abra pelo atalho **Transcritório** da área de trabalho. No primeiro uso, um assistente em português prepara os modelos de IA — e pergunta se você quer a identificação de falantes (opcional).
|
|
102
|
+
|
|
103
|
+
**2. Crie um projeto.** Abra o Transcritório e vá em **Projeto → Novo projeto…** Dê um nome (ex.: `tese-entrevistas-2026`) e escolha uma pasta. O app cria uma estrutura `.transcricao` com áudios, transcrições e metadados lado a lado — fácil de fazer backup e arquivar.
|
|
104
|
+
|
|
105
|
+
**3. Adicione os áudios ou vídeos.** Clique em **Adicionar mídia…** (ou arraste arquivos para a janela). Ao transcrever, o app pergunta quantas pessoas falam (entrevista, grupo focal, número exato ou automático) — e **Editar propriedades…** permite ajustar por arquivo depois (idioma, falantes, rótulos).
|
|
106
|
+
|
|
107
|
+
**4. Clique em Transcrever e revise no Estúdio.** O botão **Transcrever** faz o fluxo completo: prepara o áudio, transcreve, separa os falantes e monta o texto editável. Ao final, o diálogo **"De quem é esta voz?"** toca uma amostra de cada voz para você nomeá-las — os nomes valem para a transcrição inteira. Tempos realistas para 1 hora de entrevista: **~5–10 min** em máquina com GPU NVIDIA ou Apple Silicon, **~20–30 min** em notebook recente sem GPU, **~40–60 min** em máquina modesta. Ao final, abra o **Estúdio de Revisão** para ouvir o áudio sincronizado com o texto, ajustar trechos com a forma de onda e exportar. Guia visual completo no [site do projeto](https://antrologos.github.io/Transcritorio/pt/#how).
|
|
108
|
+
|
|
109
|
+
> **Modelos de IA no primeiro uso:** o Transcritório baixa os modelos uma única vez (~5 GB só para transcrever; ~7 GB com identificação de falantes); depois roda offline. A **identificação de falantes é opcional**: quem quer apenas transcrever não precisa de cadastro algum. Quem a ativa é orientado pelo assistente a criar uma conta gratuita na [Hugging Face](https://huggingface.co/), aceitar os termos do modelo pyannote e colar um *token* de leitura — tudo em português, e dá para ativar depois sem repetir as transcrições.
|
|
110
|
+
|
|
111
|
+
### Privacidade e ética
|
|
112
|
+
|
|
113
|
+
- **Processamento 100% local:** o áudio da entrevista nunca é enviado a servidores externos.
|
|
114
|
+
- **Sem coleta de dados, sem telemetria:** nenhum dado sai do seu computador. O único cadastro externo é a conta gratuita da Hugging Face, usada apenas uma vez para baixar o modelo de separação de falantes.
|
|
115
|
+
- **Código-fonte aberto sob licença MIT:** auditável por qualquer pessoa, incluindo o setor de TI da sua instituição.
|
|
116
|
+
- **Compatível com LGPD e TCLE:** você mantém controle integral sobre o áudio do informante e pode demonstrar a cadeia de custódia dos dados.
|
|
117
|
+
|
|
118
|
+
**Texto pronto para submissão ao CEP** (copie e cole no seu projeto de pesquisa):
|
|
119
|
+
|
|
120
|
+
> A transcrição e a separação automática de falantes dos áudios coletados nesta pesquisa serão realizadas por meio do software Transcritório (Barbosa, 2026), uma aplicação de desktop gratuita e de código aberto (licença MIT), desenvolvida no IESP-UERJ/CERES. Todo o processamento ocorre localmente na máquina do pesquisador, sem envio do material a servidores externos, em conformidade com a Lei nº 13.709/2018 (LGPD) e com o TCLE assinado pelos participantes. O software utiliza os modelos Whisper (Radford et al., 2022) para transcrição e pyannote.audio (Bredin et al., 2020) para separação de falantes, ambos executados offline.
|
|
121
|
+
|
|
122
|
+
### Como citar
|
|
123
|
+
|
|
124
|
+
Barbosa, R. J. (2026). *Transcritório: transcrição local de entrevistas em português brasileiro* (v0.2.0) [Software]. IESP-UERJ/CERES. https://github.com/antrologos/Transcritorio
|
|
125
|
+
|
|
126
|
+
```bibtex
|
|
127
|
+
@software{barbosa2026transcritorio,
|
|
128
|
+
author = {Barbosa, Rog{\'e}rio Jer{\^o}nimo},
|
|
129
|
+
title = {Transcrit{\'o}rio: transcri{\c{c}}{\~a}o local de entrevistas em portugu{\^e}s brasileiro},
|
|
130
|
+
year = {2026},
|
|
131
|
+
version = {0.2.0},
|
|
132
|
+
publisher = {IESP-UERJ/CERES},
|
|
133
|
+
license = {MIT},
|
|
134
|
+
url = {https://github.com/antrologos/Transcritorio}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
O GitHub também exibe o botão **"Cite this repository"** no menu lateral, com os mesmos dados em formato APA e BibTeX, lendo o arquivo [`CITATION.cff`](CITATION.cff).
|
|
139
|
+
|
|
140
|
+
Modelos de IA utilizados:
|
|
141
|
+
- Radford, A., Kim, J. W., Xu, T., Brockman, G., McLeavey, C., & Sutskever, I. (2022). *Robust speech recognition via large-scale weak supervision*. arXiv. https://arxiv.org/abs/2212.04356
|
|
142
|
+
- Bredin, H., Yin, R., Coria, J. M., Gelly, G., Korshunov, P., Lavechin, M., Fustes, D., Titeux, H., Bouaziz, W., & Gill, M.-P. (2020). *pyannote.audio: neural building blocks for speaker diarization*. ICASSP 2020. https://arxiv.org/abs/1911.01255
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Para desenvolvedores
|
|
147
|
+
|
|
148
|
+
Se você quer rodar do código-fonte, contribuir com pull requests ou auditar o pipeline:
|
|
149
|
+
|
|
150
|
+
- **Setup de ambiente, CLI e primeiros commits:** [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md)
|
|
151
|
+
- **Arquitetura do pipeline e estrutura de arquivos:** [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)
|
|
152
|
+
- **Histórico de experimentos e decisões de modelo (testes A/B, variants):** [`docs/EXPERIMENTS.md`](docs/EXPERIMENTS.md)
|
|
153
|
+
- **Checklist pré-release (canal standalone legado):** [`docs/PACKAGING_CHECKLIST.md`](docs/PACKAGING_CHECKLIST.md)
|
|
154
|
+
- **Segurança de tokens:** [`docs/SEGURANCA_SEGREDOS.md`](docs/SEGURANCA_SEGREDOS.md)
|
|
155
|
+
- **Instalação no macOS:** [`docs/MAC_INSTALL.md`](docs/MAC_INSTALL.md)
|
|
156
|
+
- **Instalação no Linux:** [`docs/LINUX_INSTALL.md`](docs/LINUX_INSTALL.md)
|
|
157
|
+
- **Aceleração MLX no Apple Silicon:** [`docs/MLX_WHISPER_MACOS.md`](docs/MLX_WHISPER_MACOS.md)
|
|
158
|
+
- **Troubleshooting macOS/Linux:** [`docs/MAC_LINUX.md`](docs/MAC_LINUX.md)
|
|
159
|
+
- **Code signing no Windows (encerrado — canal standalone aposentado):** [`docs/WINDOWS_CODE_SIGNING.md`](docs/WINDOWS_CODE_SIGNING.md)
|
|
160
|
+
|
|
161
|
+
### Estrutura do repositório
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
transcribe_pipeline/ pacote Python principal (GUI, CLI, runners, render)
|
|
165
|
+
scripts/ instaladores .bat de duplo clique + wrappers CMD/PS1 (dev)
|
|
166
|
+
packaging/ (LEGADO) spec do PyInstaller, Inno Setup, hooks
|
|
167
|
+
tests/ toy tests (isolados) e smoke tests
|
|
168
|
+
docs/ documentação completa
|
|
169
|
+
.github/workflows/ ci.yml (testes) e publish.yml (tag v* → PyPI);
|
|
170
|
+
release.yml é o build standalone LEGADO (manual)
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Status
|
|
176
|
+
|
|
177
|
+
| Plataforma | Estado | Notas |
|
|
178
|
+
|---|---|---|
|
|
179
|
+
| Windows 10/11 | Suportada | CPU por padrão; aceleração NVIDIA opcional pelo extra `[cuda]` (menu do app). |
|
|
180
|
+
| Linux x64 | Beta | Mesmo canal `uv tool install transcritorio`; CPU. |
|
|
181
|
+
| macOS (Apple Silicon) | Beta | `uv tool install "transcritorio[mac]"` habilita a aceleração Metal (MLX). |
|
|
182
|
+
|
|
183
|
+
As versões em instalador (.exe/.dmg/AppImage) foram descontinuadas — ver [`docs/LEGACY_STANDALONE.md`](docs/LEGACY_STANDALONE.md).
|
|
184
|
+
|
|
185
|
+
Histórico do desenvolvimento (era do app standalone): [`docs/STANDALONE_APP_ROADMAP.md`](docs/STANDALONE_APP_ROADMAP.md).
|
|
186
|
+
|
|
187
|
+
## Contribuir e reportar bugs
|
|
188
|
+
|
|
189
|
+
- Bugs e sugestões: [GitHub Issues](https://github.com/antrologos/Transcritorio/issues).
|
|
190
|
+
- Discussões de metodologia e uso em pesquisa qualitativa são bem-vindas no mesmo canal.
|
|
191
|
+
- Pull requests: siga o estilo do código existente; toy tests passando em Windows/Linux/macOS; sem refatoração além do escopo.
|
|
192
|
+
|
|
193
|
+
## Licença e autoria
|
|
194
|
+
|
|
195
|
+
Software distribuído sob **licença MIT** (veja [`LICENSE`](LICENSE)).
|
|
196
|
+
Autor: **Rogério Jerônimo Barbosa** — IESP-UERJ / CERES — [antrologos.github.io](https://antrologos.github.io/) — [ORCID 0000-0002-6796-4547](https://orcid.org/0000-0002-6796-4547).
|
|
197
|
+
|
|
198
|
+
Agradecimentos às bibliotecas e modelos sobre os quais este projeto se apoia: [Whisper](https://github.com/openai/whisper) (OpenAI), [WhisperX](https://github.com/m-bain/whisperX), [faster-whisper](https://github.com/SYSTRAN/faster-whisper)/CTranslate2, [mlx-whisper](https://github.com/ml-explore/mlx-examples/tree/main/whisper), [pyannote.audio](https://github.com/pyannote/pyannote-audio), [Parakeet pt-BR](https://huggingface.co/nvidia) (NVIDIA) via [onnx-asr](https://github.com/istupakov/onnx-asr), [Qwen](https://github.com/QwenLM) (análise local), [GLiNER](https://github.com/urchade/GLiNER) (nomes), [PyTorch](https://pytorch.org/), [PySide6/Qt](https://pypi.org/project/PySide6/), [FFmpeg](https://ffmpeg.org/) e [uv](https://docs.astral.sh/uv/) (Astral).
|
|
199
|
+
|
|
200
|
+
No canal atual, o ffmpeg/ffprobe vêm do gerenciador de pacotes do sistema (winget/brew/apt) — nada é embutido. Nas releases legadas em instalador, o ffmpeg/ffprobe embutidos eram builds GPL de terceiros (BtbN para Windows, evermeet.cx para macOS, johnvansickle.com para Linux); veja [`NOTICE`](NOTICE) para a lista de componentes dessas versões e seus termos.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "transcritorio"
|
|
7
|
+
version = "0.2.0"
|
|
8
|
+
description = "Transcricao local de entrevistas em portugues brasileiro, com separacao de falantes (WhisperX + pyannote). Nenhum audio sai do computador."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = { text = "MIT" }
|
|
11
|
+
authors = [{ name = "Rogerio Jeronimo Barbosa" }]
|
|
12
|
+
# Teto necessario: torchcodec/torch/PySide6 demoram a publicar wheels para
|
|
13
|
+
# CPython novo — sem o teto, o uv escolhe o Python mais recente da maquina
|
|
14
|
+
# (ex.: 3.14) e a resolucao falha (bug real de beta tester, 2026-08-24).
|
|
15
|
+
# Com o teto, o uv baixa sozinho um 3.12/3.13 gerenciado.
|
|
16
|
+
requires-python = ">=3.10,<3.14"
|
|
17
|
+
keywords = ["transcricao", "whisper", "whisperx", "diarizacao", "entrevistas", "pesquisa-qualitativa", "asr"]
|
|
18
|
+
classifiers = [
|
|
19
|
+
"Development Status :: 4 - Beta",
|
|
20
|
+
"Intended Audience :: Science/Research",
|
|
21
|
+
"Natural Language :: Portuguese (Brazilian)",
|
|
22
|
+
"Operating System :: Microsoft :: Windows",
|
|
23
|
+
"Operating System :: MacOS",
|
|
24
|
+
"Operating System :: POSIX :: Linux",
|
|
25
|
+
"Programming Language :: Python :: 3",
|
|
26
|
+
"Topic :: Multimedia :: Sound/Audio :: Speech",
|
|
27
|
+
]
|
|
28
|
+
dependencies = [
|
|
29
|
+
"PySide6==6.11.0",
|
|
30
|
+
"whisperx==3.8.5",
|
|
31
|
+
"pyannote-audio==4.0.4",
|
|
32
|
+
"faster-whisper==1.2.1",
|
|
33
|
+
"torchcodec==0.7.0",
|
|
34
|
+
"huggingface_hub>=0.28.1",
|
|
35
|
+
"python-docx>=1.2.0",
|
|
36
|
+
"jiwer>=3.0.0",
|
|
37
|
+
"keyring>=24",
|
|
38
|
+
"cryptography>=42",
|
|
39
|
+
# Motor experimental Parakeet pt-BR (TAGARELA) via ONNX (E4-4).
|
|
40
|
+
# onnxruntime CPU: ~13x tempo real medido na RTX 4060 (so CPU);
|
|
41
|
+
# onnxruntime-gpu NAO entra no extra [cuda] — conflita com o pacote
|
|
42
|
+
# CPU e exigiria cuDNN proprio, sem ganho necessario.
|
|
43
|
+
"onnx-asr>=0.12,<1.0",
|
|
44
|
+
# Piso 1.20 (ultima serie com wheel py3.10); em py3.11+ resolve 1.29+.
|
|
45
|
+
"onnxruntime>=1.20",
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
[project.urls]
|
|
49
|
+
Homepage = "https://antrologos.github.io/Transcritorio/pt/"
|
|
50
|
+
Repository = "https://github.com/antrologos/Transcritorio"
|
|
51
|
+
Changelog = "https://github.com/antrologos/Transcritorio/blob/main/CHANGELOG.md"
|
|
52
|
+
Issues = "https://github.com/antrologos/Transcritorio/issues"
|
|
53
|
+
|
|
54
|
+
[project.scripts]
|
|
55
|
+
transcritorio-cli = "transcribe_pipeline.cli:main"
|
|
56
|
+
|
|
57
|
+
[project.gui-scripts]
|
|
58
|
+
transcritorio = "transcribe_pipeline.gui_launcher:main"
|
|
59
|
+
|
|
60
|
+
[project.optional-dependencies]
|
|
61
|
+
build = ["pyinstaller>=6.0"]
|
|
62
|
+
# Apple Silicon Metal acceleration via MLX. Installs only on macOS ARM64
|
|
63
|
+
# (mlx framework does not build on Windows/Linux). Safe to leave off the
|
|
64
|
+
# default dependency set — the runtime code path checks availability and
|
|
65
|
+
# falls back to the CPU whisperx path.
|
|
66
|
+
mac = ["mlx-whisper>=0.4.0"]
|
|
67
|
+
# Aceleracao NVIDIA (opcional, v0.2): declara torch/torchaudio/torchvision
|
|
68
|
+
# explicitamente para que o uv resolva os TRES do indice cu128 do PyTorch
|
|
69
|
+
# (ver [tool.uv.sources]) — misturar torch-cu128 com torchaudio/vision CPU
|
|
70
|
+
# do PyPI quebra por ABI. Sem este extra, tudo vem transitivamente do PyPI,
|
|
71
|
+
# que no Windows e CPU-only: o caminho seguro e o caminho default.
|
|
72
|
+
# pip puro: pip install "transcritorio[cuda]" --extra-index-url https://download.pytorch.org/whl/cu128
|
|
73
|
+
cuda = ["torch>=2.7", "torchaudio>=2.7", "torchvision>=0.22"]
|
|
74
|
+
# NAO existe extra [llm], de proposito: transformers>=5.13 (necessario para
|
|
75
|
+
# o Qwen3.5 da analise local) exige huggingface-hub>=1.5, e o whisperx
|
|
76
|
+
# 3.8.5 trava hub<1.0 — irreconciliavel no mesmo ambiente (uv lock,
|
|
77
|
+
# 2026-08-25). A analise local usa um AMBIENTE DEDICADO gerenciado pelo
|
|
78
|
+
# app (transcribe_pipeline/llm_env.py), criado sob demanda via uv — mesmo
|
|
79
|
+
# padrao do cuda_pack. O LLM ja roda em subprocesso por desenho.
|
|
80
|
+
|
|
81
|
+
[tool.uv.sources]
|
|
82
|
+
torch = [{ index = "pytorch-cu128", extra = "cuda" }]
|
|
83
|
+
torchaudio = [{ index = "pytorch-cu128", extra = "cuda" }]
|
|
84
|
+
torchvision = [{ index = "pytorch-cu128", extra = "cuda" }]
|
|
85
|
+
|
|
86
|
+
[[tool.uv.index]]
|
|
87
|
+
name = "pytorch-cu128"
|
|
88
|
+
url = "https://download.pytorch.org/whl/cu128"
|
|
89
|
+
explicit = true
|
|
90
|
+
|
|
91
|
+
[tool.setuptools.packages.find]
|
|
92
|
+
include = ["transcribe_pipeline*"]
|
|
93
|
+
|
|
94
|
+
[tool.setuptools.package-data]
|
|
95
|
+
# assets/* (icones): sem eles o app instalado por uv rodava sem icone de
|
|
96
|
+
# janela e o atalho da area de trabalho herdava o icone do pythonw.
|
|
97
|
+
transcribe_pipeline = ["py.typed", "assets/*"]
|