Nucleate - 2026-01-05

I spent a good chunk of time this week centralizing the app’s styling into a single theme class to make managing colors, fonts, and styles easier. That helped clean up some inconsistencies, especially on Mac, where I ran into a few quirks that took about four days to iron out. Performance on Mac is still noticeably slower for transcription and summarization, probably due to weaker hardware, so I’m thinking about whether porting Whisper to better use Mac hardware acceleration would help, but I haven’t dug into that yet.

On the transcription side, I added Ollama detection, an Overdrive toggle, and started working on diarization. Diarization is still rough and gated behind pro features for now, mainly because it’s resource-heavy and causes VRAM spikes over 14 GB. To handle that, I bundled the diarization model directly with the app to move it offline, which adds around 300MB to the app size. That’s a tradeoff I’m not totally happy with, and I’m wondering if zipping the app will help reduce that bloat or if there’s a better way to keep the size down without losing functionality.

The transcription pipeline was a bit of a mess due to dependency conflicts. I ended up uninstalling the Hugging Face package and installing modules individually to resolve compatibility issues. After that, I got pyannote audio running on CPU and layered OpenAI Whisper on top to support transcription and diarization on CPU as well. Then I upgraded to the GPU torch package with CUDA 12.9 to enable GPU transcription and diarization, but managing memory is still a pain. Faster Whisper’s model unloader is clunky, and unloading models to free memory remains problematic. I’m planning to build a better unloading method for OpenAI Whisper and diarization to avoid VRAM bloat and crashes.

To keep the app responsive and avoid GPU overload, I integrated OpenAI, Whisper, Faster Whisper, and diarization as subprocesses that trigger automatically when files are detected. This approach seems to work better for balancing load, but I noticed stability issues when running many transcripts back to back—sometimes the app freezes, and I haven’t nailed down why yet.

I also simplified manual transcription by merging two similar classes, which cleaned up the code and should make future tweaks easier. Plus, I added support for M4A file conversion, which was a missing piece.

For diarization output, I added pulse processing to improve readability and structure, and polished the backend transcription to make it more reliable. Still, I’m trying to figure out how to get diarization and transcription to work smoothly together without hogging memory or causing instability.

There are a few open questions I’m wrestling with: How to fix the remaining dependency issues that disrupt transcription, how to develop a better model unloading system, whether porting Whisper for Mac acceleration is worth the effort, and how to manage AI engine settings and feature gating between pro and non-pro users. Also, I want to explore testing smaller diarization models or smarter GPU management to reduce those VRAM spikes. Overall, I’m making progress but there’s still a lot to clean up around stability, resource management, and app size before this feels solid.

Two-Line Takeaway

Key step forward

The most important forward progress step is centralizing the app’s styling into a single theme class and integrating subprocesses for transcription and diarization to balance GPU load.

Significant barrier or risk

The most important barrier or risk is managing memory and stability issues caused by VRAM spikes and dependency conflicts, which lead to app freezes and increased app size.

Keynotes

Decisions & Observations

  • Decided to centralize app styling into a single theme class to improve consistency and manageability.
  • Resolved transcription pipeline dependency conflicts by uninstalling Hugging Face package and installing modules individually.
  • Simplified manual transcription code by merging two similar classes and added M4A file conversion support.
  • Added pulse processing to diarization output to improve readability and polished backend transcription for reliability.

Issues & Next Steps

  • Bundled the diarization model with the app to enable offline use, increasing app size by ~300MB; exploring compression options to reduce bloat.
  • Needs to resolve ongoing stability issues causing app freezes during consecutive transcriptions.
  • Needs to develop a better model unloading method for OpenAI Whisper and diarization to prevent VRAM bloat and crashes.
  • Needs to address remaining dependency conflicts disrupting transcription.
  • Will explore porting Whisper to leverage Mac hardware acceleration to improve performance.
  • Will investigate testing smaller diarization models or smarter GPU memory management to reduce VRAM spikes.
  • Will determine best approach for managing AI engine settings and feature gating between pro and non-pro users.

Uncategorized Notes

  • Integrated OpenAI Whisper, Faster Whisper, and diarization as subprocesses to balance GPU load and maintain app responsiveness.

Generated with Nucleate by Watchlight Studio — distilled from full transcription.