Releases: ZhaoChaoqun/nano-typeless
Releases · ZhaoChaoqun/nano-typeless
Release list
v1.2.16
What's New
FunASR Nano LLM Bug Fix
- Fix cross-session data leak: second recording no longer includes text from the first session
- Root cause:
_accumulatedTextand VAD state were not reset after flush
Inference Performance
- FunASR Nano LLM: dynamically use all CPU cores (
activeProcessorCount) instead of hardcoded 1 thread, reducing flush latency from ~11s to ~0.5s on M4 - QwenASR: default
numThreadsto 0 (auto-detect by Rust runtime) instead of hardcoded 4
Streaming Parameters
- Restore Qwen3-ASR streaming params to C API defaults (chunk_sec=2.0, rollback=5, unfixed_chunks=2)
- Streaming CER improved from 0.0968 to 0.0519, long audio decoder degeneracy resolved
Full Changelog: v1.2.15...v1.2.16
v1.2.15
What's New
Qwen3-ASR UTF-8 Mojibake Fix
- Fix Chinese character corruption (U+FFFD replacement and Box Drawing artifacts) in both offline and streaming modes
- Root cause: GPT-2 byte-level BPE tokens were decoded with per-token
from_utf8_lossy, corrupting multi-byte UTF-8 characters split across token boundaries - Fix: accumulate raw bytes and defer UTF-8 conversion to safe boundaries using
utf8_safe_boundary() - All 68 benchmark entries verified: zero mojibake
Long Audio Offline Transcription
- Add
transcribeOffline()method using segment-based decoding (qwen_asr_transcribe_pcm) for proper long audio support - Offline benchmark now uses the dedicated offline path instead of streaming API with finalize
New Engine: FunASR Nano LLM
- Replace SenseVoice Nano with FunASR Nano LLM as the third ASR engine option
- FunASR Nano LLM: SenseVoice + Qwen3 LLM with built-in punctuation and ITN
Unfixed Text Display
- Streaming overlay now shows speculative (unfixed) text alongside stable text
- Add
getUnfixed()to ASRStreamRecognizing protocol
Benchmark Framework
- Add Swift-based ASR pipeline benchmark tests (offline + streaming for all engines)
- Upgrade Python benchmark script with full pipeline evaluation (ASR → CSC → punctuation)
Sherpa-ONNX Upgrade
- Update sherpa-onnx dylib with new Whisper timestamp and FireRedASR CTC configs
- Add
inputFinished()for proper Paraformer stream termination
Test & Documentation
- Fix test compilation for updated callback signatures
- Remove ascend_cs_007 test case (Cantonese-accented, not in scope)
- Update architecture docs for new three-engine lineup
Full Changelog: v1.2.14...v1.2.15
v1.2.14
What's New
Qwen3-ASR Engine
- Add Qwen3-ASR as the third ASR engine option alongside FunASR Nano and Streaming Paraformer
- Qwen3-ASR uses a large language model for speech recognition with built-in punctuation
UTF-8 Fix
- Fix Chinese character corruption (mojibake) in Qwen3-ASR streaming output
- BPE token decoding now uses byte-level accumulation instead of per-token lossy conversion
Architecture Improvements
- Protocol-oriented ASR engine design (
ASREngineprotocol) for unified engine management - Logger migration from print statements to os.Logger
- Dead code cleanup and thread safety improvements
Testing
- 55+ tests including unit, E2E, boundary, concurrency, and stress tests
- GitHub Actions CI workflow for automated testing
- UTF-8 regression test suite (9 Rust unit tests + 4 Swift E2E stress tests)
Documentation
- README updated to document all three ASR engines
Full Changelog: v1.2.13...v1.2.14
v1.2.13
Changes
- Optimize: Reduce runtime memory usage from ~2GB to ~1GB
- Switch Streaming Paraformer model loading priority from FP32 to INT8
- INT8 model provides comparable accuracy with significantly lower memory footprint
Installation
brew tap ZhaoChaoqun/typeless
brew install --cask nano-typeless
xattr -cr "/Applications/Nano Typeless.app"v1.2.12
变更
- 默认模型切换为 Streaming Paraformer + CT-Transformer 标点模型
- 首次安装自动下载标点模型
- 设置界面模型顺序调整
v1.2.11
What's New
CT-Transformer 标点模型
- 新增 CT-Transformer 标点模型支持,自动为识别结果添加标点符号
- 使用 INT8 量化版本(62MB),比 FP32 版本(266MB)更小
- 支持 ModelScope 镜像加速下载
Bug 修复
- 修复切换 ASR 模型后识别器未重新初始化的问题
- FunASR Nano 和 Streaming Paraformer 模式现在都能正常切换
代码优化
- 重构 RecordingManager,统一标点处理逻辑
- 更新开发文档(CLAUDE.md)
v1.2.10
修复
- 修复 Streaming Paraformer 崩溃和丢字问题
- 使用静音填充方案替代 inputFinished() 调用
- 简化代码,移除复杂的异步同步逻辑
- 解决松开 Fn 键时应用崩溃的问题
- 解决最后几个字丢失的问题
v1.2.9 - Dual ASR Model Support
What's New
Dual ASR Model Support
Now you can choose between two speech recognition engines in Settings:
| Model | Size | Features |
|---|---|---|
| FunASR Nano | ~179MB | VAD-based segmentation, supports dialects |
| Streaming Paraformer | ~216MB | Native streaming, preserves full context |
Key Improvements
- Streaming Paraformer: No VAD required, maintains complete context for better accuracy
- Model Selection UI: Easy switching between models in Settings
- INT8 Optimized: Streaming Paraformer uses INT8 quantization (reduced from 999MB to 216MB)
- User Preference Persisted: Your model choice is saved automatically
Download Sources
- ModelScope (China): Faster for users in China
- GitHub: Fallback option
Full Changelog: v1.2.8...v1.2.9
Nano Typeless v1.2.8
What's New
HUD 体验优化
- HUD 宽度动态调整:初始显示窄版(130px),随文字增加自动扩展(最大 400px)
- HUD 始终保持屏幕水平居中,内容变化时自动调整位置
- 移除文字更新时的闪烁动画
- 移除多余的"识别中"状态(流式输出已经实时显示文字)
- 统一字体为 medium 字重,显示效果更清晰
代码优化
- 重构 OnboardingOverlay 的 Timer 管理,防止内存泄漏
- 合并标点符号检测逻辑,消除重复代码
v1.2.7
优化
权限请求优化
- 移除重复的辅助功能权限请求,避免用户看到两次权限弹窗
下载后解压即可使用