AI Post-processing
AI post-processing uses a Large Language Model (LLM) to refine ASR transcripts. Typical improvements include removing filler words, fixing typos, adjusting punctuation, and polishing tone, making voice typing smoother and more natural.
Naming note
Since v4.4.2, the settings entry is Settings → Intelligence → AI Feature Settings, and the UI refers to this feature as "AI polish". Both names mean the same feature.
Quick Setup
Use free service (recommended)
BiBi Keyboard ships with SiliconFlow free service. No API key is required:
- Open
Settings → Intelligence → AI Feature Settings - Enable "AI polish"
- Ensure vendor is SF_FREE (default)
- Pick a prompt preset (recommended: "General post-process")
- Tap the magic wand button on the keyboard to enable AI post-processing mode
- Done — transcripts will be refined automatically
About the free service
- Has a free quota (see SiliconFlow website for details)
- Example models: Qwen/Qwen3-8B, THUDM/GLM-4-9B, etc.
- If you need other models, register on SiliconFlow and use your own API key
Configure a paid vendor
Example with DeepSeek:
- Sign up at https://platform.deepseek.com/
- Create an API key and add credits
- In
Settings → Intelligence → AI Feature Settings:- Vendor: DEEPSEEK
- API key: paste your key
- Model: e.g.
deepseek-v4-flash - Temperature: default
1.0
- Save and test
Configure a custom vendor
For any OpenAI-compatible API:
- Vendor: CUSTOM under
Settings → Intelligence → AI Feature Settings - Fill in:
- Endpoint: e.g.
https://your-api.com/v1 - API key
- Model: e.g.
gpt-5-luna - Temperature: default
1.0
- Endpoint: e.g.
- Save and test
Custom endpoint requirements
- Must be compatible with OpenAI Chat Completions API
- The path is typically
/v1/chat/completions(the app will append it automatically)
Overview
Pipeline
The "Deep-thinking threshold allows it" step above is controlled by the "Deep thinking threshold" slider; see Deep Thinking & Reasoning Params below.
Streaming Preview & Typewriter Effect
When your LLM vendor supports streaming output, AI post-processing can show a live preview while the model is generating. You can toggle the "Typewriter effect (post-processing output)" under Settings → Intelligence → AI Feature Settings to make the preview output smoother.
Note
The typewriter effect only affects how the streaming preview is displayed. It does not change the final inserted text. When the typewriter effect is off, the polished text is committed all at once when polishing finishes.
Timeouts & Interruption
- Polish timeout: AI post-processing has a timeout cap; when reached, the original text is committed instead of waiting indefinitely.
- No fallback after cancel: canceling a polish no longer triggers an extra non-streaming request.
- Closing the keyboard cancels polishing: hiding the keyboard cancels an in-progress polish and commits the original text, so the next mic press keeps responding.
Usage
AI polish can be triggered in several ways:
| Trigger | Description | Best for |
|---|---|---|
| Automatic polish | runs automatically after each voice input when "Enable AI polish" is on | daily use; output is final |
| Keyboard "AI polish" button | tap the "AI polish" button on the keyboard to polish the current transcript manually | one-off polish |
| AI Edit | select text and open AI Edit; choose a prompt preset for the edit | iterative edits / retrying |
| History re-polish | re-polish a past transcript from recognition history | retry with a different prompt |
Polishing status in the keyboard info bar
While polishing runs, the info bar at the top of the keyboard shows the current stage, so you can tell which preset this run is using:
| Info bar text | Meaning |
|---|---|
AI polishing… | polishing is running and no specific preset has been resolved yet |
Basic Text Polish… | a preset has been decided; the bar shows its name directly (example: "Basic Text Polish") |
Selecting prompt… | "Automatic polishing preset selection" is on and the classifier is picking a preset |
Seeing Selecting prompt… means automatic selection is in progress; when the bar switches to a preset name, that preset is the one used for this run.
When to use it
Good for
- Speech to writing: meeting notes, reports
- Long-form input: reduce manual edits afterwards
- Professional content: more formal/consistent output
- Multilingual: combine with translation prompts for cross-language voice input
Not recommended
- Casual chat (spoken style may feel more natural)
- Very short input (single word, numbers)
- Latency-sensitive scenarios
AI Polishing Preset Selection
Voice input scenarios and intents can differ widely from moment to moment: casual thoughts may need "General post-process", foreign conversations may need "Translate to English", and meetings may require "Extract to-dos" or "Extract key points". Furthermore, when the speech recognition result is already clean and clear, skipping polish entirely produces the best output without extra wait time.
BiBi Keyboard provides AI Polishing Preset Selection: before polishing runs, a classification model automatically matches the most suitable prompt preset based on the transcript and each preset's scenario description (Skill). When the content is already clear and accurate, it can also automatically skip polishing.
While the classifier runs, the keyboard info bar shows "Selecting prompt…"; once a preset is chosen, it switches to that preset's name. See Status in the keyboard info bar.
Configuration
Path: Settings → Intelligence → AI Feature Settings → AI polishing preset selection
- Main Switch: turn on "Automatic polishing preset selection"
- Select Candidates: check at least 2 candidates from your configured prompt presets
- Checked regular presets must have a non-empty Skill description explaining when and how to apply them
- Built-in special candidate "Skip Polish": when the recognized text is already accurate, natural, and ready to use, the system skips polishing and inserts the original text directly, saving time and tokens
- Select Model:
- Defaults to "Follow default polishing model"
- Can be pointed to a fast, lightweight classification model (from any configured LLM vendor, or the dedicated TypeSafe Jev decision classifier), separating routing decisions from the heavy polishing model
TypeSafe Jev Decision Classifier
Jev (model jev-latest) is a decision-only classification model: it is used only for preset matching in "Automatic polishing preset selection" and cannot be used for conversation or text polishing. It fits the "lightweight model routes, heavy model polishes" setup by separating preset classification from polishing cost.
- In "AI polishing preset selection → Select Model", choose TypeSafe Jev decision classifier
- In the "Jev classifier credentials" section, pick a TypeSafe channel:
- TypeSafe: the official Jev channel; enter a TypeSafe API key
- OpenRouter: call Jev through OpenRouter; enter an OpenRouter API key
- Cloudflare: call Jev through the Cloudflare channel; enter a Cloudflare API key and Cloudflare account ID
- Custom (TypeSafe-compatible): enter a TypeSafe-compatible endpoint and model ID
- Save and verify the behavior via "Effect preview" in "AI Polishing Preset Selection → Effect preview"
Preset Skill Descriptions
When editing any preset in Settings → Intelligence → AI Feature Settings → Polish prompt presets, you can fill in a "Skill description" in addition to the prompt content.
The 5 built-in presets include default Skill descriptions:
- General post-process: Use when the transcript contains filler words, repetitions, self-corrections, or recognition errors that need cleanup while preserving meaning and tone.
- Basic polishing: Use when the transcript needs ordinary correction, punctuation, and natural wording, without a clear translation, extraction, or task-list intent.
- Translate to English: Use when the user clearly intends to translate the content into English.
- Extract key points: Use when the user asks for a summary or key points, or when long content should be condensed into concise points.
- Extract to-dos: Use when the user asks for a to-do list or the content contains tasks, owners, dates, or other action items to extract.
Effect Preview
After configuring candidate presets and a selector model, tap "Effect preview":
- The preview page loads recent recognition history
- Select a few past transcripts and tap "Start classification"
- Review the matched preset (or skip polish determination), routing latency in milliseconds, and status for each record, allowing you to fine-tune Skills and candidates before using them daily
- When the selector model is TypeSafe Jev, each result also shows a match confidence percentage, so you can judge how reliable the classification is
History Integration
When automatic selection is enabled, the recognition history details display a selection snapshot:
- Notes which preset was chosen, whether polish was skipped, or if a fallback to the default preset occurred
- Separates "Select Prompt" latency from "AI Polish" latency in the stage timeline
Fallback & Safety
- If the classification request times out (guarded by an 8-second ceiling), errors out, or returns unrecognized output, the app gracefully falls back to the currently active default prompt preset for standard polishing without interrupting your dictation flow.
Prompt Presets
BiBi Keyboard includes 5 built-in prompt presets and supports custom ones.
Built-in presets
| Preset name | Use case | Effect |
|---|---|---|
| General post-process | daily voice input | remove filler words, fix slips, keep original meaning |
| Basic polishing | formal rewrite | grammar fixes, punctuation, smoother expression |
| Translate to English | cross-language | translate transcript into English |
| Extract key points | meeting notes | extract key info into a bullet list |
| Extract to-dos | task tracking | identify tasks and generate a checklist |
Custom prompts & Full-screen editor
Go to Settings → Intelligence → AI Feature Settings → Polish prompt presets:
- Tap "Add Preset"
- Write your prompt title, prompt content, and Skill description
- Tap the full-screen editor icon next to the prompt text box to compose long or intricate prompts comfortably
- Save and apply quickly in the keyboard or AI Edit
AI Edit system prompt
The AI Edit panel uses a separate system prompt to understand the "edit the current text according to my instruction" task. Customize it under Settings → Intelligence → AI Feature Settings → AI edit system prompt; leave it empty to use the built-in default.
Use this for long-term role/rule/output-format constraints. One-off edit instructions (for example, "translate to English and simplify") should still be spoken in the AI Edit panel.
Advanced Parameters & Reasoning
Under Settings → Intelligence → AI Feature Settings, the temperature slider and reasoning settings are organized into a clean "More parameters" sheet to keep the main settings page concise.
Deep thinking threshold
In Settings → Intelligence → AI Feature Settings, the "Deep thinking threshold" slider decides whether the model thinks deeply based on the character count of the recognized text:
| Slider position | Behavior |
|---|---|
| Far left (Always) | reasoning is always enabled |
| Middle values | reasoning is enabled only when the recognized text exceeds the threshold; shorter input is returned directly for lower latency |
| Far right (Never) | reasoning is never enabled |
The threshold is stored per LLM provider. Legacy "deep thinking" toggles migrate automatically: previously on means "always", previously off means "never".
Tip
Everyday short phrases do not need deep thinking and answer faster without it. For long rewrites or complex tasks, lower the threshold so the model thinks only when there is enough content.
Providers with reasoning support
Some providers expose a "thinking/reasoning" mode. The model reasons before producing output, which can help for complex editing but usually increases latency and token usage. Different providers control it in different ways. Whether reasoning actually runs is decided by the "Deep thinking threshold" slider above; reasoning params are attached only when the selected model supports reasoning and the threshold allows it.
Custom reasoning params (JSON)
For some providers, reasoning mode exposes JSON fields like "Reasoning params (on/off)" to attach extra parameters depending on whether reasoning is enabled.
- Leave it empty if you're not sure (defaults are fine)
- Must be valid JSON objects (example:
{"reasoning_effort":"medium"}) - Parameter names depend on vendor documentation
When to use reasoning
Reasoning mode suits complex rewrites (technical terms, strict formatting), tasks that need logical reasoning (e.g. to-do extraction), and multi-step transformations (e.g. translate + polish). Simple filler-word removal does not benefit from it and only adds latency.
Providers & Models
BiBi Keyboard supports 13 LLM providers. All of them use an OpenAI-compatible API format:
When choosing an LLM provider in settings, configured/available providers are grouped before unconfigured ones, making daily switching quicker.
| Vendor | Sign-up link |
|---|---|
| SF_FREE (SiliconFlow Free) | https://cloud.siliconflow.cn/i/g8thUcWa |
| DEEPSEEK | https://platform.deepseek.com/ |
| ZHIPU | https://bigmodel.cn/usercenter/proj-mgmt/apikeys |
| MOONSHOT | https://platform.moonshot.cn/console/api-keys |
| VOLCENGINE | https://console.volcengine.com/ark |
| DASHSCOPE (Alibaba Qianwen) | https://platform.qianwenai.com/home/api-keys |
| OPENAI | https://platform.openai.com/signup |
| GEMINI | https://aistudio.google.com/apikey |
| GROQ | https://console.groq.com/keys |
| CEREBRAS | https://cloud.cerebras.ai/platform |
| FIREWORKS | https://fireworks.ai/login |
| OHMYGPT | https://x.dogenet.win/i/CXuHm49s |
| CUSTOM | - |
In Settings → Intelligence → AI Feature Settings, you can tap "Fetch model list" to query available models from your provider and add commonly used ones into the in-app dropdown.
During the LLM test, you can cancel the current request at any time to quickly adjust settings and retry. A successful test shows a timing breakdown so you can see where time is spent:
- Streaming output: whether streaming is supported (falls back to a non-streaming response otherwise)
- Connect / response headers / first visible text / output: per-stage elapsed time and the total
- Connection reuse: whether the test reused an existing connection or created a new one
Tip
For CUSTOM providers, if your backend has a default model, the model field can be left empty. If the test call fails, fill in the required model name as your provider expects.
Pro Features
The following features are only available in the Pro edition.
AI Assistant Pro
AI Assistant can automatically match preset modes by wake word and keywords, then apply the mapped AI post-processing prompt. When the transcript starts with the wake word (the default is localized: "点点" in Chinese, "BB" in English), the AI Assistant flow starts automatically.
- Preset modes: configure multiple presets and enable several at once, each bound to a prompt preset for a different scenario
- Independent model: assign a dedicated LLM model specifically for the AI Assistant in
AI Assistant Mode Settings, decoupled from the default polishing model - Keyword matching: selects the most suitable mode based on preset keywords
- Fuzzy matching: supports fuzzy matching for wake words and preset keywords, so natural spoken variants can still trigger
- Customizable: wake words, keywords, and prompt rules for each mode are all customizable
Per-app Prompts Pro
Pro can bind a polish prompt to each foreground app: when a selected app (e.g. a chat app or browser) is in the foreground, AI polish after recording automatically applies the prompt preset mapped to that app, so you no longer need to switch prompts by hand.
Input Field Context Pro
When recording from the main keyboard, Pro can send text around the cursor as reference for AI post-processing. This helps the model keep continuity, terminology, and tone consistent with the surrounding text. Floating-ball recordings can also use this context when IME Bridge is enabled.
When "AI polishing preset selection" is active, the classification model also takes surrounding input context into account, making preset routing even more accurate to the current context.
Privacy
Input field context is sent only as reference for AI post-processing and preset selection. Enable it only when you trust the selected LLM provider. The final AI output should still contain only the processed text for the current ASR result.
Hotword Enhancement Pro
With "Inject hotwords into recognition engines" enabled, Pro hotwords can participate before recognition according to provider support. You can independently enable "Replace similar words after recognition" for a phoneme-similarity fallback. The target word always acts as one alias, and you can add two more aliases; the target word and aliases all participate in phoneme matching, then matches are replaced with the target word.
Example: target word 音素 can have aliases 因素 and 严肃; if the transcript contains 因素, it is replaced with 音素. You can also set the target word to xxxx@qq.com and alias to primary email for shortcut phrase input.
Troubleshooting
AI post-processing does not run
Checklist:
- ✅ the master switch is on (
Settings → Intelligence → AI Feature Settings → Enable AI polish) - ✅ input length reaches the "Skip AI post-processing if shorter than" threshold
- ✅ provider config is valid (API key works if needed)
- ✅ network works
- ✅ quota not exhausted
Output is not as expected
Possible causes:
- Prompt too vague → add constraints and examples
- Temperature too high → reduce to ~0.2
- Model too weak → try a stronger model
- Input too long → might exceed model context limits
Too slow
Ideas:
- Switch to faster providers (Groq, Cerebras)
- Use smaller models (e.g. Qwen3-8B instead of 235B)
- Disable deep thinking
- Simplify the prompt