Skip to content

feat: add Whisper Large V3 (by Argmax) support to STT settings#2047

Merged
yujonglee merged 1 commit intomainfrom
devin/1764582271-add-argmax-whisper-support
Dec 2, 2025
Merged

feat: add Whisper Large V3 (by Argmax) support to STT settings#2047
yujonglee merged 1 commit intomainfrom
devin/1764582271-add-argmax-whisper-support

Conversation

@yujonglee
Copy link
Contributor

@yujonglee yujonglee commented Dec 1, 2025

feat: add Whisper Large V3 (by Argmax) support to STT settings

Summary

Adds Whisper Large V3 (powered by Argmax) as a new on-device STT model option in the settings UI. The backend support for this model already existed in crates/am - this PR exposes it in the frontend.

Changes:

  • Added AmModel::WhisperLargeV3 to SUPPORTED_MODELS array in local-stt plugin
  • Added UI row for downloading/selecting the model in STT settings
  • Added display name mapping and language support (99 languages) for the model
  • Model only appears on Apple Silicon devices (consistent with other Argmax models)

Review & Testing Checklist for Human

  • Verify the "Whisper Large v3" option appears in Settings > AI > STT on an Apple Silicon Mac
  • Test downloading the model and verify progress indicator works
  • Test transcription with the downloaded model to ensure it works end-to-end
  • Verify the model can be selected as the active STT model after download

Recommended test plan: On an Apple Silicon Mac, open Settings > AI > STT, expand the Hyprnote provider section, download "Whisper Large v3", then start a recording session to verify transcription works.

Notes

Co-Authored-By: yujonglee <yujonglee.dev@gmail.com>
@devin-ai-integration
Copy link
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@netlify
Copy link

netlify bot commented Dec 1, 2025

Deploy Preview for hyprnote-storybook ready!

Name Link
🔨 Latest commit 9bc1931
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote-storybook/deploys/692d659fa37fd40008dcea30
😎 Deploy Preview https://deploy-preview-2047--hyprnote-storybook.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Dec 1, 2025

Deploy Preview for hyprnote ready!

Name Link
🔨 Latest commit 9bc1931
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote/deploys/692d659fca4de3000969f3fb
😎 Deploy Preview https://deploy-preview-2047--hyprnote.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 1, 2025

📝 Walkthrough

Walkthrough

Adds support for a new STT model "am-whisper-large-v3" (Whisper Large v3) across the application. The integration spans frontend configuration UI, selection flow, shared utility mappings, and backend model registry, establishing model metadata, language support, and type-level registration.

Changes

Cohort / File(s) Summary
STT Frontend Configuration
apps/desktop/src/components/settings/ai/stt/configure.tsx, apps/desktop/src/components/settings/ai/stt/select.tsx
Adds am-whisper-large-v3 model row to Hypr provider configuration UI and integrates model into selection flow with corresponding query and models array updates.
STT Shared Utilities
apps/desktop/src/components/settings/ai/stt/shared.tsx
Adds displayModelId mapping for "Whisper Large V3", registers am-whisper-large-v3 in Hypr provider models list, and defines language support mapping covering multilingual language set.
Backend Model Registry
plugins/local-stt/src/model.rs
Extends SUPPORTED_MODELS array to include WhisperLargeV3 variant, increasing array length from 9 to 10 elements.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Verify model identifier consistency across all four files (configure.tsx, select.tsx, shared.tsx, model.rs)
  • Confirm language support mapping is complete and matches intended use case
  • Check that array size increase in model.rs is correctly reflected in type signature

Possibly related PRs

  • AI setting custom #1586: Modifies STT provider configuration structure in shared.tsx, may have overlapping changes to provider type definitions
  • Onboarding reboot #1218: Updates model.rs SUPPORTED_MODELS domain mappings, direct registry interaction with model registration changes

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: adding Whisper Large V3 support to STT settings, which is reflected across all modified files.
Description check ✅ Passed The description is directly related to the changeset, providing clear context about adding Whisper Large V3 as an on-device STT model option with implementation details and testing guidance.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch devin/1764582271-add-argmax-whisper-support

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (3)
apps/desktop/src/components/settings/ai/stt/configure.tsx (1)

192-196: Consider arch‑gating and naming consistency for the new local Argmax model

  • The new HyprProviderLocalRow correctly uses model="am-whisper-large-v3" and wires into the existing download flow.
  • Right now this row is visible on all platforms, while useConfiguredMapping only exposes "am-whisper-large-v3" on Apple Silicon. If the model truly only works on Apple Silicon, consider mirroring the isAppleSilicon gating here (e.g., hide or disable this row off‑arch) to avoid confusing users who can “download” but never effectively use it.
  • Also, displayName="Whisper Large v3" here vs "Whisper Large V3" in displayModelId is a tiny naming mismatch; it may be worth normalizing on one variant for a consistent UI.
apps/desktop/src/components/settings/ai/stt/shared.tsx (2)

51-53: Model ID wiring is consistent; consider unifying display label casing

  • displayModelId correctly special‑cases "am-whisper-large-v3" and the Hyprnote PROVIDERS entry includes this model string, keeping the selection and display pipeline coherent.
  • As noted in configure.tsx, the label here is "Whisper Large V3" while the config card uses "Whisper Large v3". Not a blocker, but you may want to standardize on one (e.g., "Whisper Large v3") for a consistent UX.

Also applies to: 69-83


145-176: LANGUAGE_SUPPORT for am-whisper-large-v3 mirrors Whisper’s multilingual set; watch for drift

  • The new "am-whisper-large-v3" entry in LANGUAGE_SUPPORT.hyprnote uses the full Whisper multilingual language list, which matches how the Rust backend maps WhisperLargeV3 to whisper_multi_languages.
  • This duplication (frontend string codes vs backend ISO639 list) is reasonable for now but can drift if one side is updated and the other isn’t.

It’d be good to:

  • Add a brief comment noting that this list should stay in sync with the backend Whisper multilingual set / Argmax model capabilities, and
  • Double‑check that this language list matches the actual support guarantees for the Argmax Whisper Large V3 build you’re shipping.

Also applies to: 177-275

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b42afb8 and 9bc1931.

📒 Files selected for processing (4)
  • apps/desktop/src/components/settings/ai/stt/configure.tsx (1 hunks)
  • apps/desktop/src/components/settings/ai/stt/select.tsx (2 hunks)
  • apps/desktop/src/components/settings/ai/stt/shared.tsx (3 hunks)
  • plugins/local-stt/src/model.rs (2 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx}: Avoid creating a bunch of types/interfaces if they are not shared. Especially for function props, just inline them instead.
Never do manual state management for form/mutation. Use useForm (from tanstack-form) and useQuery/useMutation (from tanstack-query) instead for 99% of cases. Avoid patterns like setError.
If there are many classNames with conditional logic, use cn (import from @hypr/utils). It is similar to clsx. Always pass an array and split by logical grouping.
Use motion/react instead of framer-motion.

Files:

  • apps/desktop/src/components/settings/ai/stt/configure.tsx
  • apps/desktop/src/components/settings/ai/stt/shared.tsx
  • apps/desktop/src/components/settings/ai/stt/select.tsx
🧬 Code graph analysis (1)
apps/desktop/src/components/settings/ai/stt/select.tsx (1)
apps/desktop/src/components/settings/ai/stt/shared.tsx (1)
  • sttModelQueries (386-413)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: Redirect rules - hyprnote
  • GitHub Check: Header rules - hyprnote
  • GitHub Check: Pages changed - hyprnote
  • GitHub Check: Devin
  • GitHub Check: desktop_ci (linux, depot-ubuntu-24.04-8)
  • GitHub Check: desktop_ci (linux, depot-ubuntu-22.04-8)
  • GitHub Check: fmt
  • GitHub Check: desktop_ci (macos, depot-macos-14)
🔇 Additional comments (2)
plugins/local-stt/src/model.rs (1)

4-15: WhisperLargeV3 is correctly registered and aligned with multilingual Whisper behavior

  • SUPPORTED_MODELS length matches the 10 listed variants, and AmModel::WhisperLargeV3 is added consistently to the array and supported_languages.
  • Mapping WhisperLargeV3 to whisper_multi_languages keeps its behavior aligned with existing multilingual Whisper models.

Also applies to: 187-191

apps/desktop/src/components/settings/ai/stt/select.tsx (1)

232-240: New Argmax Whisper Large V3 query and model mapping look consistent

  • The extra useQueries slot for "am-whisper-large-v3" matches the destructuring order, and whisperLargeV3.data ?? false is correctly threaded into the Hyprnote models array.
  • Gating the new model behind isAppleSilicon in the configured mapping is consistent with limiting it to Apple Silicon.

Please just confirm that "am-whisper-large-v3" is included in the SupportedSttModel type from @hypr/plugin-local-stt and that the backend expects exactly this identifier string.

Also applies to: 255-263

@yujonglee yujonglee merged commit bd366c8 into main Dec 2, 2025
17 of 18 checks passed
@yujonglee yujonglee deleted the devin/1764582271-add-argmax-whisper-support branch December 2, 2025 02:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant