feat: add Smallest AI Pulse as a cloud STT provider#634
Open
harshitajain165 wants to merge 8 commits intoOpenWhispr:mainfrom
Open
feat: add Smallest AI Pulse as a cloud STT provider#634harshitajain165 wants to merge 8 commits intoOpenWhispr:mainfrom
harshitajain165 wants to merge 8 commits intoOpenWhispr:mainfrom
Conversation
b078e06 to
3cea9d7
Compare
Integrates Smallest AI's Pulse speech-to-text model as a selectable cloud transcription provider alongside OpenAI, Groq, and Mistral. Users provide their own Smallest AI API key which is stored locally and used for all transcription requests. API: POST https://api.smallest.ai/waves/v1/pulse/get_text with Content-Type: application/octet-stream (raw audio bytes). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add Smallest AI key lookup in getAPIKey() renderer path - Add octet-stream request path in processWithOpenAIAPI() with correct endpoint, binary body, and response parsing (transcription field) - Fix getTranscriptionEndpoint() to return Smallest AI URL after cacheResult is defined - Add 'pulse' as default model in getTranscriptionModel() - Fix retry-transcription handler: use settings param instead of non-existent databaseManager.getSettings() - Add X-Source and X-Version headers to both live and retry request paths - Add SMALLEST_AI_API_KEY to PERSISTED_KEYS so key survives app restarts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Downloads and bundles the Smallest AI PNG logo as a provider icon, wiring it up in PROVIDER_ICONS so the Smallest AI tab shows the correct logo instead of the generic fallback.
c8cfa4b to
f1abe86
Compare
Author
|
Hey @gabrielste1n, this PR adds Smallest AI Pulse as a cloud STT provider to OpenWhispr - would love a review when you get a chance! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #631
Summary
Adds Smallest AI Pulse as a dedicated cloud transcription provider alongside OpenAI, Groq, and other cloud options. Smallest AI's API uses raw binary audio (
application/octet-stream) rather than multipart form-data, so it required a dedicated code path rather than reuse of the existing provider flow.Changes
src/models/modelRegistryData.jsonpulsemodelsrc/helpers/audioManager.jssrc/helpers/ipcHandlers.jsSMALLEST_AI_TRANSCRIPTION_URLconstant, key IPC handlers, transcription proxy pathsrc/helpers/environment.jsgetSmallestAiKey/saveSmallestAiKey, add toPERSISTED_KEYSsrc/components/TranscriptionModelPicker.tsxsrc/components/SettingsPage.tsxsmallestAiApiKey/setSmallestAiApiKeypropssrc/components/OnboardingFlow.tsxsrc/hooks/useSettings.tssmallestAiApiKey/setSmallestAiApiKeysrc/stores/settingsStore.ts.envinit on startupsrc/utils/byokDetection.tssmallestAiApiKeyin BYOK detectionsrc/utils/providerIcons.tssrc/assets/icons/providers/smallest-ai.pngpreload.jsgetSmallestAiKey/saveSmallestAiKeyto renderersrc/locales/*/translation.jsonsmallest_pulsedescription key across all 10 locale filesAPI details
https://api.smallest.ai/waves/v1/pulse/get_textAuthorization: Bearer <api_key>pulseapplication/octet-stream) with?language=query param{ "transcription": "..." }Testing