Skip to content

feat: add Qwen3-ASR as third transcription engine (macOS 15+)#52

Merged
pasrom merged 1 commit intomainfrom
feat/qwen3-asr-engine
Mar 21, 2026
Merged

feat: add Qwen3-ASR as third transcription engine (macOS 15+)#52
pasrom merged 1 commit intomainfrom
feat/qwen3-asr-engine

Conversation

@pasrom
Copy link
Copy Markdown
Owner

@pasrom pasrom commented Mar 21, 2026

Summary

  • Add Qwen3-ASR (Alibaba) as third transcription engine via FluidAudio's Qwen3AsrManager
  • 30 languages with explicit selection, ~1.75 GB CoreML model, requires macOS 15+
  • Returns plain text (no per-token timestamps) — single TimestampedSegment per file
  • Audio chunking into <=30s windows for Qwen3's max audio limit
  • Engine picker filters by macOS version (availableCases)
  • Language picker shown when Qwen3 is selected (30 languages + auto-detect)
  • Type-erased _qwen3Engine: AnyObject? in AppState for macOS <15 compatibility

Test plan

  • 618 tests passing, 0 failures
  • SwiftFormat + SwiftLint lint + SwiftLint analyze --strict: 0 violations
  • 11 unit tests (Qwen3AsrEngineTests)
  • 5 E2E tests (Qwen3E2ETests, skipped on CI/macOS <15)
  • 4 AppState engine switching tests
  • 1 SettingsView language picker test
  • Manual: select Qwen3 in Settings, verify model download and transcription
  • Manual: verify language selection works (German, English, auto-detect)

@github-actions github-actions bot added the enhancement New feature or request label Mar 21, 2026
@pasrom pasrom changed the title feat: add Qwen3-ASR and Parakeet as alternative transcription engines feat: add Qwen3-ASR as third transcription engine (macOS 15+) Mar 21, 2026
Add Qwen3AsrEngine wrapping FluidAudio's Qwen3AsrManager (actor, CoreML).
30 languages with explicit selection, ~1.75 GB model, requires macOS 15+.
Returns plain text (no timestamps) — emits single TimestampedSegment per file.
Chunks audio into <=30s windows for Qwen3's max audio limit.

- Add Qwen3AsrEngine.swift with @available(macOS 15, *) gating
- Add .qwen3 case to TranscriptionEngineSetting with isAvailable/availableCases
- Type-erase qwen3Engine in AppState via AnyObject? for macOS <15 compat
- Add Qwen3 language picker (30 languages) in SettingsView
- Add qwen3Language setting to AppSettings
- 21 new tests (11 unit + 5 E2E + 4 AppState + 1 SettingsView)
- Total: 618 tests, 0 failures
@pasrom pasrom force-pushed the feat/qwen3-asr-engine branch from 194ba29 to b196665 Compare March 21, 2026 05:53
@pasrom pasrom merged commit 608a10f into main Mar 21, 2026
6 checks passed
@pasrom pasrom deleted the feat/qwen3-asr-engine branch March 21, 2026 05:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant