- Overview
- DMG Installation
- Getting Started
- Daily Use
- Hotkey Setup
- Model Config
- Menubar States
- Developer
FunASR Dictation is a macOS menubar dictation app built on Fun-ASR-Nano-2512.
Core workflow:
- press the trigger once to start recording
- press it again to stop
- transcribe locally on your Mac
- auto-paste into the active text box
Why people use this app instead of built-in dictation or generic tools:
- local inference on your Mac, without a mandatory cloud round-trip
- practical mixed Chinese/English recognition quality for real typing workflows
- global trigger + automatic paste into nearly any text field
- native macOS installer / uninstaller windows without requiring Terminal
For normal users, use the DMG release.
What the DMG installer does:
- downloads a standalone Python runtime during setup
- installs Python dependencies automatically
- downloads the latest supported model during setup
- installs the runtime to
~/Library/Application Support/FunASRDictation/app - creates the launcher app at
~/Applications/FunASR Dictation.app - creates the graphical uninstaller at
~/Applications/Uninstall FunASR Dictation.app
Installation steps:
- Download the latest
funasr-dictation-installer-1.0.9.dmgfrom Releases. - Open the DMG.
- Double-click
Install FunASR Dictation.app. - Wait for the native installer window to finish downloading and setting up the runtime.
- If you want a Desktop shortcut, click
Create Desktop Shortcutin the installer window. - Click
Open App.
Notes:
- the DMG does not bundle the model cache
- no Homebrew or preinstalled Python is required on the target Mac
- if a Desktop shortcut is created, macOS may require deleting it manually during uninstall
On first launch, grant these permissions to FunASR Dictation when macOS asks:
- Microphone
- Accessibility
- Input Monitoring
After that:
- the app lives in the macOS menubar
- the Dock icon stays hidden during normal use
- UI language follows the app language setting in the menu (
System / 中文 / English)
Main menu items:
Toggle DictationHotkey SettingsModel ConfigUpdate ModelEnable Dictation On App StartEnable Launch At LoginQuit App
Typical dictation flow:
- Turn dictation on from the menu.
- Focus any text box.
- Press the configured trigger once to start recording.
- Speak.
- Press the same trigger again to stop.
- The app transcribes and pastes the text automatically.
Features available in normal use:
- keyboard trigger or mouse trigger
- menu bar status indicators for loading / ready / recording / transcribing / error
- model update from the menu
- launch-at-login toggle from the menu
- optional dictation-on-app-start toggle from the menu
Open Hotkey Settings from the menu.
The dialog shows:
- current trigger mode
- current keyboard hotkey
- current mouse button
Setup flow:
- Click
Set Keyboard HotkeyorSet Mouse Button. - Choose automatic capture or manual input.
- Save the setting.
- Select whether keyboard or mouse is the active trigger mode.
- Click
Save.
These settings are persisted in:
~/Library/Application Support/FunASRDictation/ui_settings.json
Use Model Config from the menu to edit runtime settings in UI.
Recommended defaults for this release:
language = "auto"sample_rate = 16000channels = 1paste_delay_ms = 20idle_unload_seconds = 300enable_beep = trueuse_itn = truemerge_vad = falsehotwords = ""remove_emoji = truebatch_size_s = 0(internal runtime value, not exposed in the UI)
What each setting is for:
Recognition Language: keepautofor mixed Chinese/English speechSample Rate: use16000unless your audio device requires44100/48000Channels:1is recommended; use2only for true stereo input devicesPaste Delay: if paste occasionally fails, increase it slightlyIdle Model Unload Seconds: set0to keep the model loaded all the timeNormalize Numbers/Dates: cleaner text formatting for dates, numbers, and unitsMerge Long-Pause Segments: may be faster for long audio, but punctuation is usually less naturalHot Words: add names, brands, or technical terms you say oftenRemove Emoji: removes emoji symbols from the final pasted text
How changes apply:
- save in the UI
- the new values take effect from the next recording
○OFF…LOADING⇡UPDATING✓READY●RECORDING↻TRANSCRIBING!ERROR
This section collects the direct script / command based workflow.
Requirements:
- macOS 11+
- Python 3.11+
- Xcode Command Line Tools when no bundled launcher binary is available
Install from source:
./install.shStart from source:
./start_app.shOptional source-install commands:
./create_launcher.sh
./create_desktop_shortcut.sh
./enable_autostart.sh
./disable_autostart.sh
./uninstall.sh./build_dmg.shOutput:
./funasr-dictation-installer-1.0.9.dmginstall.sh: install environment, dependencies, model, and launcher helpersstart_app.sh: start the menubar app directly from sourcecreate_launcher.sh: create the clickable launcher app in~/Applicationscreate_desktop_shortcut.sh: create the optional Desktop shortcut symlinkcreate_uninstaller.sh: create the graphical uninstaller app in~/Applicationsenable_autostart.sh: enable LaunchAgent autostartdisable_autostart.sh: disable LaunchAgent autostartremove_launcher.sh: remove launcher app and Desktop shortcut symlinkuninstall.sh: uninstall runtime, model cache, launcher apps, and related support filesbuild_dmg.sh: build the end-user installer DMGinstall_from_dmg.command: installer entry script used inside the DMG appdownload_python_runtime.sh: download and verify the standalone Python runtime for DMG installsprepare_release.sh: clean local artifacts and build the release ziptask_runner/TaskProgressApp.m: native installer / uninstaller progress window implementationlauncher/FunASRLauncher.c: launcher source responsible for runtime path resolution and TCC bootstrapfunasr_nano_runtime/: bundled runtime source required byFun-ASR-Nano-2512
./uninstall.shThis removes:
- launch agents
- running app processes
- runtime files under
~/Library/Application Support/FunASRDictation - launcher / uninstaller apps in
~/Applications - Fun-ASR model cache and legacy SenseVoice cache when present
If macOS blocks automatic Desktop shortcut removal, uninstall still completes and you can delete the Desktop shortcut manually.