A small desktop app (Tkinter) to transcribe local audio files with AssemblyAI.
It:
- Loads
.m4a,.mp3,.wav, etc. (via ffmpeg + pydub) - Lets you choose the language (or auto-detect)
- Splits audio into 60s chunks with overlap (configurable)
- Saves per-chunk transcripts and a full joined transcript
⚠️ You need an AssemblyAI API key (paid or free tier). Don’t commit it—store it in.env.
- Simple GUI (pick file, language, chunk size, overlap)
- Works with
.m4a(common from iPhone voice notes) and many formats - Safer on Python 3.13 with
audioop-ltsbackport - Outputs:
YourFile_FULL.txtYourFile_parts/YourFile_partXXX_...txt
Chocolatey makes it easy to install ffmpeg.
-
Open PowerShell as Administrator
- Press Start, type
PowerShell, right-click, select Run as administrator.
- Press Start, type
-
Run this command:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
-
Close and reopen PowerShell to refresh PATH. Verify:
choco -v
In Administrator PowerShell:
choco install ffmpeg -yVerify:
ffmpeg -versionIf you see version info, ffmpeg is ready.
-
Open a normal PowerShell (no admin) and go to your folder:
cd "C:\Path\To\Transcribe" -
Create and activate a virtual environment:
python -m venv .venv .\.venv\Scripts\Activate.ps1 -
Install dependencies:
pip install -U pip pip install assemblyai pydub python-dotenv audioop-lts
Create a file .env in the project root:
ASSEMBLYAI_API_KEY=your_real_api_key_here
Or paste it directly in the app when running.
python main.py- Pick your audio file
- Choose a language or
ALDfor auto-detect - Adjust chunk/overlap if needed
- Click Transcribe
- Full transcript:
YourFile_FULL.txt - Per-chunk transcripts:
YourFile_parts/*.txtwith timestamps in filenames
“ffmpeg is not recognized”
-
Make sure
ffmpeg -versionworks in PowerShell -
If not, reinstall via Chocolatey (admin):
choco install ffmpeg -y
ModuleNotFoundError: audioop on Python 3.13
-
Install backport:
pip install audioop-lts -
Or use Python 3.12 for maximum compatibility
Large files or rate limits
- Keep chunk size at 60s
- Use 3–5s overlap for context continuity
- API key stays local (in
.envor entered in GUI) - Audio and transcripts are ignored by
.gitignoreto avoid accidental commits