diff --git a/apps/desktop/src/components/settings/ai/stt/configure.tsx b/apps/desktop/src/components/settings/ai/stt/configure.tsx index 1cd789f746..e854c8a3de 100644 --- a/apps/desktop/src/components/settings/ai/stt/configure.tsx +++ b/apps/desktop/src/components/settings/ai/stt/configure.tsx @@ -189,6 +189,11 @@ function HyprProviderCard({ displayName="Parakeet v3" description="On-device model. English and European languages." /> +
diff --git a/apps/desktop/src/components/settings/ai/stt/select.tsx b/apps/desktop/src/components/settings/ai/stt/select.tsx index 4140ec4812..fee76d09eb 100644 --- a/apps/desktop/src/components/settings/ai/stt/select.tsx +++ b/apps/desktop/src/components/settings/ai/stt/select.tsx @@ -229,10 +229,11 @@ function useConfiguredMapping(): Record< const isAppleSilicon = targetArch.data === "aarch64"; - const [p2, p3, tinyEn, smallEn] = useQueries({ + const [p2, p3, whisperLargeV3, tinyEn, smallEn] = useQueries({ queries: [ sttModelQueries.isDownloaded("am-parakeet-v2"), sttModelQueries.isDownloaded("am-parakeet-v3"), + sttModelQueries.isDownloaded("am-whisper-large-v3"), sttModelQueries.isDownloaded("QuantizedTinyEn"), sttModelQueries.isDownloaded("QuantizedSmallEn"), ], @@ -255,6 +256,10 @@ function useConfiguredMapping(): Record< models.push( { id: "am-parakeet-v2", isDownloaded: p2.data ?? false }, { id: "am-parakeet-v3", isDownloaded: p3.data ?? false }, + { + id: "am-whisper-large-v3", + isDownloaded: whisperLargeV3.data ?? false, + }, ); } diff --git a/apps/desktop/src/components/settings/ai/stt/shared.tsx b/apps/desktop/src/components/settings/ai/stt/shared.tsx index 4de1f3fae0..e7875af92e 100644 --- a/apps/desktop/src/components/settings/ai/stt/shared.tsx +++ b/apps/desktop/src/components/settings/ai/stt/shared.tsx @@ -48,6 +48,9 @@ export const displayModelId = (model: string) => { if (am == "am-parakeet-v3") { return "Parakeet V3"; } + if (am == "am-whisper-large-v3") { + return "Whisper Large V3"; + } } if (model.startsWith("Quantized")) { @@ -74,6 +77,7 @@ export const PROVIDERS = [ "cloud", "am-parakeet-v2", "am-parakeet-v3", + "am-whisper-large-v3", "QuantizedTinyEn", "QuantizedSmallEn", ], @@ -170,6 +174,105 @@ export const LANGUAGE_SUPPORT: LanguageSupportMap = { "hr", "cs", ], + "am-whisper-large-v3": [ + "af", + "am", + "ar", + "as", + "az", + "ba", + "be", + "bg", + "bn", + "bo", + "br", + "bs", + "ca", + "cs", + "cy", + "da", + "de", + "el", + "en", + "es", + "et", + "eu", + "fa", + "fi", + "fo", + "fr", + "gl", + "gu", + "ha", + "he", + "hi", + "hr", + "ht", + "hu", + "hy", + "id", + "is", + "it", + "ja", + "jv", + "ka", + "kk", + "km", + "kn", + "ko", + "la", + "lb", + "lo", + "lt", + "lv", + "mg", + "mi", + "mk", + "ml", + "mn", + "mr", + "ms", + "mt", + "my", + "ne", + "nl", + "nn", + "no", + "oc", + "pa", + "pl", + "ps", + "pt", + "ro", + "ru", + "sa", + "sd", + "si", + "sk", + "sl", + "sn", + "so", + "sq", + "sr", + "su", + "sv", + "sw", + "ta", + "te", + "tg", + "th", + "tk", + "tl", + "tr", + "tt", + "uk", + "ur", + "uz", + "vi", + "yi", + "yo", + "zh", + ], }, deepgram: { // https://developers.deepgram.com/docs/models-languages-overview#nova-3 diff --git a/plugins/local-stt/src/model.rs b/plugins/local-stt/src/model.rs index 6d9ebf5ddb..859b3c46cd 100644 --- a/plugins/local-stt/src/model.rs +++ b/plugins/local-stt/src/model.rs @@ -1,7 +1,7 @@ use hypr_am::AmModel; use hypr_whisper_local_model::WhisperModel; -pub static SUPPORTED_MODELS: [SupportedSttModel; 9] = [ +pub static SUPPORTED_MODELS: [SupportedSttModel; 10] = [ SupportedSttModel::Whisper(WhisperModel::QuantizedTiny), SupportedSttModel::Whisper(WhisperModel::QuantizedTinyEn), SupportedSttModel::Whisper(WhisperModel::QuantizedBase), @@ -11,6 +11,7 @@ pub static SUPPORTED_MODELS: [SupportedSttModel; 9] = [ SupportedSttModel::Whisper(WhisperModel::QuantizedLargeTurbo), SupportedSttModel::Am(AmModel::ParakeetV2), SupportedSttModel::Am(AmModel::ParakeetV3), + SupportedSttModel::Am(AmModel::WhisperLargeV3), ]; #[derive(serde::Serialize, serde::Deserialize, specta::Type)]