-
Notifications
You must be signed in to change notification settings - Fork 480
feat: add Gladia as STT provider #2119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Co-Authored-By: yujonglee <[email protected]>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
✅ Deploy Preview for hyprnote-storybook ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for hyprnote ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
📝 WalkthroughWalkthroughAdds support for the Gladia speech-to-text provider by introducing provider configuration, model mapping ("Solaria 1"), and support text in the settings UI components. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes
Possibly related PRs
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (1)
apps/desktop/src/components/settings/ai/stt/configure.tsx (1)
480-486: LGTM! Gladia provider context follows the existing pattern.The conditional branch for Gladia is implemented correctly and consistently with other providers.
Optional refactor: Consider replacing the deeply nested ternary operators with a lookup map for better readability:
function ProviderContext({ providerId }: { providerId: ProviderId }) { + const providerContent: Record<ProviderId, string> = { + hyprnote: "Hyprnote curates list of on-device models and also cloud models with high-availability and performance.", + deepgram: `Use [Deepgram](https://deepgram.com) for transcriptions. \ + If you want to use a [Dedicated](https://developers.deepgram.com/reference/custom-endpoints#deepgram-dedicated-endpoints) + or [EU](https://developers.deepgram.com/reference/custom-endpoints#eu-endpoints) endpoint, + you can do that in the **advanced** section.`, + soniox: `Use [Soniox](https://soniox.com) for transcriptions.`, + assemblyai: `Use [AssemblyAI](https://www.assemblyai.com) for transcriptions.`, + gladia: `Use [Gladia](https://www.gladia.io) for transcriptions.`, + fireworks: `Use [Fireworks AI](https://fireworks.ai) for transcriptions.`, + custom: `We only support **Deepgram compatible** endpoints for now.`, + }; + - const content = - providerId === "hyprnote" - ? "Hyprnote curates list of on-device models and also cloud models with high-availability and performance." - : providerId === "deepgram" - ? `Use [Deepgram](https://deepgram.com) for transcriptions. \ - If you want to use a [Dedicated](https://developers.deepgram.com/reference/custom-endpoints#deepgram-dedicated-endpoints) - or [EU](https://developers.deepgram.com/reference/custom-endpoints#eu-endpoints) endpoint, - you can do that in the **advanced** section.` - : providerId === "soniox" - ? `Use [Soniox](https://soniox.com) for transcriptions.` - : providerId === "assemblyai" - ? `Use [AssemblyAI](https://www.assemblyai.com) for transcriptions.` - : providerId === "gladia" - ? `Use [Gladia](https://www.gladia.io) for transcriptions.` - : providerId === "fireworks" - ? `Use [Fireworks AI](https://fireworks.ai) for transcriptions.` - : providerId === "custom" - ? `We only support **Deepgram compatible** endpoints for now.` - : ""; + const content = providerContent[providerId] ?? ""; if (!content.trim()) { return null; }
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
apps/desktop/public/assets/gladia.jpegis excluded by!**/*.jpeg
📒 Files selected for processing (2)
apps/desktop/src/components/settings/ai/stt/configure.tsx(1 hunks)apps/desktop/src/components/settings/ai/stt/shared.tsx(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, usecn(import from@hypr/utils). It is similar toclsx. Always pass an array and split by logical grouping.
Usemotion/reactinstead offramer-motion.
Files:
apps/desktop/src/components/settings/ai/stt/configure.tsxapps/desktop/src/components/settings/ai/stt/shared.tsx
⏰ 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: fmt
- GitHub Check: desktop_ci (macos, depot-macos-14)
- GitHub Check: desktop_ci (linux, depot-ubuntu-22.04-8)
- GitHub Check: desktop_ci (linux, depot-ubuntu-24.04-8)
- GitHub Check: Devin
🔇 Additional comments (1)
apps/desktop/src/components/settings/ai/stt/shared.tsx (1)
39-41: Model identifier "solaria-1" is correct per Gladia's official API documentation.The implementation accurately maps "solaria-1" to "Solaria 1" and aligns with Gladia's live/real-time endpoints specification. The identifier is already correctly referenced in the provider configuration.
|
Devin is archived and cannot be woken up. Please unarchive Devin if you want to continue using it. |
Summary
Adds Gladia as a new speech-to-text provider option in the settings UI. This follows the same pattern as existing providers like Soniox and AssemblyAI.
Changes:
shared.tsxwith base URLhttps://api.gladia.ioand modelsolaria-1solaria-1modelReview & Testing Checklist for Human
https://api.gladia.io) is correct per Gladia's documentationsolaria-1is the correct identifier for Gladia's APINotes
This PR only adds the UI configuration for Gladia. Backend integration in
owhisper-clientmay need to be implemented separately for Gladia to function end-to-end.Link to Devin run: https://app.devin.ai/sessions/a2996b8441c941bba163685f2e1ffed6
Requested by: yujonglee ([email protected]) (@yujonglee)