PodcastSplitter is a local, privacy-first Python command-line tool that allows you to perform "paper edits" on multitrack audio recordings. By generating a transcript and allowing you to edit the text directly, this tool orchestrates a highly optimized FFmpeg complex filtergraph to slice, normalize, and crossfade your multitrack audio seamlessly.
- Text-Based Editing: Transcribes audio to a text file. Delete a sentence or a filler word in the text, and the audio is automatically cut.
- Multitrack Phase Alignment: Uses FFmpeg's
atrimandasetptsto synchronously slice all tracks simultaneously, ensuring dialogue remains perfectly phase-aligned. - Dynamic Crossfading: Automatically calculates and applies 10ms crossfades (
acrossfade) to every cut to prevent audio popping or clicking. - Per-Track Normalization: Individually levels out the volume of each speaker to broadcast standards (
loudnorm) before mixing. - Preserves Multitrack Output: The final render exports as an uncompressed, polyphonic multi-channel WAV file so you can still EQ and mix individual speakers in your DAW later.
- Privacy-First: Uses
faster-whisperfor local transcription. No audio is ever uploaded to the cloud.
- Python 3.8+
- FFmpeg: Must be installed and added to your system PATH.
- Windows users can install this easily via Winget:
winget install Gyan.FFmpeg.Essentials -e --accept-package-agreements --accept-source-agreements
- Windows users can install this easily via Winget:
- Nvidia GPU (Optional but Recommended): For significantly faster transcription times.
- Clone this repository:
git clone https://github.com/yourusername/PodcastSplitter.git cd PodcastSplitter - Install the required Python packages:
pip install -r requirements.txt
The tool operates in a two-step workflow: Transcribe and Render.
Run the transcription engine on your multitrack WAV file. This will isolate the channels, transcribe them, and generate an editable script.
python text_audio_editor.py transcribe input_multitrack.wavThis generates two files:
script.txt: The text file you will edit.reference.json: A hidden reference file containing the exact word-level timestamps.
Open script.txt in any text editor.
- Delete text: Simply delete any
{um},{uh}, or full sentences you want removed. - Re-order: You can move paragraphs around chronologically.
- Do NOT add new words: Because this tool maps text back to recorded timestamps, typing new words that weren't spoken will not generate audio.
- Do NOT change Track labels: Keep the
[ID:XXXX]andTrack X:labels intact.
Once you've saved your edits in script.txt, render the final audio.
python text_audio_editor.py render input_multitrack.wav script.txtThe script will parse your edits, generate a highly optimized filtergraph.txt, and execute FFmpeg to output your final edited multitrack WAV file (final_edit.wav).
Instead of relying on heavy Python audio libraries like Pydub (which load uncompressed audio directly into RAM and quickly cause memory exhaustion), this tool acts as a headless Non-Linear Editor (NLE).
It uses Python's difflib to map your text edits back to word-level timestamps, intelligently merges overlapping "keep" windows, and writes a direct FFmpeg complex filtergraph script. This pushes all the heavy lifting to highly optimized C-libraries, keeping memory consumption near zero regardless of the podcast length.