Applies to version: 2.0.0 · Last updated: 2026-08-20
LexVoice is an Obsidian plugin for audio recording, transcription, and AI-generated meeting notes: it records in the background, transcribes in segments or as a live stream, and has an AI turn the result into structured Markdown notes. It also provides dictation, audio import, a live outline, and knowledge capture. This manual is written for everyday users and covers installation, configuration, daily use, and troubleshooting.
1. Product overview
1.1 What it does
LexVoice turns Obsidian into a meeting minute-taker: while you record, the plugin automatically sends audio segments off for transcription (transcription being the service that converts speech into text — you supply your own cloud or local service), and once recording stops, a large language model (LLM, i.e. the AI processing service) merges and polishes the entire transcript into a single structured Markdown set of notes. Beyond meeting recordings, the plugin also offers instant dictation (short utterances written straight to the cursor), transcription of imported audio, a live outline, question-answering against your notes, and knowledge capture (people, tasks, learning cards, and hot words).
1.2 Core workflows
Recording pipeline (transcribe while recording)
Recording (sliced into segments, transcribed as you record)
│
▼
Transcription (cloud or local speech recognition service, returning text segment by segment)
│
▼
AI processing (the LLM merges and polishes using the selected template)
│
▼
Structured notes (frontmatter + body + collapsible source material)
The moment recording starts, the plugin creates a placeholder note in the notes folder; each completed segment transcription is written to the note in real time. When you stop recording, the wrap-up sequence begins and the note is finally rewritten as a fully formatted set of notes, with a linked entry added to today's daily note.
Import pipeline (whole file)
Prepare audio → Speech transcription (whole file submitted) → Write raw text → AI processing → Write notes
Imports are not chunked locally; the entire file is submitted to the transcription service in one request, so speaker numbering stays consistent throughout. The five stages are shown one by one in the processing progress panel.
Two checkpoints: the raw transcript must be confirmed fully written to disk before AI processing may begin — so a failed AI pass never costs you the verbatim transcript. AI processing itself runs in batches sized to the volume of content, and completed batches are recorded, so a mid-way failure only re-runs the missing parts rather than everything.
1.3 System requirements
- Obsidian 1.10.0 or later (the people library and other Bases views rely on the official Bases capability introduced in that version).
- All features are supported on desktop (Windows / macOS / Linux).
- The plugin can be installed and enabled on mobile, but only microphone-only recording is supported there; streaming transcription, streaming dictation, PDF reports and similar features are desktop-only. See Chapter 13 and the appendices for details.
- At least one transcription service must be configured (SiliconFlow, Xiaomi MiMo, and so on); AI processing additionally requires an OpenAI-compatible LLM service.
- Some knowledge-layer views depend on the Dataview community plugin (the learning wall, task wall, and so on).
2. Installation and updates
2.1 Manual installation from a GitHub Release
This is the standard installation method documented in the repository:
- Open the releases page at https://github.com/Lynn-x/LexVoice/releases and download the three files of the latest version:
main.js,manifest.json, andstyles.css. - Quit Obsidian.
- In your vault directory, go to
.obsidian/plugins/, create a folder namedlexvoice, and place the three files inside it (the full path is<vault>/.obsidian/plugins/lexvoice/). - Reopen Obsidian, go to "Settings → Community plugins" (设置 → 第三方插件), turn off Safe Mode if it is still on, and enable "LexVoice" in the plugin list.
Note: LexVoice release tags are bare version numbers (for example 2.0.0, with no v prefix).
2.2 Installing through BRAT
The repository root contains manifest.json and versions.json, which satisfies the directory requirements of BRAT (Beta Reviewers Auto-update Tester, a community plugin for installing beta plugin builds). You can try this: in BRAT, choose "Add beta plugin" and enter the repository address Lynn-x/LexVoice to complete the installation. If BRAT gives you trouble, fall back to the manual installation described in section 2.1.
2.3 The plugin's built-in incremental updater
Once installed, you never need to swap files by hand again:
- Location: "Settings → Update" (设置 → 更新). This page shows the current version, the available version, the time of the last check, the last error, and the number of fallback download sources, along with "Check for updates" (检查更新) and "One-click incremental update" (一键增量更新) buttons plus "Open GitHub" (打开 GitHub) and "Open Release" (打开 Release) shortcuts.
- Automatic checks: "Check automatically at startup" (启动时自动检查) is on by default and runs at most once every 24 hours (silently, about 4 seconds after startup). A notification appears when a new version is found.
- The command palette also offers two commands: "Check for updates" and "Install available update" (安装可用更新).
- Multiple download sources: when installing an update, the plugin tries fastly.jsdelivr (by version tag) → cdn.jsdelivr (by version tag) → a direct GitHub Release download → mirror.ghproxy.com → ghproxy.net, and finally falls back to the branch source. jsDelivr mirrors are usually reachable directly from mainland China without a proxy.
- Safety measures: before updating,
manifest.json,main.js,styles.css,README.md, anddata.json(your plugin settings) are backed up to.lexvoice-update-backups/<timestamp>/inside the plugin folder. All files are downloaded into memory first, and if any required file fails, the whole update is abandoned and nothing is written. When writing,manifest.jsongoes last, and every file is read back and verified after writing, so versions can never end up mismatched.
2.4 Notes on upgrading
- An update only replaces the release files (
main.jsand so on); it never overwritesdata.json, so API keys, save paths, custom prompts, and queue data are all preserved. - After an update completes, restart Obsidian — or disable and re-enable LexVoice on the community plugins page — for the new version to take effect.
- Even when the version number is unchanged, you can use "One-click incremental update" to reinstall the official files, which repairs damaged local files.
- At startup the plugin checks whether the actual version of
main.jsmatches the version inmanifest.json. If they differ, a persistent warning is shown; run the update again when you see it.
3. Quick start: your first set of notes in three steps
Step 1: Configure a transcription service
The transcription service converts speech into text; it is mandatory.
- Open "Settings → Community plugins → LexVoice → API" (设置 → 第三方插件 → LexVoice → API).
- In the "Notes transcription" (纪要转写) section, pick a provider from the "Transcription service" (转写服务) dropdown (SiliconFlow is the default). The page then shows that provider's guide card: a description, pricing notes, setup steps, and a link to the official documentation.
- Register on the provider's website, obtain an access key (API key), and paste it into the "Access key" (访问密钥) field. The service address and model name can usually be left at their defaults.
- Click "Connectivity test → Test" (连通性测试 → 测试). The plugin sends a real transcription request using one second of silent audio; on success it shows the returned result, on failure the error message.
An easier route: if you use a platform that offers both transcription and LLM services — such as Xiaomi MiMo or SiliconFlow — go to "Settings → LexVoice (home) → Quick setup" (设置 → LexVoice(首页)→ 快速配置), choose the provider, enter your key once, and click "Apply" (应用). This configures the transcription service and the AI processing service at the same time and saves both as a single API profile. If you do this, you can skip straight to step 3.
Step 2: Configure the AI processing model
The AI processing service merges and polishes the transcribed text into structured notes. You can record and transcribe without it, but your notes will remain a raw text transcript.
- Open "Settings → API → AI processing service" (设置 → API → AI 整理服务).
- Choose a provider from the "Service preset" (服务预设) dropdown (19 presets are built in, including SiliconFlow, OpenAI, DeepSeek, Alibaba Cloud Bailian, Zhipu GLM, and local Ollama). The address is filled in automatically.
- Enter your access key (if transcription uses the same SiliconFlow or MiMo account, click "Reuse transcription key" (复用转写密钥)).
- Click "Fetch available models" (获取可用模型) and pick a model from the list the service returns, rather than typing it and risking a typo.
- Click "Test connection" (测试连接) to verify that the address, key, and model all match.
Step 3: Record and get your notes
- Click the microphone button on the floating bubble (or the microphone icon in the left ribbon, or the "New recording" (新建录音) button at the bottom of the live notes panel) to start recording. The plugin immediately creates a placeholder note and shows a notification describing the current audio source and segmentation strategy.
- Hold your meeting or talk normally. By default a segment is cut and sent for transcription every 5 minutes (with extra early cuts at 10, 60, and 180 seconds so text appears quickly). Each segment is written to the note as soon as it is transcribed, and the live outline refreshes along with it.
- When you are done, press the stop button on the floating bubble (or in the panel). The plugin automatically merges and polishes all transcripts, rewrites the note as structured notes, distills a topic and appends it to the file name, and opens the result. Your first set of notes is complete.
To capture sound playing on your computer (online meetings, online courses), you must first install a virtual audio device and switch the recording source under "Settings → General → Audio input" (设置 → 常规 → 音频输入). See section 4.3.
4. Recording and meeting notes
4.1 What it does
Meeting recording is the main LexVoice pipeline: everything from the start of recording to the finished notes is automated. You can pause partway through, watch the transcript and outline in real time, and when you stop, the AI writes everything up using the template you selected, then names, files, and logs the result in your daily note.
4.2 Start, pause, and stop
Ways to start recording:
- The command palette entry "Start/stop recording" (开始/停止录音);
- The commands "Start recording · Microphone only" (开始录音 · 仅麦克风), "Start recording · Microphone + system audio" (开始录音 · 麦克风 + 电脑音频), and "Start recording · System audio only" (开始录音 · 仅电脑音频), which set the audio source for this session only without changing your defaults;
- The microphone icon in the left ribbon;
- The microphone button on the floating bubble in its idle state;
- The "New recording" (新建录音) button at the bottom of the live notes panel in its idle state.
When recording starts, the plugin immediately creates a placeholder note in the notes folder (named according to the "Notes file name format" (纪要文件名格式) setting, YYYY-MM-DD HHmm by default) and shows a notification describing the current audio source and segmentation strategy. If "Open the live notes panel automatically when recording starts" (录音开始时自动打开实时纪要面板) is enabled — it is by default — the sidebar panel opens as well.
Pause and resume: use the command "Pause/resume recording" (暂停/继续录音), the pause button on the floating bubble, or the pause button on the panel's recording status bar. The timer stops while paused, and paused time counts toward neither the recording duration nor the segment cut points.
Stopping: use the "Start/stop recording" command, the ribbon icon, the stop button on the floating bubble (labelled "Stop and merge/polish" (停止并合并润色)), or the panel's stop button. Once stopped, the wrap-up sequence runs automatically:
- The final audio segment is cut and the master recording for the whole session (the complete recording file) is saved;
- The plugin waits for the final segment transcription and merges all segment transcripts;
- The LLM merges and polishes the text using the template for the selected mode;
- The whole note is rewritten according to "Consolidated notes layout" (纪要整合排版); if that setting is off, a "## Consolidated version" (## 整合版) block is appended instead;
- The AI distills a topic of at most 15 characters and appends it to the file name;
- An entry is written to the "Today's meeting summary" (今日会议概要) section of today's daily note;
- Cached segment audio for successfully transcribed segments is cleaned up;
- A "LexVoice processing complete" (LexVoice 处理完成) notification appears and the notes open automatically (you can turn this off under "Settings → General → After completion" (设置 → 常规 → 完成后动作)).
If AI processing fails, the retryable task enters the pending queue and the notes keep the raw transcript, so nothing is lost.
4.3 The three audio source modes
Choose a mode under "Settings → General → Audio input → Recording source" (设置 → 常规 → 音频输入 → 录音来源), or from the "Audio" (音频) dropdown in the panel's idle state:
| Mode | Best for | Description |
|---|---|---|
| Microphone only | In-person meetings, dictation | The default mode; captures from the microphone |
| Microphone + system audio | Online meetings, narrating while you watch | Both sources are mixed down into a single track |
| System audio only | Videos, online courses, podcasts | Captures only what your computer plays |
The two "system audio" modes require a virtual audio device to be installed and explicitly selected in settings: VB-Cable on Windows, BlackHole on macOS, or a PulseAudio/PipeWire monitor device on Linux. If no device is selected, the plugin reports an error rather than guessing. The "System audio guide" (电脑音频指引) button on the settings page opens an installation walkthrough, and the "Auto-recommend" (自动推荐) button can switch you to mixed or system-audio-only mode in one click when a virtual audio device is detected.
Every transcription segment records which audio source it came from. Note that mixed mode records a single track, so the plugin cannot tell from the audio alone which sentence came from you and which came from your computer. See section 13.2.
4.4 Choosing recording devices
"Settings → General → Audio input" offers two device dropdowns, "Microphone" (麦克风) and "System audio input" (电脑音频输入), shown according to the current mode. They list every audio input device on the system, and likely virtual audio devices are tagged "(recommended · virtual audio device)" ((推荐 · 虚拟声卡)). Leaving the microphone blank means the system default input is used. Once you select a specific device, the plugin opens exactly that device; if it is unavailable, you get an error asking you to choose again — it will never silently substitute another device. While recording, the bottom of the panel shows a device status bar and a 12-bar level meter for each input, displaying "Muted" (静音) when there is no signal.
4.5 Segmentation (instant segment transcription)
With "Instant segment transcription" (即时分段转写) enabled — it is by default — the recording is sliced automatically at the segment interval and each slice is sent for transcription immediately. Results are written in real time into the note's segment section (formatted as "### Segment N (MM:SS–MM:SS)" (### 段落 N (MM:SS–MM:SS))) with a clickable audio anchor for playback, and a "Segment N transcribed" (段 N 已转写) notification appears.
Key segmentation parameters:
| Parameter | Value | Description |
|---|---|---|
| Default segment interval | 5 minutes | Adjust under "Settings → Advanced → Recording and transcription → Segment interval" (设置 → 进阶 → 录音与转写 → 分段间隔) or in the panel's "More settings" (更多设置) |
| Segment interval range | 0.5–30 minutes | A hard floor of 30 seconds is enforced at runtime |
| Early cut points | 10 s, 60 s, 180 s | Each is cut once at the start of a session so results appear quickly; the regular interval resumes afterwards |
Other behavior:
- Segments that fail to transcribe are marked as failed and enter the retry queue automatically (see Chapter 12).
- With "Instant segment transcription" disabled, the whole session is transcribed in one pass when you stop.
- When the current transcription service is a streaming service (OpenAI Realtime, Alibaba Paraformer, and other wss endpoints), the segmentation settings do not apply and you get continuous live captions instead. See section 8.4.
4.6 Where recordings are stored and how they are cleaned up
- The master recording: recorded end to end by a dedicated recorder and saved on stop as
lex-<YYYYMMDD-HHmmss>.<extension>in the recordings folder (LexVoice/录音by default). It is kept indefinitely and never deleted automatically. The format is usually webm/opus. - Segment cache: slices taken during recording are written first to the segment cache folder (
LexVoice/.cache/segmentsby default). Once a session wraps up successfully and the master recording exists, slices that transcribed successfully are moved to the system trash; slices awaiting retry are kept. Enable "Keep background slice audio" (保留后台切片音频) — off by default — to keep all of them. - Manual cleanup: the command "Clean up expired segment audio cache" (清理过期分段音频缓存) deletes cached audio older than 7 days that is no longer referenced by the retry queue. The command "Clean up blank short recordings" (清理空白短录音) scans the notes folder for notes no longer than 10 seconds with no usable transcript text and, after you confirm, moves them and their associated recordings to the system trash.
- Mis-tap filtering: "Discard recordings under 3 seconds" (过滤 3 秒内录音), on by default, throws away recordings shorter than 3 seconds without saving audio or creating notes.
- All deletions go through the system trash and can be recovered.
4.7 Structure of a notes file
With consolidated layout enabled (the default), the finished notes are laid out from top to bottom as follows:
- YAML frontmatter (the document properties section): the plugin injects fields such as
mode,time,时长(duration), and人物(people); content fields such as主题(topic) and参会人(attendees) are filled in by the AI according to the mode template, with "未提及" (not mentioned) used for anything absent from the transcript;状态: 已整理(status: processed) is set;tagsautomatically includes the system taglexvoice/<mode>plus AI-suggested Chinese tags for topic, project, company, industry, and so on. - The title: "# Date and time · Mode prefix".
- The AI-written body: a summary callout block at the top, followed by a body organized into level-3 headings that follow the flow of the discussion, with tasks written using
- [ ]task syntax. - The "## Source material" (## 原始材料) section below a horizontal rule: recording details, in-meeting materials, the live outline, the playback timeline, the original audio, and the "Segment raw transcripts" (分段原始转写) are each stored in their own collapsed block, every segment carrying its time range and playback anchor.
With consolidated layout disabled, the note keeps the original segments in chronological order and appends a "## Consolidated version" block at the end. If the AI output was truncated, a warning is inserted at the top of the body.
4.8 Continuing a recording into existing notes
Right-click an entry in the panel's "Notes" (纪要) list and choose "Continue recording into this note" (继续录音到这篇): the plugin starts a new recording using that note's raw transcript as the base, offsetting the timestamps of new segments by the original note's total duration. When you stop, old and new segments are merged and reprocessed, and the whole note is rewritten. The same menu also offers "Merge with the previous recording" (与上一段录音合并). The target must be a note that contains LexVoice raw transcript segments; otherwise you will be told that recording cannot be continued.
4.9 Daily note integration (Today's meeting summary)
Once notes have been processed successfully, the plugin finds or creates a "Today's meeting summary" heading in today's daily note (this relies on Obsidian's Daily notes feature; if the daily note does not exist, it is created from its template) and appends a summary entry. By default this includes the time, a link to the notes, metadata for mode/duration/segments/model, the key summary, and the task block. Reprocessing the same meeting updates the entry in place rather than appending a duplicate. The related settings live under "Settings → General → After completion": the toggle (on by default), the heading text, and the summary template are all customizable, and the template supports placeholders such as {{date}}, {{note_link}}, {{summary}}, and {{todos_block}}.
4.10 The floating bubble
By default the floating bubble stays on screen at all times. It can be dragged, remembers its position, collapses into a docked style when snapped to an edge, and returns inside the viewport when the window is resized. It has three states:
- Idle: three circular buttons — open the most recent notes (jumping to the right position), dictation (quick voice capture), and start a meeting recording.
- Recording: a control capsule — jump to the transcript position in the current recording note, pause/resume, stop and merge/polish, and a live timer.
- Dictation: a live caption capsule — during streaming dictation it shows the current sentence as you speak; during batch dictation it shows "Listening…" (聆听中…), then "AI processing…" (AI 整理中…) and "Written" (已写入) in turn.
The floating bubble is always visible and never hides itself. You can turn it off with the command "Show/hide floating bubble (master switch)" (显示/隐藏悬浮气泡(总开关)) or under "Settings → General → Floating controls → Show floating bubble" (设置 → 常规 → 悬浮控制 → 显示悬浮气泡). "Floating window size" (悬浮窗大小) offers three settings: large, medium, and small (large by default).
4.11 Speaker separation (multi-channel microphones)
When you record with a one-receiver/multi-transmitter microphone system (a DJI Mic, for example), each speaker occupies a separate channel, and the plugin uses that to distinguish speakers during transcription rather than making the AI guess from context.
Where to configure it: Settings → General → Audio input → "Speaker separation" (说话人区分). This field only appears when "Recording source" is set to "Microphone only" and you are on desktop.
| Option | Behavior |
|---|---|
| Automatic (recommended) (自动(推荐)) | Separates speakers only when the recording is confirmed to contain multiple independent channels |
| Off (关闭) | Treats every recording as a single speaker |
| Separate by channel (按声道区分) | Attempts to separate speakers by independent channel; falls back automatically for mono recordings |
Test before you record: click the "Test" (测试) button beside the field and speak into each microphone in turn as prompted. The plugin records a 5-second sample, decodes and analyzes it, and reports four lines:
| Result line | Meaning |
|---|---|
| Input device (输入设备) | The channel count negotiated with the system |
| Test recording (测试录音) | The channel count actually preserved in the recorded file |
| Sound detected (检测到声音) | Which channels picked up speech |
| Speaker separation (说话人区分) | Separated / identical content / mono / unconfirmed |
"Separated" (已分离) means you are good to go. "Identical content" (内容相同) means both channels captured the same audio; set the receiver's output to "Stereo" (立体声) and test again. "Unconfirmed" (未确认) means there was not enough evidence — speak into each microphone separately and run the test once more.
How "Automatic" decides: when the device reports multiple channels, the plugin first enters a pending state, and only enables per-channel transcription once a segment genuinely analyzes as having independent channels. If it concludes the recording is mono, or that two channels carry duplicate content, the whole session is treated as a single speaker. This prevents a single microphone that the driver duplicated across left and right channels from being mistaken for two people.
Transcription output: each utterance begins with a label such as "说话人1:" (Speaker 1), and invisible anchors are written into the body so speakers can be renamed precisely later.
Filling in real names: once transcription finishes and before AI processing begins, a "Confirm speakers" (确认说话人) dialog appears listing each speaker number with up to two sample utterances. You can enter names directly or choose "Not now" (暂不填写). You can also fill them in later at any time from the "Edit speakers" (编辑说话人) card at the top of the "Outline" (大纲) or "Capture" (沉淀) tab in the sidebar. Once names are filled in, the AI writes up utterances, conclusions, and tasks using them; the names are written back into the body of the notes and the raw transcript section, and recorded in the lexvoice_speakers frontmatter field. If you rename speakers after the notes have already been processed, use the command "Reprocess current notes (using speaker names)" (重新整理当前纪要(使用说话人姓名)) to have the body rewritten with the names.
Limitations:
- Only the "Microphone only" source is supported; "Microphone + system audio" and "System audio only" do not perform channel separation.
- At most 4 channels are distinguished; the fifth and beyond are ignored.
- Live (streaming) transcription does not distinguish speakers. If you need speaker separation, use the segmented transcription recording workflow, or enable speaker recognition when importing audio (see 7.5).
- The feature is not available on mobile.
- The recording encoder may downmix multiple channels into fewer. When that happens you will see "The input device is multi-channel, but the recording file is mono" (输入设备为多声道,但录音文件只有单声道), and the session is transcribed as mono.
4.12 Things to be aware of
- You cannot start a new recording while a recording or dictation is already in progress.
- If the system revokes microphone permission mid-recording, the recording is forced into a paused state and the panel shows a "Microphone access denied" (麦克风访问被拒绝) overlay, where you can choose "Save recording only" (仅保存录音) or jump to system settings. Once permission is restored you must start a new recording.
- AI processing requires a configured LLM service. If none is configured or the call fails, the notes keep the raw transcript text and you can reprocess them after fixing the configuration.
- If the network drops, recording continues normally on your machine and the panel shows a "Network interrupted · recording continues" (网络中断 · 录音正常继续) banner; transcription catches up through the queue once connectivity returns.
- If the whole session is almost silent (audible content in under 2% of valid samples), you are warned after stopping that "Almost no sound was detected during this session" (整场几乎没检测到声音) — check your device selection.
5. Live outline and meeting workbench
5.1 What it does
The live notes panel is the LexVoice meeting workbench: during a recording it shows the AI outline in real time and accepts in-meeting additions and instant questions; outside of recording it lets you review your notes, run knowledge capture, ask questions about a set of notes, and manage recent notes.
5.2 Opening the panel
- The list-tree icon in the left ribbon, "LexVoice live notes panel" (LexVoice 实时纪要面板);
- The command palette entry "Open live notes panel" (打开实时纪要面板);
- The "Open live notes panel" button on "Settings → LexVoice (home)" (设置 → LexVoice(首页));
- Automatically when recording starts (this can be turned off under "Settings → Advanced" (设置 → 进阶)).
On desktop the panel opens in the right sidebar; on mobile it is a full-screen tab. Only one instance exists, so opening it again simply focuses the existing panel.
The top of the panel is the recording control area, which changes with the current state:
- Idle: two permanent dropdowns, "Template" (模板, the processing mode) and "Audio" (音频, the audio source); a collapsible "More settings" (更多设置) section (one-click API profile switching, a scroll-wheel control for "Segment: N min" (分段 N 分), processing preferences, and the thinking level, with a summary of current values shown on the right when collapsed); the device status bar; and the "New recording / Audio (import) / Text (import)" (新建录音 / 音频(导入)/ 文本(导入)) buttons at the bottom. Changes made in the panel share the same storage as the settings page and are saved immediately.
- Recording: a square stop button, a waveform animation, the elapsed duration, a pause/resume button, and a level meter for each input. When something goes wrong you see a "Network interrupted · recording continues" or "AI service unavailable" (AI 服务不可用) banner; during wrap-up it shows "The AI is processing the final notes" (AI 正在整理最终纪要内容); and if the system revokes microphone permission, a "Microphone access denied" overlay covers the entire panel.
Below that are four tabs: Outline (大纲), Capture (沉淀), Ask (问一问), and Notes (纪要). You can switch between them both during recording and while idle; renaming or deleting a file refreshes the notes list automatically.
5.3 The Outline tab: the live outline
Whenever a segment finishes transcribing during a recording, the plugin automatically asks the AI to incrementally synthesize everything transcribed so far into an outline with time anchors; the timestamp at the start of each outline entry can be clicked to play back that position. When recording ends, a final outline pass runs and is saved into the notes file as a collapsed "Live outline during recording" (录音中实时大纲) block.
One thing you really need to understand about the refresh rhythm: the live outline updates after each segment finishes transcribing, so its perceived refresh rate is roughly equal to the segment interval. The default interval is 5 minutes, which means the outline only refreshes about every 5 minutes. If you set a long interval (15–30 minutes, say), the outline will sit still for a long time and look "stuck" — this is normal, not a fault. If you want it to refresh more often, shorten the segment interval (use the scroll wheel on "Segment" in the panel's "More settings"; the minimum is 0.5 minutes). For a typical meeting, 3–5 minutes is a good choice.
The full trigger rules are:
- The trigger is "a segment has finished transcribing", after which generation is scheduled following a debounce of at least 2.5 seconds;
- The first outline requires at least 2 segments or 120 characters of transcript to have accumulated;
- Once an outline exists, at least 30 seconds must pass between automatic generations (90 seconds for local model endpoints), and at least 2 new segments or 200 new characters must have accumulated. Since the default interval only cuts a segment every 5 minutes, this 30-second floor only becomes a bottleneck when segments are very short;
- Clicking "Refresh" (刷新) in the outline area forces an immediate regeneration, bypassing all throttling; while generation is running, that button becomes "Stop waiting" (停止等待) so you can cancel and unstick it.
Other behavior:
- The master switch for the live outline is under "Settings → Advanced → Notes and live outline" (设置 → 进阶 → 纪要与实时大纲), on by default. With it off, only manual refresh is available.
- Every outline refresh is an LLM call, so denser segmentation means more calls and higher cost.
- In-meeting additions (workbench entries) are inserted into the outline timeline at the corresponding point in time.
- If generation fails, exponential backoff is applied automatically (starting at 30 seconds, up to 5 minutes).
- When the network drops, outline generation pauses and a "Outline generation paused" (大纲生成已暂停) gap card appears on the timeline; it catches up automatically once connectivity returns.
While idle, opening any LexVoice notes file in the editor automatically switches the Outline tab to review mode: an inline audio player (play/pause/progress/mute), the saved live outline (click a time anchor to seek playback), and the playback timeline.
5.4 The in-meeting workbench (in-meeting additions and the instant assistant)
While recording and with the panel on the Outline tab, an input bar appears at the bottom (placeholder: "Note it down · #concept ?question !key @assign /task" (记下来 · #概念 ?问题 !重点 @指派 /待办)). Enter sends, Shift+Enter inserts a line break, and beside it are camera and attachment buttons (mobile adds a photo library button).
Whatever you type is inserted into the outline timeline as a timestamped "in-meeting addition" at the current recording position, and is used as source material when the final notes are produced. Different prefixes trigger different handling:
| Prefix | Effect | Calls the AI |
|---|---|---|
| (no prefix) | An ordinary in-meeting addition, recorded on the timeline | No |
#概念 (concept) |
Asks the AI to explain a concept on the spot (the longest reply format) | Yes |
?问题 (question) |
Asks the AI to answer immediately based on the current outline and surrounding transcript | Yes |
!重点 (key point) |
Marks something as key and attaches a brief AI comment | Yes |
@指派 (assign) |
Records an owner in structured form | No |
/待办 (task) |
Records a task in structured form | No |
Instant AI replies are attached beneath the entry; each has a 35-second timeout and shows an error on failure. Photos and attachments are saved to the meeting materials folder (LexVoice/会议资料/<session timestamp>/ by default; the path is set under "Settings → General → Files and naming" (设置 → 常规 → 文件与命名)) and appear on the timeline as material entries — click a material tag to open the file. Every addition can be removed individually.
5.5 The Ask tab
Ask questions about the current notes: while idle, the target is the LexVoice notes file open in the editor; during or just after a recording, it is the note for that session. Enter sends, Shift+Enter inserts a line break, and quick-question tags are shown below.
- What answers are based on: the plugin sends your question together with the notes content (raw transcript first, the body as backup, truncated at 18,000 characters) to the LLM, which answers strictly from that material and says clearly that "the notes do not contain enough to answer" (纪要中没有足够依据) when they do not.
- History display: answers are stacked as an accordion with the newest first and expanded. After each answer, 3 deeper follow-up questions are generated and placed in the "You could ask next" (接着可以问) tags at the bottom (with no history, 4 static example questions are shown instead).
- Writing to notes: every answer has a "Write to notes" (写入纪要) button that appends it as a timestamped quote block under the notes' "## Ask" (## 问一问) section. Turn on "Multi-select" (多选) to tick several answers and write them all in chronological order.
Note: question-and-answer history lives only in the panel's memory (kept separately per notes path) and is cleared when you close the panel or restart Obsidian — only entries you wrote to the notes are preserved. A single answer times out after 75 seconds; you cannot ask questions when the notes contain fewer than 40 usable characters; and if no LLM is configured you will be prompted to finish configuring one first.
5.6 The Capture tab
Runs a knowledge capture scan over the current notes, producing four groups of candidates — people, tasks, learning cards, and transcript hot words — which you confirm group by group. See section 10.1 for details.
5.7 The Notes tab (recent notes list)
Shows recent LexVoice notes grouped by date (the most recent 120 are scanned and the first 48 shown). Today's group carries a "Today" (今日) badge, and each row shows the mode icon, the title, and the time, template, and duration. The toolbar at the top offers keyword search (filtering as you type), a time filter (today / this week / this month / all, defaulting to this week), and a template filter. Click a row to open the notes; hover to reveal a "Rename" (重命名) button (editing in place); and if a note has failed transcription segments, a "Retry transcription" (重试转写) button appears along with failed/in-progress status badges.
The right-click menu is the main entry point for reworking notes:
- Rename;
- Retry failed transcription segments (重试转写失败片段), showing the number of failed segments;
- Continue recording into this note / Merge with the previous recording (see section 4.8);
- Generate cleaned transcript (生成清稿), producing a derived version with spoken-language artifacts removed;
- "(Re)process as" ((重新)整理为): a submenu of modes, with preference modifiers selectable in the upper half (see section 9.5);
- Generate (生成) → HTML report / PDF report / email draft (see sections 10.5 and 10.6).
Derived versions such as cleaned transcripts hang beneath their parent note as indented sub-rows, with a right-click menu offering open parent, regenerate, and delete this version (deletion requires confirmation and does not affect the parent).
5.8 Things to be aware of
- The "Thinking" (思考) level in the panel's "More settings" is only selectable when the current AI service supports chain-of-thought control; unsupported services show "Not supported" (不支持). See section 9.4.
- The "Audio" dropdown in the mobile panel is locked to microphone only.
6. Dictation (quick voice capture)
6.1 What it does
Dictation is for short spoken input: trigger it once to start recording a short passage, trigger it again to finish. The plugin transcribes it, has the AI clean it into structured form, and writes the finished text into the editor at the cursor (or to the clipboard) in one go. Dictation is entirely separate from the meeting recording pipeline: it creates no notes file and does not enter session management.
6.2 Entry points
- The command palette entry "Dictation · Start/finish" (听写 · 开始/结束);
- A custom hotkey bound to that command (the plugin ships no default hotkey; search for LexVoice under "Settings → Hotkeys" (设置 → 快捷键) and bind your own);
- The waveform button in the middle of the floating bubble: click when idle to start, click again while running to finish.
6.3 Two transcription forms: batch and streaming
| Form | Trigger condition | Experience | Platform |
|---|---|---|---|
| Batch (default) | No dictation service configured, or the address is https | The whole passage is transcribed after you finish speaking; the bubble shows "Listening…" then "AI processing…" | Desktop and mobile |
| Streaming (live captions) | The dictation service address is wss:// and address, key, and model are all filled in |
Live captions appear as you speak, and processing begins the moment you finish | Desktop only |
- In batch form, if no separate dictation service is configured, the currently active notes transcription service is reused.
- Streaming is configured under "Settings → API → Instant dictation" (设置 → API → 即时听写). The page offers three one-click presets: "Fun-ASR" (recommended), "Paraformer-v2", and "Paraformer-8k"; clicking one fills in the Alibaba Cloud Bailian wss address and model name, and you supply the API key yourself (a DashScope key). An address containing dashscope uses the DashScope protocol; one containing openai uses the OpenAI Realtime transcription protocol. The collapsible "About the address field" (地址填写说明) section on the settings page explains how the address is interpreted:
wss://produces live captions,https://is batch, and the OpenAI-compatible/compatible-mode/v1is not a live caption endpoint. - Mobile does not support streaming dictation; it falls back to whole-passage batch transcription automatically and warns once that "Streaming dictation is not yet supported on mobile (desktop required); whole-passage transcription is being used instead" (移动端暂不支持流式听写(需要桌面端),已改用整段转写).
6.4 Output destination
Under "Settings → API → Instant dictation → Dictation destination" (设置 → API → 即时听写 → 听写落点):
- "Insert at cursor (smart fallback to clipboard)" (插入光标(智能回退剪贴板)), the default: text is written at the cursor position anchored the moment recording started. If Obsidian is not in the foreground or there is no active editor, it is copied to the clipboard instead.
- "Always copy to clipboard" (总是复制到剪贴板): the editor is left alone and you paste yourself.
Once the text lands, the floating bubble briefly shows "Written".
6.5 The AI processing template
After dictation ends, the main AI processing service performs a structured cleanup. The built-in default template includes rules such as:
- Multiple points or steps must be numbered as separate items (1. 2. 3.);
- Longer content or multiple topics get a one-sentence summary first, then the individual points (a general-to-specific structure);
- Spoken corrections are applied (for example "Wednesday… no, Thursday" is written as the final version) and references are resolved ("this" or "that thing" is expanded into what is actually meant);
- Filler words, interjections, and stutters are removed and transcription errors corrected; only the body text is output.
You can override the default template under "Settings → API → Instant dictation → Custom processing prompt" (设置 → API → 即时听写 → 自定义整理提示词), using {{转写}} as a placeholder for the raw transcript (if you omit it, the transcript is appended at the end automatically). "Restore default" (恢复默认) clears your custom content and follows the built-in template, which is updated automatically when the plugin is upgraded. The processing call times out after 25 seconds, is never retried automatically, and forcibly disables chain-of-thought for speed.
6.6 Recalling the raw transcript
The command "Dictation · Copy last raw transcript" (听写 · 复制上次转写原文) copies the raw transcript of your most recent dictation — the pre-AI version — to the clipboard. The raw text is kept whether or not processing succeeded, but it lives in memory only, only the most recent one is kept, and it is lost when Obsidian restarts.
6.7 Failure behavior
Dictation is designed never to lose content silently:
- Microphone won't open, transcription failed, connection failed: the corresponding error notification appears and a diagnostic log entry is written.
- AI processing fails or times out: the raw transcript is inserted as a fallback with the message "LLM processing failed; the raw transcript was inserted instead" (大模型整理失败,已置入转写原文).
- Insertion fails (for example, the editor was closed while you were speaking): the text is redirected to the clipboard automatically with a notification. Only if the clipboard also fails are you told to recover it with "Dictation · Copy last raw transcript".
- A streaming error mid-way: you are notified once, and processing continues at the end using whatever text was received.
- Recordings under 400 milliseconds, or with no audio at all: silently discarded, with no notification.
6.8 Things to be aware of
- Dictation is unavailable while a meeting recording is in progress; stop the recording first.
- Only one dictation can run at a time; triggering it again while transcription or processing is running is ignored.
- Dictation results also get the local "common misspellings" corrections from the vocabulary list (see section 8.5).
7. Importing audio and the watched folder
7.1 What it does
The import feature transcribes existing audio files — old recordings, files from an external voice recorder, exports from meeting software — and turns them into notes, sharing the same transcription and AI processing configuration as the recording pipeline. The watched folder takes this further: drop audio into a designated folder and it is transcribed automatically.
7.2 Import entry points
- The command palette entry "Import an existing audio file: transcribe + polish" (导入已有音频文件转写+润色) opens the "Import audio" (导入音频) picker, which lists every recognizable audio file in the audio folder (
LexVoice/录音by default) in reverse order of modification time. LexVoice's own recording slices are collapsed into a "recording batch" (录音批次) per session and can be selected as a group. The processing method (notes mode) can be chosen in the dialog. - Right-click a single audio file in the file explorer → "LexVoice: transcribe and polish" (LexVoice:转写并润色): imports it directly using the current default processing mode, with no picker.
- Right-click a multi-file selection → the "LexVoice: consolidate N audio files…" (LexVoice:整合 N 段音频…) submenu: merges several audio files into a single set of notes using the mode you pick (concatenated in ascending file-name order, with cumulative time offsets).
- The "Audio (import)" (音频(导入)) button at the bottom of the live notes panel in its idle state. The "Text (import)" (文本(导入)) button corresponds to the command "Import existing text / structure a Markdown file" (导入已有文本 / MD 结构化整理), which sends an existing text transcript straight to the AI.
Imported output is written to the notes folder with a file name of the form "YYYY-MM-DD HHmm · 导入.md", including an import header (file count / mode / model). Transcribed text is appended segment by segment, then the same AI processing pipeline as recording is applied.
7.3 Supported formats
webm, mp3, m4a, aac, acc, wav, ogg, flac, mp4, mpeg, mpga, oga.
- Files larger than 25 MB trigger a yellow warning in the picker (most transcription APIs reject them; compress the bitrate first).
- Zero-byte empty files are skipped automatically with a notification (a common sight with cloud-storage placeholder files that have not finished downloading).
- AAC files (.aac/.acc) are converted locally to a temporary WAV before transcription, to ensure compatibility across transcription services.
7.4 Whole-file transcription
Imported audio is submitted to the transcription service as a single complete file rather than being split into several local ASR jobs. The "Import details" (导入信息) header of the note notes this as "Transcription: whole file" (转写:整文件).
The benefit is that speaker numbering stays consistent throughout (chunked transcription often produces numbering that does not line up across chunks); the cost is that no live outline is generated during transcription — the outline only exists in the record-and-transcribe workflow.
- Imported audio uses a separate transcription service, configured under "Settings → Speakers → Imported audio" (设置 → 说话人 → 导入音频), which does not affect live recording (see 7.5).
- With a multi-file import, each file is transcribed whole in turn, the timeline accumulates across them, and each file gets its own "### Audio N" (### 音频 N) block in the note.
- Alibaba Cloud Bailian Fun-ASR uses asynchronous recording-file recognition: upload the audio → submit the job → poll for the result. The progress display steps through "Uploading audio" (正在上传音频), "Submitting transcription job" (正在提交转写任务), and "Reading transcription result" (正在读取转写结果), with an estimated time range.
- Duration and size limits are set by the provider. Alibaba Cloud supports up to 12 hours for ordinary transcription; with speaker separation enabled, the official recommendation is to keep a single file under 2 hours — longer files produce a warning but are still submitted.
7.5 Speaker recognition (imported audio)
For imported audio you can have the transcription service distinguish speakers directly. This complements the multi-channel separation used while recording (see 4.11): multi-channel relies on hardware channels, whereas this relies on the provider's server-side speaker separation algorithm.
Where to configure it: Settings → Speakers → Imported audio.
| Field | Description |
|---|---|
| Transcription service (转写服务) | Used for imported audio only; does not affect live recording |
| Service address / Access key / Model name (服务地址 / 访问密钥 / 模型名称) | Fill in according to the service you chose; "Fetch models" (获取模型) retrieves the available models |
| Connection test (连接测试) | Verifies that the address, key, and model work; no recording content is uploaded |
| Recognition language (识别语言) | Blank or auto means automatic detection |
| Separate speakers (区分说话人) | After transcription, confirm the names behind "Speaker 1, 2, 3" before AI processing begins |
| Number of speakers (说话人数) | Blank means detect automatically; entering a known count improves separation stability |
Available services:
| Service | Characteristics |
|---|---|
| Alibaba Cloud Bailian Fun-ASR (default) | Asynchronous whole-file transcription with speaker separation support; up to 12 hours for ordinary transcription, under 2 hours recommended with speaker separation |
| OpenAI · speaker separation | The gpt-4o-transcribe-diarize model; requires an OpenAI key |
| WhisperX · speaker separation | Locally hosted, free but consumes your own compute; the service response must carry speaker labels |
If two or more speakers are recognized once transcription finishes, a "Confirm speakers" dialog appears listing each speaker number with sample utterances so you can enter names. AI processing only begins after you fill them in, and the result uses the real names directly. You can also choose "Not now" and fill them in later from the "Edit speakers" card in the sidebar.
7.6 Retries and the queue
- In-place retry: each chunk makes at most 3 requests, and only transient errors (429 rate limiting, 5xx, timeouts, network errors) trigger a retry, with backoff durations graded by error type (see section 12.2).
- Empty-result soft failure: when transcription returns success but no text, and the chunk is at least 30 seconds long (or its duration is unknown), it is treated as a soft failure — the cached audio is kept, the chunk enters the retry queue, and the body gets the placeholder "[转写失败(空结果,已进入重试队列)]" (transcription failed — empty result, added to the retry queue). Empty results shorter than 30 seconds are taken to mean the segment genuinely had no content and are not retried.
- Recovery from the master recording: if a temporary slice in the queue goes missing, the plugin can re-cut the audio from the complete recording (the master) using the start and end times recorded with the job, and resume retrying.
- Automatic reprocessing: when the last failed transcription segment of a set of notes is finally filled in, reprocessing is triggered automatically so the body absorbs the recovered content.
7.7 Automatic import from a watched folder
Designate a folder and any new audio synced into it is transcribed and turned into notes automatically. This can be either a vault-relative path or a sync folder on your computer (Nutstore, iCloud, and so on).
Where to configure it: Settings → Advanced → Automatic audio import (设置 → 进阶 → 自动导入音频).
| Field | Description |
|---|---|
| Watched folder (监听文件夹) | Enter a vault-relative path, or click "Choose" (选择) to pick a folder on your computer; leaving it blank disables the feature |
| Process new files automatically (自动处理新文件) | When off, new files are no longer processed automatically |
| Archive subfolder (归档子文件夹) | Applies to in-vault folders only; processed files are moved into this subfolder. Source audio in a computer sync folder is neither moved nor deleted |
| Wait before processing (milliseconds) (开始处理前等待(毫秒)) | Waits for the cloud sync to finish; 3000 by default, 3000–10000 recommended |
| Scan the watched folder now (立即扫描监听文件夹) | Catches up on anything missed, or processes a backlog of existing files after first configuring the feature |
In-vault folders: triggered by Obsidian's file events; the file is imported once it has settled, and moved into the archive subfolder afterwards. Files with sync-conflict names are skipped automatically with a prompt to resolve them by hand.
Computer sync folders (desktop only): polled every 30 seconds while also watching for file system changes. A file is only considered fully synced once its size and modification time have been observed unchanged twice in a row. Processing copies the file to a cache first and transcribes from there; the source file always stays where it is and is never moved or deleted. Recursion goes at most 6 levels deep, and a single scan covers at most 2,000 files. Failures back off at 1 minute, 5 minutes, and 15 minutes, for at most 3 attempts.
Automatic import always uses the "General notes" (综合纪要) mode, the note lands in the transcription notes folder, and the header is marked "Source: automatic import" (来源:自动导入). Automatic import does not start while a recording is in progress; it waits until the current recording has finished.
The command palette offers "Scan watched folder" (扫描监听文件夹) for a manual sweep. When using a manual scan, keep "Process new files automatically" turned on.
7.8 Progress and the status bar
Notifications are shown when an import begins and for each file's progress. The LexVoice section of the status bar shows a spinner and "Import transcription i/N" (导入转写 i/N); once transcription completes, it switches to showing the AI processing sub-stage and a percentage. When idle with retryable jobs pending, it shows "N awaiting transcription" (N 个待转写) — click it to open the queue panel. When completely idle, it shows "LexVoice ready" (LexVoice 就绪). The processing progress panel (see section 12.4) can be expanded to see the current file and step.
7.9 Things to be aware of
- Chunking long audio relies on your machine's audio decoding capability; if a particular codec cannot be decoded, whole-file transcription is used as a fallback. Chunked WAV files temporarily occupy storage space inside the vault.
- MiMo splits at most 160 chunks per import (roughly 320 minutes of audio) and errors out beyond that; use a different service for very long audio.
- The "Completed" (已完成) records in the processing progress panel are not persisted and reset to zero when Obsidian restarts (pending jobs in the queue are unaffected).
8. Transcription service configuration
8.1 What it does
The transcription service turns audio into text and is the first link in the whole chain. LexVoice ships with several providers built in. Meeting segments, imported audio, and queued re-transcriptions all use the currently active transcription service; instant dictation can use a separate service of its own.
Live recording and imported audio use two independent transcription service configurations. The provider system described in this chapter applies to live recording (Settings → API → Live recording (设置 → API → 实时录音)). Imported audio uses whole-file transcription and is configured separately under "Settings → Speakers → Imported audio". The two do not affect each other; see 7.5.
8.2 The provider system
Choose from the "Settings → API → Notes transcription → Transcription service" (设置 → API → 纪要转写 → 转写服务) dropdown; there are 9 providers. Once one is selected, only its configuration fields are shown, along with a guide card (description, pricing notes, setup steps, and a link to the official documentation):
| Service | Type | Default address / model |
|---|---|---|
| SiliconFlow (default) | Segmented | https://api.siliconflow.cn/v1/audio/transcriptions / FunAudioLLM/SenseVoiceSmall |
| OpenAI chunked transcription | Segmented | https://api.openai.com/v1/audio/transcriptions / gpt-4o-transcribe |
| Xiaomi MiMo (APIMiMo V2.5 ASR) | Segmented (proprietary protocol) | https://api.xiaomimimo.com/v1/chat/completions / mimo-v2.5-asr |
| OpenAI Realtime · speech transcription | Streaming | wss://api.openai.com/v1/realtime / gpt-realtime-whisper |
| OpenAI Realtime · speech translation | Streaming | wss://api.openai.com/v1/realtime/translations / gpt-realtime-translate; target language defaults to Chinese |
| Alibaba Cloud Bailian Paraformer Realtime | Streaming | wss://dashscope.aliyuncs.com/api-ws/v1/inference / paraformer-realtime-v2 |
| Local transcription service | Segmented | http://127.0.0.1:8000/v1/audio/transcriptions / whisper-large-v3 |
| WhisperX (local, with speaker separation) | Segmented | Same as above; speakers returned by the server are normalized to [说话人N] |
| Other transcription service (custom) | Segmented | Entirely blank; enter your own OpenAI-compatible address |
Configuration and testing:
- Each provider stores its own address, key, model, and recognition language, so switching between them changes nothing else. Leaving the recognition language blank or set to auto means automatic detection.
- Translation services show an extra "Target language (translation output)" (目标语言(翻译输出)) dropdown with 13 languages (Chinese by default).
- "Restore recommended values" (恢复推荐值) only restores the address, model, and language; it never overwrites a key you have entered (custom services do not have this button).
- "Connectivity test → Test" sends a real transcription request using one second of silent audio; on success it shows the returned text, on failure the error message.
- Every change you make to the configuration is synced automatically into the currently active API profile.
Request timeouts: cloud services get a 120-second base plus an allowance based on upload size (roughly 1 second per 50 KB, capped at an extra 180 seconds). Local services (127.0.0.1 and the like) are relaxed to 10 minutes and may be used without a key.
Keys are stored obfuscated — not encrypted — in the plugin settings file inside your vault and are never uploaded. Be aware, though, that syncing or sharing your whole vault folder with someone else exposes them.
8.3 Xiaomi MiMo in detail
When you select MiMo (or when the address or model matches MiMo's signature), transcription switches to its proprietary protocol, which behaves quite differently from the other services:
- Format restrictions: the server only accepts wav/mp3. For non-native formats — or native formats whose base64 encoding exceeds the threshold of 9.5 MB, kept just under the 10 MB limit for headroom — the plugin decodes locally and splits the audio into 16 kHz mono WAV chunks of 2 minutes each, uploads them in order, and concatenates the results.
- Linked recording codec: when MiMo is the transcription service, recording automatically switches to WebM/Opus so it can be converted to WAV locally. As a result, m4a/mp4 files recorded earlier with a different service cannot be re-transcribed with MiMo (this only affects re-transcription).
- Streaming reception: requests use the Chat Completions protocol and transcribed text is returned as an SSE stream. Timeouts come in three parts: the first byte adapts to file size, 60 seconds of idle time once the stream is flowing, and a hard cap of 10 minutes overall.
- Output ceiling: each call outputs at most 2K tokens. When that ceiling is hit (finish_reason=length), the text transcribed so far is kept and a marker is appended: "This segment is long; a small amount at the end may not have been transcribed" (本段较长,末尾可能有少量内容未转完). A dropped connection with no proper end marker is treated as an error — half a transcript is never reported as success.
- TPM throttling: MiMo accounts are limited to 10K TPM (tokens per minute) / 100 RPM. The plugin has a global pacing gate that queues requests according to estimated audio duration (waiting at most 45 seconds per request). With 3-minute chunks on import, roughly 29 seconds between chunks is normal pacing, not a stall.
- Other limitations: hot word prompt parameters are not supported (only post-transcription local correction applies); the recognition language must be zh, en, or auto; at most 160 chunks per call (roughly 320 minutes); error codes such as 400/401/402/403/404 are treated as non-retryable, while 429 gets extended backoff.
Tip: with MiMo you can use "Settings → LexVoice (home) → Quick setup" to configure both transcription and AI processing with a single key.
8.4 Streaming live transcription and speech translation (meeting recording)
Once you select OpenAI Realtime (transcription or translation) or Alibaba Cloud Bailian Paraformer as your transcription service, simply starting a recording puts you in streaming mode: a single WebSocket connection is held for the entire recording, audio is encoded and pushed in real time, and the note maintains a "Transcribing live…" (实时转写中…) quote block where text appears as you speak (throttled to refresh about every 1.5 seconds). When you stop recording, the full text is taken, the local vocabulary corrections are applied, and normal AI processing begins.
- Translation services detect the spoken language automatically and output dual-track text: translation plus original. The target language is chosen in the service configuration (13 supported, Chinese by default).
- The "Segment interval" and "Instant segment transcription" settings have no effect in streaming mode (the settings page notes this inline), and the live outline's trigger rhythm changes accordingly.
- Desktop only: mobile cannot open a WebSocket with authentication headers, so you are told clearly when recording starts; the audio is still kept.
- Failed streaming segments do not enter the retry queue (they cannot be retried offline); your only options are to record again or reprocess the whole note. If the connection fails, recording continues and the audio is preserved.
- Reference pricing (the provider's live pricing governs): OpenAI transcription roughly $0.017/minute, translation roughly $0.034/minute, and Paraformer roughly ¥3.6/hour.
8.5 How hot words and the vocabulary list affect transcription
The vocabulary list (see section 10.3) improves transcription accuracy through two mechanisms:
- Hot word prompts: for segmented and import-style transcription, the plugin assembles vocabulary entries, personal-name hot words (requires authorization; at most 80), and up to 20 common misspellings into prompt text (truncated to 800 characters in total, including anti-hallucination instructions) that is uploaded with the audio. Whether this takes effect depends on whether the service supports the prompt parameter; MiMo and streaming services do not.
- Local correction: after transcribed text comes back from any service, the plugin applies the "wrong spelling => correct spelling" rules from the "Common misspellings" (易错写法) section of the vocabulary list as local replacements (longer terms first; English is case-insensitive). This applies to instant dictation as well.
8.6 Transcription concurrency
"Settings → Advanced → Recording and transcription → Transcription concurrency" (设置 → 进阶 → 录音与转写 → 转写并发数) offers 1 (most stable) / 2 (balanced) / 3 (faster), defaulting to 1. It only applies to parallel chunk uploads when importing long audio; live segment transcription during recording is always processed sequentially. MiMo chunks are uploaded sequentially by design, so raising concurrency does nothing for it. If you frequently see 429/500 errors, set it back to 1.
9. AI processing and the mode system
9.1 What it does
The AI processing service (the LLM) handles every intelligent task: merging and polishing the notes, the live outline, the Ask tab, knowledge capture, dictation cleanup, title generation, and translation. The shape of the output is determined by the "processing mode" (the template).
9.2 LLM configuration
Under "Settings → API → AI processing service":
- Service presets: 19 are built in, including SiliconFlow, OpenAI, Poe, OpenRouter, Moonshot/Kimi, Alibaba Cloud Bailian, DeepSeek, Xiaomi MiMo, Zhipu GLM, Volcano Ark, Tencent Hunyuan, Gemini (OpenAI-compatible), xAI, Groq, Mistral, Perplexity, other compatible gateways, local Ollama, and local LM Studio. Selecting a preset fills in the address and description without overwriting a key you have entered.
- Only the OpenAI-compatible Chat Completions protocol is supported. The address can end at
/v1or be the root address; the plugin appends/chat/completionsautomatically. Local localhost services can be used without a key. - "Fetch available models" retrieves the service's model list so you can pick one instead of typing it; "Test connection" sends a very short request to verify the address, key, and model.
- For SiliconFlow and MiMo setups, a one-click "Reuse transcription key" button is offered.
- The plugin infers the output ceiling from the model name (64000 for DeepSeek V4, 16000 for MiMo, 8000 for unknown models), so requests do not fail for exceeding the limit.
API profiles (at the top of "Settings → API"):
- "Save as profile" (保存为方案) stores the entire current configuration — transcription service plus AI processing, including both keys and a snapshot of the transcription service — under a name;
- The profile dropdown switches the whole set in one click, and the panel's "More settings → Profile" (更多设置 → 方案) offers a shortcut to the same;
- The "Check" (检测) button tests both transcription (using one second of silent audio) and the LLM, and reports a single combined result;
- Once a profile is active, any change to the transcription or LLM configuration is written back into it automatically; deleting a profile does not clear your current working configuration;
- Profiles saved by older versions contain only the AI processing settings and no transcription snapshot; the interface marks these, and clicking "Save as profile" again brings the transcription configuration in.
Quick setup: "Settings → LexVoice (home) → Quick setup" supports the two "one key does it all" providers, Xiaomi MiMo and SiliconFlow. Enter a key once, click "Apply", and both transcription and AI processing are configured and saved as an API profile of the same name (re-using the name overwrites rather than stacking). For MiMo, the endpoint is chosen automatically from the key's characteristics.
9.3 The list of processing modes
The processing mode determines the prompt template and frontmatter structure of your notes. Set the default under "Settings → AI processing → Notes template" (设置 → AI 整理 → 纪要模板), or pick one per use from the panel's "Template" dropdown, the import dialog, or the right-click menu:
| Mode | Best for | Output characteristics |
|---|---|---|
| General notes (default) | Anything | A three-layer structure: overview / body / reference |
| Work notes | Work meetings | Oriented around decisions, tasks, risks, and progress |
| Interview | Interviews and research | Turns Q&A into insight; frontmatter records interviewee and interviewer |
| Personal notes | Dictation, ideas, retrospectives | Monologue cleanup |
| Study notes | Courses, videos, podcasts | Structures knowledge |
| Seminar | Multi-party discussions | Organizes positions, disagreements, and evidence |
| Transcription only, no processing (off) | When you only want the text | Makes no LLM calls |
Output length adapts across four tiers based on recording duration and transcript volume (4096/8192/16000/32000 tokens), capped by the current model's output ceiling.
Structure level: "Settings → AI processing → Notes generation → Structure level" (设置 → AI 整理 → 纪要生成 → 结构化程度) offers loose / balanced / strict (balanced by default), controlling how heavily the body is layered and formatted.
9.4 Thinking level (chain-of-thought control)
The panel's "More settings → Thinking" offers three levels (this setting exists only in the panel; there is no equivalent on the settings page):
- Fast mode (快速模式): disables chain-of-thought, saving tokens and speeding things up;
- Default mode (默认模式), the default: does not interfere with the service's own default behavior;
- Reasoning mode (推理模式): explicitly enables chain-of-thought, suited to complex content.
The plugin injects the appropriate parameter for each provider (DeepSeek, Volcano, and Zhipu use the thinking parameter; SiliconFlow, Alibaba Cloud Bailian, and MiMo use enable_thinking; OpenAI's o-series, Grok, Gemini 2.5, and similar use reasoning_effort). Services that do not support chain-of-thought control show "Not supported" in the dropdown. Some internal tasks have a fixed level (dictation cleanup, for example, always uses fast mode).
9.5 Reprocessing
Right-click in the panel's "Notes" list → "Reprocess as" (重新整理为): the entire set of notes is rebuilt from the "Segment raw transcripts" saved at the bottom of the note. You can first tick one preference modifier (more detailed / more concise / more structured / more natural / expanded detail — the ticked state is remembered), then click the target mode to run it. The role mapping in the frontmatter is applied during the run (substituting real names for code names in the transcript), and your edits to the frontmatter are preserved. The output is saved as a version that you can view or delete from the panel. The command palette also has "Reprocess current notes (apply YAML role mapping)" (重新整理当前纪要(应用 yaml 角色映射)), for re-running in the original mode after changing the people mapping. The "Additional prompt for reprocessing preferences" (重新整理偏好追加提示词) field under "Settings → AI processing → Notes generation" lets you add your own requirements to reprocessing runs that have a preference ticked.
9.6 Translation (notes language policy)
"Settings → AI processing → Language and translation" (设置 → AI 整理 → 语言与翻译) sets a single output language for your notes during processing (processing and translation happen in one pass; there is no separate translation command):
- Follow the source (default);
- Standardize on a target language: the entire body is translated into the target language;
- Bilingual parenthetical: the target language leads, with the original text in parentheses for key decisions, terminology, and short quotations.
The target language can be Chinese, English, Japanese, Korean, or a custom choice. "Keep proper nouns in the original language" (保留专有名词原文) is on by default, and you can add extra language requirements. The language policy only affects the processed output; the raw transcript at the bottom of the notes always stays in the original language. Do not confuse this with "live speech translation" in section 8.4, which is a streaming translation service at the transcription stage.
9.7 Custom prompt templates
"Settings → AI processing → Notes template → Open template library" (设置 → AI 整理 → 纪要模板 → 打开模板库): built-in prompts can only be set as the default, not modified. "New custom prompt" (新建自定义提示词) creates a complete standalone template, which must contain the {{TRANSCRIPT}} placeholder or it cannot be saved. Once saved, it appears as a new mode everywhere modes can be chosen and can be set as the global default. The "AI-optimize prompt" (AI 优化提示词) button asks the LLM to rewrite your draft into a structured processing prompt. Deleting a custom template that happens to be the default falls back to the study notes mode.
9.8 Title generation and automatic renaming
Once processing is complete, the plugin takes the first 2,500 characters of the processed text and asks the LLM to distill a Chinese topic tag of at most 15 characters — it prefers a "specific object–core issue" format, such as "合同审查-供应商独家条款" (contract review–supplier exclusivity clause) — then appends it to the file name and renames the file, with links inside the vault updated automatically. On failure, the original file name is kept silently. The toggle is at "Settings → Advanced → Add scenario tag to file name automatically" (设置 → 进阶 → 自动加场景标签到文件名), on by default. No renaming happens in "transcription only" mode or when the processed output is empty.
9.9 AI polishing of a selection
The editor command "AI polish: selection or whole note" (AI 润色:当前选区或整篇) treats the selected text — or the whole note if nothing is selected — as a raw transcript, processes it with the current default template, and replaces it in place. Note that this overwrites the original text directly with no version saved, so use it carefully on important notes.
10. Knowledge layer
The knowledge layer distills information scattered across your notes into reusable assets — people profiles, tasks, learning cards, and transcript hot words — and provides aggregate views and reworked outputs (visual reports, email drafts). The related settings are collected under "Settings → Information objects" (设置 → 信息对象).
10.1 Knowledge capture (people / tasks / knowledge / words)
Entry point: the panel's "Capture" tab. The first time you open it, you see "The AI hasn't read this set of notes yet" (AI 还没读过这篇纪要) and a "Scan this note" (扫描本篇) button; triggering it again after a previous scan brings up a "Rescan this note?" (重新扫描本篇?) confirmation. Click "Scan this note" and the AI reads the current notes end to end and produces four groups of candidates, advanced group by group along a "people → tasks → knowledge → words" (人 → 事 → 知 → 词) relay bar:
- People: handle each entry with "Keep / Merge / Ignore" (留下/合并/忽略). Click a name to correct one the transcription got wrong; the correction is written back to the note body and frontmatter. Confirmed entries go into the people library (
LexVoice/人员by default). - Tasks: a checkbox mode (all selected by default). "Add tasks" (加入待办) writes to the "## Tasks" (## 待办) section of today's daily note first — the inline format is compatible with the Tasks plugin's due date and owner annotations, and includes a back-link to the source notes and a duplicate-prevention marker. If the daily notes feature is not enabled, it falls back to one file per task in the task cards folder.
- Learning cards: written to the learning cards folder, one file per card, containing the card type (concept / mechanism / case / Q&A / follow-up / opinion), a summary, whose opinion it is, a reusable phrasing, and a back-link to the source.
- Transcript hot words: merged into the vocabulary list file by section, to serve as recognition prompts for later transcription. Corrected terms are also written back into the notes body.
Interaction details of the pipeline:
- Each group shows only the first 8 entries by default, expandable to see them all. The last three groups have "Add to tasks / card library / hot word library (N)" (加入待办/卡片库/热词库(N)) and "Ignore the unselected" (忽略未选) buttons at the bottom.
- About a second after you finish a group, it moves on to the next automatically; when all are done it shows "Capture complete for this meeting" (这场会沉淀完了).
- Every group's actions come with an undo prompt, so a mistake can be reversed immediately.
- Candidates and their processing state are persisted in a hidden block inside the notes file, so nothing is lost when you switch devices or reopen the panel. A rescan only overwrites unconfirmed candidates; anything already added or ignored is unaffected.
- Each group has a candidate limit: 20 people, 12 tasks, 12 learning cards, and 18 hot words per section.
There are two supply paths:
- Pre-extraction (no extra calls): while the AI is processing the notes, a "capture pre-extraction" instruction is included automatically, and the candidates are stored in a hidden block at the end of the note, visible as soon as you open the Capture tab;
- Manual scan: when pre-extraction is unavailable or you want to extract again, click "Scan this note" for a larger LLM call (internally it uses continuation stitching to avoid truncation; the scan can be cancelled, and a failure only produces a notification without affecting the notes).
Automatic capture: with "Capture automatically after transcription" (转写完成后自动沉淀) enabled under "Settings → Information objects" (off by default), every completed processing run triggers a background scan; learning cards and tasks are added directly, while people and hot words still go through manual confirmation. It is off by default to save tokens.
10.2 People (the people library)
One Markdown profile per person, with frontmatter for name, role, common forms of address, organization, email, source, last updated, and remarks. Each page automatically aggregates "Related notes" (相关纪要), a table of notes linking to this person, which requires Obsidian Bases support, and "Related tasks" (相关待办), which requires the Dataview plugin. The people library lives at LexVoice/人员 by default, with an overview file at LexVoice/人员库.base that provides two views: a people table and people cards.
- Where people suggestions come from: capture on a single set of notes, or the command "AI-scan the notes library for people suggestions" (AI 扫描纪要库提取人员建议), which scans past notes in bulk (at most 20 per round, incrementally, with the remainder continued next time; the suggestion cache holds up to 500 entries and survives across sessions).
- Confirming "Add to people library" (加入人员库) either creates a new profile or merges into an existing one (merging role, forms of address, organization, and evidence), and writes the person's link back into the frontmatter of the source notes. Ignored suggestions go to an ignore list and can be restored.
- The "Fill in from past notes" (从历史纪要补全) section of the settings page shows both pending and ignored suggestions.
- Deduplication: "Settings → Information objects → Merge duplicate people" (设置 → 信息对象 → 合并重复人员) rewrites every link in the vault that points to a duplicate page; finish syncing your devices before running it.
- Three privacy levels ("Settings → Information objects → Storage and privacy → People data usage policy" (设置 → 信息对象 → 存储与隐私 → 人员资料使用策略)):
- Privacy first (default): no people data is sent to any service;
- Name hot words: only names and common forms of address (at most 80) are sent with transcription and processing requests to improve name recognition; choosing this requires explicit authorization in a dialog the first time and can be revoked in one click;
- Local enhancement: full people context (at most 60 people) is sent only when the transcription/LLM endpoint is a local or LAN address.
10.3 The vocabulary list (transcription word list)
A single-file Markdown hot word list (LexVoice/词汇表.md by default) with six fixed sections: personal names, brands/organizations, projects/products, industry terminology, common misspellings (in the format "wrong spelling => correct spelling"), and other proper nouns. You can edit it by hand, or fill it in through "Add to hot word library" during capture or "Settings → Information objects → Extract transcription word list" (设置 → 信息对象 → 提取转写词表), which scans past notes in bulk. Its two-layer effect on transcription is described in section 8.5. Lines beginning with #, >, <!--, or // are ignored.
10.4 The learning wall, task wall, concept wall, and object overview
The commands "Open the learning card wall" (打开学习卡片瀑布墙), "Open the concept wall" (打开概念墙), "Open the task wall" (打开待办墙), and "Open the object overview" (打开对象总览) — or the corresponding buttons under "Settings → Information objects" — generate aggregate view pages in the views folder (LexVoice/视图 by default):
| View | What it aggregates |
|---|---|
| Learning card wall | Every card in the learning cards folder |
| Concept wall | Learning cards of the concept type |
| Task wall | The task cards folder plus every task line in the vault carrying a LexVoice task marker |
| Object overview | All of the above, with an "All / Learning cards / Concepts / Tasks" filter bar |
- Task cards can be ticked off directly on the wall, and the state is written back to the corresponding task line in the source file (daily note or card). Click any card to jump to its source.
- The wall pages render with dataviewjs, so the Dataview plugin must be installed with JavaScript queries enabled; otherwise you will only see a code block.
- Wall pages are generated artifacts and are overwritten each time they are opened, so do not write your own content into them.
- The "Fill in views" (补齐视图) button generates 9 detailed .base view files (5 by mode, 4 by scenario, including an overview of all notes) without overwriting existing ones. It requires an Obsidian version that supports Bases.
10.5 Visual reports (HTML / PDF)
Use the commands "AI-generate an HTML report for the current notes" (AI 生成当前纪要 HTML 报告) and "AI-generate a PDF report for the current notes (full page, no truncation)" (AI 生成当前纪要 PDF 报告(整页不截断)), or right-click a note in the panel → "Generate" → the corresponding item. The plugin reworks the notes into a visual report you can share on its own:
- Seminar mode uses a fixed, data-driven template: you choose a color scheme before generation, and the AI produces only the data, which is injected into the built-in template and colored as a whole. Other modes have the AI generate the report structure, which is then rendered as a general-purpose HTML report.
- Output is written to the HTML report folder (
LexVoice/HTML报告by default) and named "-HTML报告.html" and " -报告.pdf". By default it opens in your system's default application afterwards. - The HTML file has a built-in "Save as long image" (保存长图) button that exports a PNG. The PDF version is rendered at the content's true dimensions as a single unpaginated PDF, with a single-page height cap of 18,000 pixels; beyond that you are advised to use HTML instead.
- Limitations: an LLM must be configured; an error is raised if the notes body (with source material stripped out) is under 80 characters; and PDF generation is desktop-only.
10.6 Semantic Canvas
Turns a finished set of notes into an Obsidian Canvas diagram: the session's core proposition sits at the center, main branches extend to the right, and key points and details unfold layer by layer. It is well suited to reviewing a session yourself or walking someone else through it.
Entry point: open a completed set of notes in the sidebar → the icon button to the right of the "AI outline" (AI 整理大纲) block heading, whose tooltip reads "Generate or update the semantic Canvas" (生成或更新语义 Canvas). The button only appears when outline nodes can be parsed out of the notes, and the outline must have at least 2 nodes.
Output: a file in the same folder as the notes, named "
Structure:
- The center card holds the core proposition and a summary, plus a link back to the source notes.
- Main branches are arranged in a column on the right, each in its own color.
- Parallel points are collected into group boxes (grouping happens only when there are at least 3 children and all are leaf nodes).
- Size limits: at most 5 levels, 34 nodes, and 8 main branches; anything beyond that is truncated.
Regeneration preserves your manual adjustments: as long as a node still carries the marker the plugin wrote into it, regeneration keeps the position and size you dragged it to. Nodes and edges you added yourself are also kept as they are.
Generation requires a configured LLM. If the outline is too thin, you will see "The current outline has too little content to generate a semantic diagram yet" (当前大纲内容太少,暂时无法生成语义图).
10.7 Email drafts
Right-click a note in the panel → "Generate" → "Email draft" (邮件草稿); there is no command palette entry. An .eml draft is generated locally and opened in your system's default email client. Recipients are filled in automatically by matching attendee-type fields in the notes frontmatter against the "email" field of profiles in the people library. The body has four sections: summary, decisions, tasks, and follow-up. Attachments include the original notes, an automatically rendered PDF of them, and any reports already generated under the same name. Drafts are stored in LexVoice/邮件草稿. This feature is purely local: it sends no email and makes no LLM calls. If no email address matches, the draft is still generated, with a notification.
11. Settings reference
The settings page has 7 permanent tabs: LexVoice (home) (LexVoice(首页)), General (常规), API, AI processing (AI 整理), Information objects (信息对象), Advanced (进阶), and Update (更新). The main settings are listed below by tab.
11.1 LexVoice (home)
A navigation page with no persistent settings of its own. It contains:
- The version number, plus "Configure API" (配置 API), "Getting started" (入门配置), and "Open live notes panel" buttons;
- "Quick setup": configure both transcription and AI processing with a single MiMo or SiliconFlow key and save them as a profile, with a connectivity check;
- Four prerequisite cards: transcription service, AI processing, system audio capture, and daily notes;
- Navigation to advanced capabilities, and notes on costs.
11.2 General
| Setting | Default | Description |
|---|---|---|
| Recording source (录音来源) | Microphone only | Microphone only / Microphone + system audio / System audio only |
| Microphone (麦克风) | System default input | Once selected, the device is opened exactly as chosen, with no silent fallback |
| System audio input (电脑音频输入) | Not selected | Required for system audio modes (a virtual audio device) |
| Speaker separation (说话人区分) | Automatic (recommended) | Automatic / Off / Separate by channel; only shown for the "Microphone only" source on desktop, see 4.11 |
| LexVoice recordings folder (LexVoice 录音文件夹) | LexVoice/录音 | Changes affect new files only |
| Notes save location (纪要保存位置) | LexVoice/转写纪要 | |
| Meeting materials folder (会中材料文件夹) | LexVoice/会议资料 | Where workbench photos and attachments are stored |
| Notes file name format (纪要文件名格式) | YYYY-MM-DD HHmm | |
| Open notes automatically when finished (完成后自动打开纪要) | On | |
| Write to today's meeting summary (写入今日会议概要) | On | Requires Obsidian's Daily notes feature |
| Daily summary heading (日记概要标题) | 今日会议概要 | |
| Daily summary template (日记概要模板) | Built-in template | Supports placeholders; can be restored to the default in one click |
| Show floating bubble (显示悬浮气泡) | On | |
| Floating window size (悬浮窗大小) | Large | Large / Medium / Small |
There are also three action buttons: "Auto-recommend", "Device detection" (设备检测), and "System audio guide".
11.3 API
| Setting | Default | Description |
|---|---|---|
| API profile (API 方案) | None (temporary configuration) | Save, switch, check, and delete transcription + AI processing as a set |
| Transcription service (转写服务) | SiliconFlow | 9 to choose from, see section 8.2 |
| Address / key / model / language per service | See the table in section 8.2 | Stored separately per provider; "Restore recommended values" does not overwrite keys |
| Target language (translation services only) (目标语言) | Chinese | 13 to choose from |
| Dictation service (address / key / model / language) (听写服务) | All blank | Blank = reuse the notes transcription service; a wss address means streaming |
| Dictation destination (听写落点) | Insert at cursor (smart fallback to clipboard) | Or always copy to clipboard |
| Custom dictation processing prompt (听写自定义整理提示词) | Blank (follows the built-in template) | {{转写}} placeholder |
| AI processing service preset (AI 整理服务预设) | SiliconFlow | 19 presets |
| AI processing service address (AI 整理服务地址) | https://api.siliconflow.cn/v1/chat/completions | |
| AI processing access key (AI 整理访问密钥) | Blank | May be left blank for local services |
| AI processing model ID (AI 整理模型标识) | Blank | Chosen via "Fetch available models" |
11.4 Speakers
Used for imported audio only; not involved in live recording segmentation.
| Setting | Default | Description |
|---|---|---|
| Transcription service (转写服务) | Alibaba Cloud Bailian Fun-ASR | OpenAI · speaker separation and WhisperX · speaker separation are also available |
| Service address (服务地址) | Follows the selected service | The transcription endpoint for imported audio |
| Access key (访问密钥) | Blank | Fill in as required by the selected service; may be left blank for a local WhisperX service |
| Model name (模型名称) | Follows the selected service | "Fetch models" retrieves the models the service supports |
| Connection test (连接测试) | — | Verifies that the address, key, and model work; no recording content is uploaded |
| Recognition language (识别语言) | Follows the selected service | Blank or auto means automatic detection |
| Separate speakers (区分说话人) | On | After transcription, confirm the names behind "Speaker 1, 2, 3" before AI processing begins |
| Number of speakers (说话人数) | Automatic | Blank detects automatically; entering a known count improves separation stability |
11.5 AI processing
| Setting | Default | Description |
|---|---|---|
| Structure level (结构化程度) | Balanced | Loose / Balanced / Strict |
| Additional prompt for reprocessing preferences (重新整理偏好追加提示词) | Blank | Only affects reprocessing runs with a preference ticked |
| Language policy (语言策略) | Follow the source | Follow the source / Standardize on target language / Bilingual parenthetical |
| Target language (目标语言) | Chinese (zh-CN) | Custom values supported |
| Keep proper nouns in the original language (保留专有名词原文) | On | |
| Extra language requirements (额外语言要求) | Blank | |
| HTML report folder (HTML 报告保存文件夹) | LexVoice/HTML报告 | |
| Open reports automatically after generation (报告生成后自动打开) | On | |
| Company name in the report footer (报告页脚公司名) | Blank | When blank, the notes' "公司/" tag is used (seminar template) |
| Default notes template (默认纪要模板) | General notes | See section 9.3 for the list of modes |
| Template library (模板库) | — | Custom prompt management, see section 9.7 |
11.6 Information objects
| Setting | Default | Description |
|---|---|---|
| Capture automatically after transcription (转写完成后自动沉淀) | Off | When on, cards and tasks are added automatically; people and hot words still require confirmation |
| Learning cards folder (学习卡片文件夹) | LexVoice/学习卡片 | |
| Task cards folder (待办卡片文件夹) | LexVoice/待办卡片 | Used only as a fallback when daily notes are unavailable |
| People folder (人员文件夹) | LexVoice/人员 | |
| People library overview file (人员库总览文件) | LexVoice/人员库.base | |
| People data usage policy (人员资料使用策略) | Privacy first | Privacy first / Name hot words (requires authorization) / Local enhancement |
| Transcription word list file (转写词表文件) | LexVoice/词汇表.md | |
| Views folder (视图文件夹) | LexVoice/视图 | Where object walls and .base views are stored |
There are also action buttons for bulk extraction (people suggestions / transcription word list), clearing scan records, deduplicating people, and opening the object walls and detail tables.
11.7 Advanced
| Setting | Default | Description |
|---|---|---|
| Instant segment transcription (即时分段转写) | On | When off, everything is transcribed in one pass on stop |
| Discard recordings under 3 seconds (过滤 3 秒内录音) | On | Accidental recordings are discarded outright |
| Segment interval (分段间隔) | 5 minutes | Range 0.5–30 minutes; no effect with streaming services |
| Transcription concurrency (转写并发数) | 1 | 1–3; only affects imports of long audio |
| Keep background slice audio (保留后台切片音频) | Off | When on, successfully transcribed slices are kept too |
| Consolidated notes layout (纪要整合排版) | On | When off, the original segments are kept and a consolidated block is appended |
| Add scenario tag to file name automatically (自动加场景标签到文件名) | On | The AI distills a topic of at most 15 characters |
| Live outline (实时大纲) | On | When off, only manual refresh is available |
| Open the live notes panel automatically when recording starts (录音开始时自动打开实时纪要面板) | On | |
| Local diagnostic log (本地诊断日志) | On | A "Copy diagnostic report" (复制诊断报告) button sits on the same row |
| Diagnostic log folder (诊断日志文件夹) | LexVoice/诊断日志 | |
| Watched folder (监听文件夹) | Blank (disabled) | A vault-relative path, or a sync folder on your computer |
| Process new files automatically (自动处理新文件) | On | When off, only manual scans work |
| Archive subfolder (归档子文件夹) | processed | Blank = no archiving (files may be processed repeatedly) |
| Wait for cloud sync to finish (milliseconds) (等待云盘同步完成(毫秒)) | 3000 | Range 0–60000 |
| Maximum retries (最大重试次数) | 3 | Range 1–10 (the automatic retry ceiling for the queue) |
There are also action buttons for "Scan the watched folder now", "Open queue" (打开队列), "Retry all" (重试全部), and "Clear diagnostic logs" (清空诊断日志).
11.8 Update
| Setting | Default | Description |
|---|---|---|
| Check automatically at startup (启动时自动检查) | On | At most once every 24 hours |
The status line shows the current version, the available version, the last check, the last error, the number of fallback sources, and the target directory. The action buttons are described in section 2.3.
11.9 Settings available only in the panel
The following have no entry on the settings page and are adjusted only in the live notes panel's "More settings": the thinking level (default: "Default mode") and processing preferences (default: none). "Template", "Audio", "Segment interval", and "Profile" share their storage with the settings page when changed in the panel and are saved immediately.
12. Troubleshooting
12.1 The diagnostic report
When you run into a problem and need help or want to report it, copy the diagnostic report first:
- Entry point: the command palette entry "Copy diagnostic report", or the "Copy diagnostic report" button under "Settings → Advanced → Diagnostics and logs" (设置 → 进阶 → 诊断与日志).
- Contents: environment details (plugin version, Obsidian API version, platform), a configuration summary (transcription service/model/endpoint, concurrency, audio source mode, segment interval, and counts per queue state), and the last 100 lines of the diagnostic log (from the three most recent log files). Once copied to the clipboard, it can be pasted straight to the developer.
- Privacy redaction: redaction happens as the log is written — key and token fields, system user directories, and local paths are all masked; fields whose keys involve secrets, prompts, transcribed text, or body content are replaced wholesale with placeholders; and path fields keep only the file name. The log never records audio, transcript body text, full prompts, or API keys. The scope of redaction is stated at the end of the report.
- Diagnostic logs are written to daily JSONL files inside the vault (
LexVoice/诊断日志/YYYY-MM-DD.jsonlby default), stored locally only and never uploaded. "Clear diagnostic logs" moves all of them to the system trash (with confirmation). Turning off "Local diagnostic log" stops recording entirely, which means problems that occur while it is off cannot be traced; leaving it on is generally recommended.
12.2 Common errors
| Symptom | Cause and plugin behavior | Suggested action |
|---|---|---|
| Transcription returns 429 / rate limited | Server-side rate limiting. The plugin retries automatically after the server's Retry-After delay (capped at 90 seconds) or a random 30–45 second backoff, with at most 3 requests per chunk | Set "Transcription concurrency" back to 1; MiMo users should mind the 10K TPM quota, where waits of tens of seconds between chunks are normal pacing |
| Transcription request times out | Cloud timeouts are 120 seconds base plus a size-based allowance (capped at an extra 180 seconds); local services are relaxed to 10 minutes | Check your network and proxy; compress the bitrate of large files first; confirm your local service is running |
| Transcription returns an empty result | The service responded successfully but with no text. Segments of at least 30 seconds are treated as a "soft failure" and enter the retry queue, with "transcription failed (empty result)" as a placeholder in the body; segments under 30 seconds are taken to have no content | Wait for the queue to retry automatically; if results are repeatedly empty, check whether the wrong audio device was selected (recording silence) |
| Content missing from the end of a MiMo transcription | The 2K output ceiling was hit. The plugin keeps what was transcribed and appends the marker "This segment is long; a small amount at the end may not have been transcribed" | Shorten the segment interval, or use another transcription service for long passages |
| A queued job shows "missing" / the audio does not exist | The temporary slice was cleaned up or lost | Click "Retry" on each entry in the queue panel; the plugin re-cuts the audio from the complete recording (the master) using the time offsets |
| A queued job shows "blocked" | The LLM configuration is missing or the service is failing, so the processing job is waiting | Fix the "AI processing service" configuration, then run the command "Retry all failed jobs" (重试所有失败任务) |
| A streaming transcription segment failed | The wss connection failed or dropped; such segments do not enter the retry queue (they cannot be retried offline) | The recording and audio are unaffected; reprocess the whole note, or switch to a segmented service |
| The outline does not update for a long time | The outline only refreshes when a segment finishes transcribing, so a long segment interval means slow updates | Shorten the segment interval (3–5 minutes recommended) or click "Refresh" manually |
| The plugin cannot be installed or enabled | A file location or version problem | Confirm the three files are in .obsidian/plugins/lexvoice/, that Obsidian is at least 1.10.0, and that Safe Mode is off; when an update fails, the plugin automatically tries several download sources |
| A warning that main.js and the manifest versions do not match | Local files are out of step | Go to "Settings → Update" and run the one-click update again (reinstalling works even when the version is unchanged) |
| Microphone access denied | The system revoked microphone permission | Follow the overlay's instructions to grant permission in system settings; you can choose "Save recording only" for what has already been recorded |
| Almost no sound was detected during the session | Audible content in under 2% of valid samples, usually the wrong device (for example a virtual device with no input) | Check your device selection under "Settings → General → Audio input" and verify it with "Device detection" |
| An imported file was skipped (0 bytes) | A cloud-storage placeholder file has not finished downloading | Wait until the file has downloaded fully, then import it again |
| A file in the watched folder is not processed and a conflict is reported | A cloud sync conflict copy (Nutstore/Dropbox/OneDrive conflict naming) | Resolve the conflict by hand, then put the file back in the watched folder or scan manually |
| The dictation result was not written into the note | When insertion fails, the text is redirected to the clipboard with a notification | Just paste it; if the clipboard also failed, recover the text with the command "Dictation · Copy last raw transcript" |
| A transcoding prompt appears before AAC audio is imported | AAC must be converted locally to a temporary WAV to ensure compatibility across transcription services | This is normal; just wait. If you handle AAC often, consider recording in mp3/wav instead |
| MiMo cannot re-transcribe older recordings (m4a/mp4) | MiMo only accepts wav/mp3, and the older recordings' codec cannot be converted locally | Re-transcribe with a different service, or stick with MiMo going forward (its recordings automatically use a compatible codec) |
12.3 How the job queue works
Retryable jobs — failed transcriptions, failed AI processing, and so on — enter a persistent queue automatically. If the queue is not empty at startup, the plugin reports "N pending jobs found; retrying in the background…" (发现 N 个待处理任务,后台重试中…) and runs one round of retries automatically. Each failure counts as one retry, and once "Maximum retries" is reached (3 by default, adjustable from 1 to 10), automatic retries stop and you can retry entries by hand. Permanent errors — no key configured, an unaccepted format, an oversized file — are never pointlessly retried. Manual entry points: the command "Retry all failed jobs", "Retry all" on the Advanced settings page, the "Retry transcription" button on a note's row in the panel, or the right-click item "Retry failed transcription segments".
12.4 Using the processing progress panel
How to open it: the command "Open the pending queue" (打开待处理队列), clicking the progress indicator in the status bar, "Settings → Advanced → Open queue", or the progress entry point in the panel. The panel shows three groups of entries: completed (with elapsed time and token usage), in progress (current file, step, and percentage), and pending (retry count and the most recent error). Each pending job can be individually retried or deleted; at the bottom are "Retry all" and "Clear pending" (清空待处理), the latter requiring confirmation. After clearing, the corresponding spots in your notes stay as they are, and you can start over from the right-click menu in the notes.
13. Known limitations and best practices
13.1 What is supported on mobile
Available on mobile: microphone-only recording (system default input), segmented or whole-passage cloud transcription, AI processing, text import, browsing notes, the settings page (single-column layout), and the live panel (as a main-area tab).
Restricted on mobile:
- The recording source is forced to "Microphone only" and the device dropdown is disabled; system audio and virtual audio device capture are desktop-only.
- Streaming transcription and streaming dictation are unavailable (mobile cannot open a WebSocket with authentication headers): choosing a streaming service for recording produces a warning and the audio is kept; dictation falls back to whole-passage batch transcription automatically.
- PDF report generation is desktop-only.
- The local decoding capability that long-audio import depends on is not fully reliable on mobile; handle long audio on desktop.
- Keep Obsidian in the foreground while recording on mobile; locking the screen may interrupt the recording.
13.2 Notes on speaker attribution (important)
There are three sources for "who said this" in a set of notes, in descending order of reliability. Judge accordingly:
- Multi-channel hardware separation (most reliable). When you record with a one-receiver/multi-transmitter microphone and "Speaker separation" reports "Separated", the speaker is determined by the physical channel, with no inference involved. See 4.11.
- Speaker recognition on imported audio. When you import audio with "Separate speakers" enabled, the transcription service (Alibaba Cloud Bailian Fun-ASR, OpenAI, WhisperX, and so on) performs speaker separation across the whole file; accuracy depends on the service itself and on recording quality. See 7.5.
- AI inference from context (risky). When neither of the above applies — for example, an ordinary mono microphone, or a mixed source (microphone + system audio) recorded down to a single track — transcription produces continuous text with no speaker distinction, and attribution in the notes is inferred by the AI from forms of address, context, and relationships between people. Misattribution is possible.
Therefore: when the content matters — assigning responsibility, recording commitments, attributing key decisions — play back the original audio using the playback anchors in the notes and verify, rather than taking the AI's attribution as evidence. If you deal with such situations often, use a one-receiver/multi-transmitter microphone, or enable speaker recognition when importing.
One more thing: with segmented recording, speaker numbering may not line up across segments (the same person can be numbered differently in different segments). The "Confirm speakers" dialog warns you when this happens; check the sample utterances before entering names.
13.3 MiMo constraints in live scenarios
MiMo's TPM pacing and 2-minute chunking make it better suited to imports and to scenarios without dense segmentation. A very short segment interval (0.5–1 minute) combined with the live outline easily triggers rate-limit queuing, which feels like transcription running half a beat behind. When you want a smooth live meeting experience, choose a segmented service such as SiliconFlow, or a streaming service.
13.4 Recommended segment intervals
- Ordinary meetings: 3–5 minutes, balancing outline refresh rate against call costs.
- Situations that need frequent outline refreshes (negotiations, interviews): 1–3 minutes, bearing in mind that the number of LLM calls rises accordingly.
- Long lectures where you only want the final notes: increase the interval, or turn off instant segmentation and process everything in one pass after stopping.
- Remember: the live outline's refresh rhythm follows the segment interval. Set the interval too high and the outline will look "stuck".
13.5 What to expect when importing long audio
Importing long audio requires your machine to fully decode the audio before chunking, which briefly consumes a fair amount of memory and temporary storage inside the vault (the chunked WAV files). Transcription time depends on the audio duration, the concurrency setting, and the provider's rate limits. Audio several hours long is best handled on desktop with a stable network, with "Transcription concurrency" set to 2–3 according to what the service can take (except for MiMo, where 1 is fine).
13.6 Other known limitations
- A mixed source is recorded as a single track and the two audio paths cannot be separated afterwards.
- Ask history is not persisted and is cleared when the panel closes (except for answers written into the notes).
- The raw dictation text keeps only the most recent entry and is lost on restart, so check important dictation output promptly.
- API keys are stored obfuscated — not encrypted — in
data.jsoninside the vault; do not share your whole vault with anyone you do not trust.
14. Appendices
Appendix A: The complete command palette list (29 commands)
All of these commands appear in the command palette (Ctrl/Cmd+P) with the "LexVoice:" prefix:
| Command | Effect |
|---|---|
| Start/stop recording (开始/停止录音) | Starts recording when idle; stops and begins processing while recording |
| Pause/resume recording (暂停/继续录音) | Pauses or resumes the current recording |
| Start recording · Microphone only (开始录音 · 仅麦克风) | Starts recording with the audio source set for this session only |
| Start recording · Microphone + system audio (开始录音 · 麦克风 + 电脑音频) | Starts recording with a mixed source for this session only |
| Start recording · System audio only (开始录音 · 仅电脑音频) | Starts recording from system audio for this session only |
| Dictation · Start/finish (听写 · 开始/结束) | Starts or finishes quick voice capture |
| Dictation · Copy last raw transcript (听写 · 复制上次转写原文) | Recalls the raw transcript of the most recent dictation |
| Import an existing audio file: transcribe + polish (导入已有音频文件转写+润色) | Opens the audio import picker |
| Import existing text / structure a Markdown file (导入已有文本 / MD 结构化整理) | Sends an existing text transcript to the AI |
| AI polish: selection or whole note (AI 润色:当前选区或整篇) | Processes the selection or whole note with the default template and replaces it in place |
| Reprocess current notes (apply YAML role mapping) (重新整理当前纪要(应用 yaml 角色映射)) | Re-runs processing in the original mode, applying the people mapping |
| Migrate older notes to the new frontmatter structure (迁移历史笔记到新 frontmatter 结构) | Upgrades the structure of notes from older versions |
| Scan watched folder (扫描监听文件夹) | Manually scans for and processes unprocessed audio |
| Open live notes panel (打开实时纪要面板) | Opens the sidebar workbench |
| Show/hide floating bubble (master switch) (显示/隐藏悬浮气泡(总开关)) | Toggles the floating bubble |
| Open the learning card wall (打开学习卡片瀑布墙) | Generates and opens the learning card aggregate view |
| Open the concept wall (打开概念墙) | Generates and opens the concept aggregate view |
| Open the task wall (打开待办墙) | Generates and opens the task aggregate view |
| Open the object overview (打开对象总览) | Generates and opens the all-object aggregate view |
| AI-generate an HTML report for the current notes (AI 生成当前纪要 HTML 报告) | Generates a visual HTML report |
| AI-generate a PDF report for the current notes (full page, no truncation) (AI 生成当前纪要 PDF 报告(整页不截断)) | Generates a single-page PDF report (desktop) |
| Open the pending queue (打开待处理队列) | Opens the processing progress panel |
| Retry all failed jobs (重试所有失败任务) | Retries every failed job in the queue |
| Clean up blank short recordings (清理空白短录音) | Cleans up notes and recordings no longer than 10 seconds with no usable transcript |
| Clean up expired segment audio cache (清理过期分段音频缓存) | Cleans up cached audio older than 7 days that the queue does not reference |
| Copy diagnostic report (复制诊断报告) | Copies the redacted diagnostic report to the clipboard |
| AI-scan the notes library for people suggestions (AI 扫描纪要库提取人员建议) | Scans past notes in bulk to produce people candidates |
| Check for updates (检查更新) | Manually checks for a new plugin version |
| Install available update (安装可用更新) | Runs the one-click incremental update |
Appendix B: Where data is stored
| Data | Default location |
|---|---|
| Plugin settings (including obfuscated API keys, API profiles, queued jobs, and update state) | .obsidian/plugins/lexvoice/data.json |
| Complete recordings (master recordings) | LexVoice/录音 |
| Transcription notes | LexVoice/转写纪要 |
| In-meeting materials (photos/attachments) | LexVoice/会议资料/<session timestamp>/ |
| Segment audio cache | LexVoice/.cache/segments (cleaned up automatically after 7 days) |
| HTML / PDF reports | LexVoice/HTML报告 |
| Email drafts and attachments | LexVoice/邮件草稿, LexVoice/邮件草稿/附件 |
| Diagnostic logs | LexVoice/诊断日志 (daily .jsonl files) |
| Vocabulary list | LexVoice/词汇表.md |
| People profiles / people library | LexVoice/人员, LexVoice/人员库.base |
| Learning cards / task cards | LexVoice/学习卡片, LexVoice/待办卡片 |
| Aggregate views | LexVoice/视图 |
| Update backups | .obsidian/plugins/lexvoice/.lexvoice-update-backups/<timestamp>/ (includes a data.json snapshot) |
Every path can be changed on the corresponding settings tab; changes affect new files only, and existing files are not migrated automatically. The plugin uses no cloud storage of any kind.
Appendix C: Privacy notes
- Where your data goes: recorded audio and transcribed text are sent to the transcription service and LLM service that you configure yourself (a cloud provider or a local service), and the scope of what is sent is determined by your configuration. The LexVoice plugin itself operates no servers and uploads nothing.
- People data: the default is "Privacy first", which sends nothing from the people library to any service. "Name hot words" mode sends names and common forms of address (at most 80) only after you explicitly authorize it, and can be revoked at any time. "Local enhancement" mode sends full people context only to local or LAN endpoints.
- Diagnostic logs: stored locally only and redacted as they are written (keys, paths, and body-text fields are masked); they contain no audio and no transcript body text. A diagnostic report only leaves your machine when you actively run "Copy diagnostic report".
- Key storage: API keys are stored obfuscated — not encrypted — in
data.jsoninside the vault; do not share or sync your vault folder with anyone you do not trust. - Local cleanup: every automatic and manual cleanup operation moves files to the system trash, so they can be recovered.
This manual was compiled from the LexVoice 2.0.0 source code. The plugin is under continuous development, so the settings page of the version you have installed is the authority on the exact interface and default values. If you find the documentation at odds with actual behavior, please file feedback at https://github.com/Lynn-x/LexVoice.