Audio prep (before transcription)

Host-side recording cleanup before you transcribe elsewhere. TranscriptX does not transcribe in the app — after merge/preprocess, use Transcribe Audio then Import Transcript.

Interactive GUI: System → Tools (tabs Preprocessing, Auto-merge, Manual merge). Requires host ffmpeg and pydub. Supported inputs include WAV, MP3, OGG, Opus (WhatsApp Desktop voice notes), M4A, FLAC, AAC, and WMA.

Theme G1 still covers optional transcript-part stitching vs remove — see ROADMAP.md.

Merge source profiles

Merge tab expander controls how split recordings and voice-note bursts are suggested and auto-merged. Settings live in {config_dir}/audio_merge_profiles.json (not project config.json). Edits in the expander apply to detection immediately; Save persists them.

Builtin defaults keep a 20-minute consecutive gap for messaging/recorder families; serial filename parts always merge. Per-profile day and minutes sliders let you tighten or loosen grouping (examples: WhatsApp same day within 2 hours; Zoom full day; Telegram same day within 6 hours).

Detected groups start unchecked; Select all / Select none toggle them. Auto-merge selected groups runs one merge per checked suggestion using the shared Merge options (backup / overwrite / preprocess / delete-originals). Hide drops a false match for this session; Don’t suggest again stores the group in {config_dir}/audio_merge_dismissed.json so it stays off the list later (Restore from the expander if you change your mind).

Host batch transcription can skip remaining groups with whispermlx-missing --skip-serial (and inbox-watch --skip-serial) so parts are not transcribed before you merge; dismissed groups are not skipped. See Host STT automation.

CLI helpers

Assess / preprocess (scripts/audio_preprocess.py):

uv run python scripts/audio_preprocess.py assess recording.wav
uv run python scripts/audio_preprocess.py run recording.wav --mode auto
uv run python scripts/audio_preprocess.py run recording.wav \
  --mode selected --step denoise --step normalize -o ./out --format mp3

Merge split parts (scripts/audio_merge.py):

Concatenates files into one MP3. Does not preprocess unless you pass --preprocess (or enable the Merge-form checkbox). Run Preprocessing separately when you want DSP without assuming it.

uv run python scripts/audio_merge.py part_1.wav part_2.wav -o merged.mp3
uv run python scripts/audio_merge.py --list paths.txt --no-backup --overwrite
uv run python scripts/audio_merge.py part_1.wav part_2.wav --preprocess -o merged.mp3

Requires ffmpeg (and typically pydub via the project install). Transcribe the resulting files externally, then use Import Transcript.