Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,19 +81,19 @@ systemctl --user status voice-input.service voice-input-hud.service

## Safe support diagnostics

Use `voice-input diagnostics [--format text|json]` as the canonical output for support reports. Schema 4 contains bounded stage statuses and failure categories; aggregate streaming delivery/result timings and counts (ready, partial, nonempty partial, segment-final, audio packets and sent duration, queue delays, finish, task completion/failure, and finalization); bounded Audio3 timestamp aggregates (timestamp-bearing results, accepted timed units, truncated units, results with rejected timestamp metadata, and the latest event-reported valid numeric audio-relative end in milliseconds); the Audio3 native-pass mode/decision/reason; and a safe configuration summary for one session only: the active or most recently completed session. Each normal result contributes at most one rejected-timestamp-metadata count when its timestamp block contains any invalid scalar, relationship, words shape, or processed unit; truncation alone contributes zero. The latest valid end is overwritten by a later event that supplies one, with no cross-event monotonicity assumption. Timestamp diagnostics never include sentence IDs, timed-unit text or punctuation, transcripts, or provider messages. The safe summary reports the Audio3 endpoint mode and region, only whether a Workspace ID is configured, whether language hints and heartbeat are enabled, the effective maximum sentence silence and semantic-punctuation state after preset resolution, and the dynamic-vocabulary entry count. It never includes the Workspace ID, endpoint/host, model, key, or vocabulary terms. A failed provider task may include an optional strictly bounded provider error identifier. That session summary remains available after completion and is reset when the next recording starts. It contains no audio, credentials, endpoints, model names, provider messages, window/application data, prompt context, tooltips, session history, or normal recognized/refined transcript text.
Use `voice-input diagnostics [--format text|json]` as the canonical output for support reports. Schema 4 contains bounded stage statuses and failure categories; aggregate streaming delivery/result timings and counts (ready, partial, nonempty partial, segment-final, audio packets and sent duration, queue delays, finish, task completion/failure, and finalization); bounded Audio3 timestamp aggregates (timestamp-bearing results, accepted timed units, truncated units, results with rejected timestamp metadata, and the latest event-reported valid numeric audio-relative end in milliseconds); the Audio3 native-pass mode/decision/reason; and a safe configuration summary for one session only: the active or most recently completed session. Each normal result contributes at most one rejected-timestamp-metadata count when its timestamp block contains any invalid scalar, relationship, words shape, or processed unit; truncation alone contributes zero. The latest valid end is overwritten by a later event that supplies one, with no cross-event monotonicity assumption. Timestamp diagnostics never include sentence IDs, timed-unit text or punctuation, transcripts, or provider messages. The safe summary reports the Audio3 endpoint mode and region, whether language hints and heartbeat are enabled, the effective maximum sentence silence and semantic-punctuation state after preset resolution, and the dynamic-vocabulary entry count. It never includes route identifiers, endpoint/host values, model, key, or vocabulary terms. A failed provider task may include an optional strictly bounded provider error identifier. That session summary remains available after completion and is reset when the next recording starts. It contains no audio, credentials, endpoints, model names, provider messages, window/application data, prompt context, tooltips, session history, or normal recognized/refined transcript text.

Do not paste `voice-input status` output into reports, with or without `--extended`. Status output is intended for local UI integration and can include the current or most recent transcript and tooltip text.

## Experimental Qwen-Audio-3

Qwen-Audio-3 is available as an explicit experimental provider. It is disabled by default and is not offered by the stable setup wizard. The explicit experimental gate and setup-wizard omission remain intentional while the beta is prepared. To try it, open Settings, choose **Qwen-Audio-3 (experimental)**, acknowledge the experimental-provider warning, and save. The existing encrypted Alibaba credential is shared with this provider.

**Endpoint mode** defaults to **Regional**, with **Beijing** as the default region; **Singapore** is also selectable. In Regional mode, an empty **Workspace ID** uses Alibaba's reviewed legacy host for the selected region, while a nonempty value routes both Streaming and Native through that workspace's reviewed regional hostname. Workspace ID is treated as an opaque provider value. Because it occupies one hostname label, Voice Input enforces only the transport constraint of 1–63 ASCII letters, digits, or hyphens with no leading or trailing hyphen; this is not Alibaba business-ID validation. Voice Input does not add a workspace header, query field, or request-body field. **Custom** mode uses the configured raw Streaming and Native URLs exactly and ignores the dormant Workspace ID.
**Endpoint mode** defaults to **Regional**, with **Beijing** as the default region; **Singapore** is also selectable. Regional mode selects the fixed reviewed legacy Streaming and Native hosts for the chosen region. **Custom** mode uses the configured Streaming and Native URLs exactly, including path, port, and query bytes.

Migration is presence-aware. A configuration without `endpoint_mode` migrates to Regional Beijing only when both old URLs exactly equal the canonical Beijing pair, or to Regional Singapore only when both exactly equal the canonical Singapore pair. Either migration preserves an explicitly configured Workspace ID exactly; an absent or empty value remains empty. Mixed pairs, current workspace hosts, loopback endpoints, proxies, and any custom path, port, or query migrate to Custom with both URL strings preserved byte-for-byte; Voice Input never infers a Workspace ID from a host. An explicit endpoint mode takes precedence, and an explicit region takes precedence with Beijing as its missing-field default. Dormant raw URLs remain preserved.
Migration is presence-aware. A configuration without `endpoint_mode` migrates to Regional Beijing only when both old URLs exactly equal the canonical Beijing pair, or to Regional Singapore only when both exactly equal the canonical Singapore pair. Mixed pairs, noncanonical hosts, loopback endpoints, proxies, and any custom path, port, or query migrate to Custom with both URL strings preserved byte-for-byte. An explicit endpoint mode takes precedence, and an explicit region takes precedence with Beijing as its missing-field default. Dormant raw URLs remain preserved.

Alibaba API keys are region- and workspace-scoped. Changing either setting may require replacing the single encrypted Alibaba credential. Voice Input never probes another region/workspace and never migrates a key automatically. This phase intentionally does not add separate credentials per region. Singapore availability does not establish feature parity: each model, control combination, language/vocabulary scenario, and workspace route still requires authorized live validation.
Alibaba API keys are region-scoped. Changing the region may require replacing the encrypted Alibaba credential. Voice Input never probes another region and never migrates a key automatically. Singapore availability does not establish feature parity: each model, control combination, and language/vocabulary scenario still requires authorized live validation.

The streaming model supplies realtime text. **Language hints** and **streaming heartbeat** are independent opt-in settings and are disabled by default. Enabling language hints sends the existing language selection to Audio3: English uses `en`; Simplified and Traditional Chinese use `zh,en`; Japanese uses `ja,en`; and Korean uses `ko,en`. The extra English hint retains mixed-English recognition for Chinese, Japanese, and Korean; leaving the switch disabled preserves the provider's automatic detection. Enabling streaming heartbeat keeps long silent push-to-talk sessions alive while correctly formatted audio frames continue.

Expand Down
8 changes: 4 additions & 4 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,19 +81,19 @@ systemctl --user status voice-input.service voice-input-hud.service

## 安全的支持诊断信息

提交支持报告时,请使用 `voice-input diagnostics [--format text|json]` 作为标准诊断输出。Schema 4 只提供当前 session 或最近完成的 session,并使用固定字段记录各阶段状态和失败类别、流式投递与结果的汇总耗时和计数(ready、partial、非空 partial、segment-final、音频包及已发送音频时长、队列延迟、finish、任务完成或失败以及 finalization)、有明确数量上限的 Audio3 时间戳汇总数据(包含时间戳的结果数、接受的计时单元数、因超过上限而截断的单元数、时间戳元数据被拒绝的结果数,以及最近一个事件报告的有效音频相对结束毫秒数)、Audio3 原生最终处理的模式/决定/原因,以及安全的配置摘要。如果一个普通结果的时间戳块包含任何无效标量、关系、`words` 结构或已处理单元,该结果最多使“时间戳元数据被拒绝的结果数”增加 1;仅发生截断时不会增加该计数。如果后续事件提供有效结束时间,诊断信息会直接覆盖此前的值,不假设不同事件之间单调递增。时间戳诊断信息不会包含句子 ID、计时单元文本或标点、transcript 或提供商消息。安全摘要说明 Audio3 的端点模式和区域、是否配置了工作空间 ID、语言提示和 heartbeat 是否启用、解析预设后生效的最大句末静音时长和语义标点状态,以及动态词汇表的词条数量。它不会包含工作空间 ID、端点或主机、模型、key 或词条内容。提供商任务失败时,诊断信息可能包含一个可选且长度和字符范围受到严格限制的提供商错误标识符。完成后的摘要会保留到下一次录音开始,并在新录音开始时重置。输出不包含音频、凭据、端点、模型名称、提供商消息、窗口或应用信息、prompt context、tooltip、session 历史记录,也不包含正常的识别或整理后 transcript 文本。
提交支持报告时,请使用 `voice-input diagnostics [--format text|json]` 作为标准诊断输出。Schema 4 只提供当前 session 或最近完成的 session,并使用固定字段记录各阶段状态和失败类别、流式投递与结果的汇总耗时和计数(ready、partial、非空 partial、segment-final、音频包及已发送音频时长、队列延迟、finish、任务完成或失败以及 finalization)、有明确数量上限的 Audio3 时间戳汇总数据(包含时间戳的结果数、接受的计时单元数、因超过上限而截断的单元数、时间戳元数据被拒绝的结果数,以及最近一个事件报告的有效音频相对结束毫秒数)、Audio3 原生最终处理的模式/决定/原因,以及安全的配置摘要。如果一个普通结果的时间戳块包含任何无效标量、关系、`words` 结构或已处理单元,该结果最多使“时间戳元数据被拒绝的结果数”增加 1;仅发生截断时不会增加该计数。如果后续事件提供有效结束时间,诊断信息会直接覆盖此前的值,不假设不同事件之间单调递增。时间戳诊断信息不会包含句子 ID、计时单元文本或标点、transcript 或提供商消息。安全摘要说明 Audio3 的端点模式和区域、语言提示和 heartbeat 是否启用、解析预设后生效的最大句末静音时长和语义标点状态,以及动态词汇表的词条数量。它不会包含路由标识、端点或主机值、模型、key 或词条内容。提供商任务失败时,诊断信息可能包含一个可选且长度和字符范围受到严格限制的提供商错误标识符。完成后的摘要会保留到下一次录音开始,并在新录音开始时重置。输出不包含音频、凭据、端点、模型名称、提供商消息、窗口或应用信息、prompt context、tooltip、session 历史记录,也不包含正常的识别或整理后 transcript 文本。

请勿把 `voice-input status` 的输出粘贴到报告中,无论是否使用 `--extended`。状态输出用于本地 UI 集成,可能包含当前或最近一次 transcript 和 tooltip 文本。

## 实验性 Qwen-Audio-3

Qwen-Audio-3 目前作为需要明确启用的实验性提供商使用。该选项默认关闭,稳定安装向导也不会提供它。在 beta 准备期间,明确的实验功能开关以及安装向导不提供该选项都是有意保留的设计。如需试用,请打开 Settings,选择 **Qwen-Audio-3(实验性)**,确认实验功能警告后保存。该提供商与现有 Alibaba 实时识别共用同一份加密凭据。

**端点模式**默认使用**区域路由**,默认区域为**北京**,也可以选择**新加坡**。在区域路由模式下,**工作空间 ID** 留空时会使用所选区域经过审核的 Alibaba 旧版主机;填写该值后,流式请求和原生请求都会通过该工作空间对应且经过审核的区域主机名发送。程序把工作空间 ID 视为不透明的提供商值。因为该值会占用一个主机名 label,Voice Input 只验证传输约束:必须包含 1–63 个 ASCII 字母、数字或连字符,且首尾不能是连字符。这项检查不代表 Alibaba 的业务 ID 规则。Voice Input 不会添加工作空间 header、query 字段或请求正文(request body)字段。**自定义**模式会原样使用已配置的流式 URL 和原生 URL,并忽略处于非活动状态的工作空间 ID
**端点模式**默认使用**区域路由**,默认区域为**北京**,也可以选择**新加坡**。区域路由会为所选区域使用固定且经过审核的旧版流式主机和原生主机。**自定义**模式会原样使用已配置的流式 URL 和原生 URL,包括路径、端口和 query 字节

迁移过程会区分字段是否存在。未包含 `endpoint_mode` 的配置只有在两个旧 URL 与北京标准组合完全相同时,才会迁移到北京区域路由;只有在两个 URL 与新加坡标准组合完全相同时,才会迁移到新加坡区域路由。两种迁移都会原样保留明确配置的工作空间 ID;该字段缺失或为空时仍保持为空。混合组合、当前工作空间主机、回环端点、代理,以及带有自定义路径、端口或 query 的配置都会迁移到自定义模式,并逐字节保留两个 URL 字符串;Voice Input 绝不会根据主机推断工作空间 ID。明确配置的端点模式具有优先级;明确配置的区域也具有优先级,缺少区域字段时默认使用北京。程序还会保留处于非活动状态的原始 URL。
迁移过程会区分字段是否存在。未包含 `endpoint_mode` 的配置只有在两个旧 URL 与北京标准组合完全相同时,才会迁移到北京区域路由;只有在两个 URL 与新加坡标准组合完全相同时,才会迁移到新加坡区域路由。混合组合、非标准主机、回环端点、代理,以及带有自定义路径、端口或 query 的配置都会迁移到自定义模式,并逐字节保留两个 URL 字符串。明确配置的端点模式具有优先级;明确配置的区域也具有优先级,缺少区域字段时默认使用北京。程序还会保留处于非活动状态的原始 URL。

Alibaba API key 受区域和工作空间范围约束。更改其中任何一项后,用户可能需要替换同一份加密 Alibaba 凭据。Voice Input 绝不会探测其他区域或工作空间,也不会自动迁移 key。本阶段有意不增加按区域分别保存的凭据。支持选择新加坡区域并不表示已经实现完整功能一致性;每个模型、控制项组合、语言或词汇表场景以及工作空间路由仍需完成经过授权的在线验证
Alibaba API key 受区域范围约束。更改区域后,用户可能需要替换加密的 Alibaba 凭据。Voice Input 绝不会探测其他区域,也不会自动迁移 key。支持选择新加坡区域并不表示已经实现完整功能一致性;每个模型、控制项组合以及语言或词汇表场景仍需完成经过授权的在线验证

流式模型负责提供实时文本。**语言提示**和**流式 heartbeat** 是两个相互独立的选用设置,默认均为关闭。启用语言提示后,程序会把现有语言选项发送给 Audio3:英语使用 `en`;简体中文和繁体中文使用 `zh,en`;日语使用 `ja,en`;韩语使用 `ko,en`。中文、日语和韩语的额外英语提示用于保留英语混合识别;关闭该开关会保留服务商的自动检测行为。启用流式 heartbeat 后,只要程序继续发送格式正确的音频帧,它就能使长时间静音的按键说话 session 保持连接。

Expand Down
1 change: 0 additions & 1 deletion assets/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ final_pass_enable_itn = false
experimental_enabled = false
endpoint_mode = "regional"
region = "beijing"
workspace_id = ""
endpoint = "wss://dashscope.aliyuncs.com/api-ws/v1/inference"
model = "qwen-audio-3.0-asr-flash-streaming"
language_hints_enabled = false
Expand Down
Loading