github epicenter-os/epicenter v7.4.0
Whispering v7.4.0: Pre-Transcription Processing, FFmpeg Recording

latest release: v7.4.1
2 days ago

After diving deep into FFmpeg integration over the past several releases, we're taking it to the next level. There are two features I'm most excited about in this release: compression before transcription and FFmpeg as a recording method. These work together to give you more control and dramatically faster transcription times, especially when using cloud providers.

The Best of Both Worlds: Reliable CPAL Recording & Cloud Compatibility via Compression Before Transcription

Rust CPAL is now our default recording method, but its large, progressively written WAV files were often too large for cloud providers where size matters... until now!

Enable compression before transcription in your transcription settings, and Whispering will automatically run your audio through a custom FFmpeg command locally before sending it to your transcription provider. The compression pipeline can strip silence, shrink file sizes, and run any other custom flags you want before uploading (including formatting and other pre-processing). This enables us to get the reliability of our Rust CPAL implementation while ensuring compatibility with any local or online provider.

FFmpeg as a Recording Method

Remember when we introduced the choice between browser and native recording backends? Well, now there's a third option: FFmpeg recording. This unlocks extensive customization possibilities that neither the browser MediaRecorder API nor our Rust implementation could provide.

Head to Settings → Recording and you'll find FFmpeg as a new recording method option. Once selected, you get access to highly customizable recording parameters that FFmpeg users will feel right at home with. This builds on all the FFmpeg detection and integration work we've been doing since v7.3.1, but now it's handling the actual recording process too.

For users who want complete control, we've added a visual FFmpeg command builder. Instead of memorizing FFmpeg syntax, you can build your compression and recording commands through a UI that shows you exactly what's being executed.

The command builder works for both recording configurations and compression presets, so you can fine-tune everything from bitrates to noise reduction filters without touching a terminal.

Building a Stronger Foundation

Alongside the new features, we've undertaken enormous refactors and code-based migrations across the app, from simplifying the device selection architecture to modernizing our UI components. While this work happens behind the scenes, it's crucial for improving the app's stability and performance, and it paves the way for us to build even more ambitious features for you in the future.

What's Changed

  • Change Timestamp, Created at and Updated At format to human-friendly format by @vishesh-sachan in #640
  • feat(whispering): enlarge initial tauri app window size. by @Leftium in #687
  • fix(whispering): ensure notifications button has classes applied. by @Leftium in #703
  • docs: update blog post self-contained-components by @borghiste in #702
  • feat: option to save zero recording by @vishesh-sachan in #699
  • Edit README files for more clarity re: Whispering -> Epicenter. by @Leftium in #633
  • show only desktop app link on website, hide in desktop by @thisisharsh7 in #653
  • Feat/whispering logo by @thisisharsh7 in #639
  • Make copy and paste lables in settings more descriptive by @rupokghosh in #708
  • docs: update Epicenter Assistant to be marked as blocked/unstable by opencode PR by @braden-w in #711
  • Add active state highlighting to navigation items by @rupokghosh in #713
  • docs: add note about external dependencies (tools) by @Leftium in #690
  • Update prerequisites in README.md by @ykhli in #723
  • Update accessibility settings modal flow and logic by @rupokghosh in #726
  • follow-up: improve accessibility page UI with Badge component by @braden-w in #730
  • refactor: migrate from mapErr to catch parameter and update wellcrafted to v0.22.0 by @braden-w in #732
  • docs(articles): add git worktree organization guides by @braden-w in #738
  • feat(completion): add OpenRouter support with OpenAI SDK integration by @braden-w in #736
  • feat: Add OpenRouter Transformation Provider by @vishesh-sachan in #667
  • add missing / to getModelsDirectory() by @aspiers in #735
  • refactor(settings): replace resetShortcuts switch with dedicated methods by @braden-w in #740
  • feat: FFmpeg-based audio recording by @braden-w in #744
  • refactor(recording): replace 'backend' and 'implementation' with 'method' by @braden-w in #747
  • feat: add option to compress audio before transcription by @braden-w in #748
  • refactor: simplify device selection architecture by @braden-w in #750
  • feat: improve FFmpeg compatibility warnings and add one-click resolution by @braden-w in #751
  • refactor: replace Button with Link for href-based components by @braden-w in #753
  • refactor: migrate components from callbacks to function bindings by @braden-w in #752
  • feat(whisper-cpp): add GPU acceleration support with automatic CPU fallback by @braden-w in #739
  • fix(whisper): resolve GPU acceleration build issues by @braden-w in #754
  • fix(whisper): disable GPU acceleration in CI/CD builds by @braden-w in #755
  • fix(whisper): disable all GPU acceleration in CI/CD builds by @braden-w in #756

New Contributors

Full Changelog: v7.3.1...v7.4.0

Questions? Join our Discord or check the README.

Love Whispering? Star us on GitHub to show your support!

Don't miss a new epicenter release

NewReleases is sending notifications on new releases.