What Languages Does OpenSuperWhisper Support? Complete Language Guide and Technical Reference
OpenSuperWhisper supports 21 languages when using the Whisper engine (including auto-detection), 25 European languages with Parakeet v3, and English-only with Parakeet v2, with language availability determined by the supportedLanguages(engine:fluidAudioModelVersion:) method in LanguageUtil.swift.
OpenSuperWhisper is a macOS transcription application that leverages multiple speech recognition engines to convert speech to text. Its multilingual capabilities are centralized in a dedicated utility module that maps language codes to human-readable names and filters availability based on your selected engine and model version.
Language Configuration in LanguageUtil.swift
The OpenSuperWhisper/Utils/LanguageUtil.swift file serves as the single source of truth for all language support. This module defines three critical static properties that determine what languages are available:
availableLanguages– The complete set of 21 language codes supported by the Whisper engine, including"auto"for automatic detectionparakeetV2Languages– The restricted set containing only"en"(English) for FluidAudio v2 modelsparakeetV3Languages– The expanded set of 25 European language codes for FluidAudio v3 models
The file also maintains a languageNames dictionary that maps each ISO code to its human-readable equivalent (e.g., "en" → "English", "ja" → "Japanese").
Engine-Specific Language Support
OpenSuperWhisper dynamically adjusts available languages based on which transcription engine is active. The static method supportedLanguages(engine:fluidAudioModelVersion:) returns the appropriate array for your configuration.
Whisper Engine (Full Multilingual Support)
When using the Whisper engine, the app exposes the full availableLanguages array. This includes the "auto" option plus 20 specific language codes:
- Asian languages: Chinese (
zh), Japanese (ja), Korean (ko), Hindi (hi), Indonesian (id) - European languages: German (
de), Spanish (es), French (fr), Italian (it), Portuguese (pt), Russian (ru), Polish (pl), Dutch (nl), Catalan (ca), Swedish (sv), Finnish (fi), Turkish (tr) - Middle Eastern languages: Arabic (
ar), Hebrew (he) - English: (
en)
Selecting "auto" sets the detectLanguage flag to true in WhisperFullParams, allowing the Whisper C library to identify the spoken language automatically.
Parakeet v2 (English Only)
The FluidAudio v2 model restricts output to English exclusively. The parakeetV2Languages array contains only "en", and the UI filters out all other options when this model version is detected.
Parakeet v3 (25 European Languages)
The v3 model expands support to 25 languages, though it remains limited to European variants. The supported codes are:
- Germanic: English (
en), German (de), Dutch (nl), Swedish (sv), Danish (da), Finnish (fi) - Romance: Spanish (
es), French (fr), Portuguese (pt), Italian (it), Romanian (ro) - Slavic: Russian (
ru), Polish (pl), Bulgarian (bg), Croatian (hr), Czech (cs), Slovak (sk), Slovenian (sl), Ukrainian (uk) - Baltic: Latvian (
lv), Lithuanian (lt) - Other European: Greek (
el), Estonian (et), Hungarian (hu), Maltese (mt)
Implementing Language Selection
The OpenSuperWhisper/Settings.swift file consumes the supportedLanguages method to populate the user interface. When building the language menu, it iterates through the returned codes and displays friendly names via LanguageUtil.languageNames[code].
When a user selects an entry, the code writes the chosen value to AppPreferences.shared.whisperLanguage. This preference persists across sessions and feeds directly into the transcription parameters.
Configuring Transcription Parameters
When initializing a transcription job, OpenSuperWhisper/Whis/WhisperFullParams.swift receives the selected language code. The struct holds two relevant properties:
language: AString?containing the ISO code (e.g.,"ja") ornilfor auto-detectiondetectLanguage: ABoolthat tells the Whisper C library whether to identify the language on-the-fly
Setting an explicit language code while setting detectLanguage = false forces transcription in that specific language. Conversely, leaving language as nil with detectLanguage = true enables automatic language identification.
Practical Code Examples
Retrieve the appropriate language list for your current engine configuration:
// Determine available languages based on engine and model version
let engine = "whisper" // or "fluidaudio"
let fluidAudioVersion = "v3" // ignored for Whisper engine
let supportedLangs = LanguageUtil.supportedLanguages(
engine: engine,
fluidAudioModelVersion: fluidAudioVersion
)
// Returns: ["auto", "en", "zh", "de", "es", ...] for Whisper
// Returns: ["en", "de", "es", ...] for Parakeet v3
// Returns: ["en"] for Parakeet v2
Display a human-readable language menu:
// Build UI menu with friendly names
for code in supportedLangs {
let displayName = LanguageUtil.languageNames[code] ?? code
print("\(code) → \(displayName)")
}
Configure transcription parameters for a specific language:
// Force Japanese transcription (no auto-detection)
var params = WhisperFullParams()
params.language = "ja" // Set specific language code
params.detectLanguage = false // Disable auto-detection
// Pass params to the Whisper engine...
Summary
- Language support is centralized in
OpenSuperWhisper/Utils/LanguageUtil.swiftwith three distinct arrays for different engine configurations - The Whisper engine supports 21 languages plus auto-detection via the
"auto"code - Parakeet v2 is restricted to English only, while Parakeet v3 supports 25 European languages
- The Settings UI dynamically filters available options by calling
supportedLanguages(engine:fluidAudioModelVersion:) - Selected languages are passed to the underlying C library through
WhisperFullParams.swiftwith thelanguageanddetectLanguageproperties
Frequently Asked Questions
Does OpenSuperWhisper support automatic language detection?
Yes, but only when using the Whisper engine. Selecting the "auto" option from availableLanguages sets detectLanguage = true in WhisperFullParams, which instructs the Whisper C library to identify the spoken language automatically at the start of transcription.
Why can't I select Japanese when using the Parakeet engine?
Parakeet v3 supports only European languages, and Parakeet v2 supports only English. Japanese (ja) is available exclusively through the Whisper engine, as defined in the availableLanguages array versus the restricted parakeetV3Languages set in LanguageUtil.swift.
How does the app switch between different language sets?
The app switches automatically based on your engine selection in Settings. Calling LanguageUtil.supportedLanguages(engine:fluidAudioModelVersion:) returns the correct subset for your configuration, which Settings.swift uses to rebuild the language menu dynamically without requiring app restarts.
Where are the human-readable language names defined?
Human-readable names are mapped in the languageNames dictionary within OpenSuperWhisper/Utils/LanguageUtil.swift. The Settings UI references this dictionary to display "English" instead of the raw code "en" when populating the language selection submenu.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →