十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

anarlog 1.0.37 版本解析:说话人重分配、Sonoma 转录修复与本地笔记上下文的可靠性改进

anarlog 1.0.37 版本解析:说话人重分配、Sonoma 转录修复与本地笔记上下文的可靠性改进 anarlog 1.0.37 版本解析说话人重分配、Sonoma 转录修复与本地笔记上下文的可靠性改进【免费下载链接】anarlogOpen source Granola AI Alternative项目地址: https://gitcode.com/GitHub_Trending/hy/anarlog本文基于 anarlog开源 Granola AI 替代方案仓库中的 1.0.37 版本更新说明packages/changelog/content/1.0.37.md围绕 Transcripts、Recording、Notes、Chat 四个模块的系统性可靠性改进展开说话人标签可从参与者/联系人重新分配并随片段漂移保持稳定、Soniqo 转录在 macOS Sonoma 上恢复可用、时间线笔记创建与图片复制行为修正、聊天获得本地笔记上下文能力。读完本文你将理解这些改进背后的实现机制、相关源码位置以及它们如何共同提升会议转录工作流的可用性。版本概览1.0.37 发布于 2026-06-02frontmatter 中的官方摘要为Speaker assignment, local note context for chat, Sonoma transcription, and timeline note creation are more reliable.说话人分配、聊天的本地笔记上下文、Sonoma 转录与时间线笔记创建更加可靠。这是一次以稳定性与可靠性为核心的版本迭代四大模块各有明确改进模块核心改进面向问题Transcripts说话人标签可重分配且分配在片段移位/提示乱序时保持稳定转写后说话人标注修正繁琐、已有标注易丢失RecordingSoniqo 转录恢复 macOS Sonoma 支持会议自动停止更可靠系统升级后转录失效、残留进程导致会话未停止Notes时间线新建笔记立即置顶复制保留 Markdown 图片引用联系人含电话号码笔记组织与内容搬运效率Chat笔记可拖入聊天、本地笔记可读可搜、Escape 关闭不丢上下文聊天缺乏会议笔记上下文、误操作丢失位置下文按模块逐一展开并引入仓库源码佐证实现细节。Transcripts说话人标签重分配与分配稳定性从转录界面直接重分配说话人1.0.37 起转录中的说话人标签speaker label可以直接从转录文本上重新分配到三类对象会话参与者session participants正在参加会议的人已有联系人existing contacts通讯录中已存在的人新联系人new contact直接创建新联系人并绑定。这一交互背后对应前端 apps/desktop/src/stt/utils.ts 中的upsertSpeakerAssignment函数。它支持两种分配作用域mode: segment仅作用于当前片段内的指定词word_ids生成user_speaker_assignment:segment类型的 hintmode: all作用于整个声道 说话人索引channelspeaker_index生成user_speaker_assignment类型 hint等效于这位说话人全程改名。// apps/desktop/src/stt/utils.ts 中分配 hint 的数据结构示例 { id: ${anchorWordId}:user_speaker_assignment[:segment], word_id: anchorWordId, type: user_speaker_assignment, value: JSON.stringify( // segment 模式{ human_id, scope: segment, word_ids, extend_to_adjacent } // all 模式{ human_id, scope: speaker, channel, speaker_index } ), }分配结果通过transcripts表的speaker_hints单元格持久化见parseTranscriptHints/updateTranscriptHints因此刷新界面或重启应用后标注不会丢失。从源码结构看hint 体系包含三种类型provider_speaker_index转写提供商给出的原始说话人索引、automatic_speaker_assignment自动分配的标签与user_speaker_assignment用户手动分配用户的手动分配优先级最高。片段移位时分配保持稳定改版本解决了此前的一个痛点当转录片段发生移位segments shift或说话人提示speaker hints以不同顺序到达时已保存的说话人分配容易失效。实现上由reconcileSegmentSpeakerAssignmentHint负责调和对账每当新一批词new_words替换旧词replaced_ids时它会基于时间范围getWordRange与说话人 segment keychannelspeaker_index把旧分配中引用的word_ids重新映射到新词上若旧 anchor 词被替换则以对账后的第一个词作为新 anchor若extend_to_adjacent为真会向时间相邻且属于同一说话人的词双向扩展受MAX_SEGMENT_GAP_MS 3000毫秒的间隙约束见canMergeSegmentWords若对账后找不到任何存续词该 hint 才会被移除。同样的稳定性逻辑也存在于 Rust 侧。实时转录状态机 crates/listener-core/src/live_transcript/segments.rs 中的RenderedSegmentState维护speaker_assignments与channel_assignments两份身份映射并提供update_identities方法替换身份输入后立即重新渲染保留窗口内的词使已显示在屏幕上的片段马上采用新名字而无需等待下一次流式响应。// crates/listener-core/src/live_transcript/segments.rs /// Replaces the identity inputs and re-renders the retained window so /// segments already on screen pick up the new names without waiting for /// the next stream response. pub(super) fn update_identities( mut self, channel_assignments: VecIdentityAssignment, speaker_assignments: VecIdentityAssignment, segment_options: SegmentBuilderOptions, ) - OptionLiveTranscriptSegmentDelta仓库同文件的测试identity_update_relabels_rendered_segments_and_keeps_partials验证了该行为为 speaker 0 分配 artem 后已渲染片段立即被重命名为 hello there旧的未命名片段被移除且后续新词继续沿用 artem 标签identity_update_without_changes_emits_nothing则保证无变化时不产生冗余重渲染。此外渲染窗口有明确的资源边界MAX_RENDERED_WORDS 4_096、MAX_RENDERED_TEXT_BYTES 64 KiB、MAX_RENDERED_WINDOW_MS 30 分钟保证长时间会议的实时面板内存与流量可控见同文件的prune_rendered_words与bounded_partials。实时转录面板间距一致性本版本还统一了实时转录面板live transcript panel在折叠与展开两种状态下的间距表现避免切换状态时布局跳动。该调整属于纯 UI 一致性修复与上文的分段渲染逻辑配合提升长时间会议中的阅读体验。RecordingSoniqo 转录与会议自动停止macOS Sonoma 上 Soniqo 转录恢复1.0.37 修复了Soniqo 转录在 macOS Sonoma 系统上无法工作的问题。Soniqo 是 anarlog 内置的本地语音识别后端从 crates/transcribe-soniqo/swift-lib/src/lib.swift 看它基于 Swift CoreML 运行本地模型采样率为 16 kHz模型类型包括soniqo-parakeet-streamingParakeet-EOU-120M-CoreML-INT8支持流式soniqo-parakeet-batchParakeet-TDT-v3-CoreML-INT8-30s批量分块 2029.5 秒soniqo-omnilingualOmnilingual-ASR-CTC-300M-CoreML-INT8-10s分块 35 秒soniqo-qwen3-small/soniqo-qwen3-largeQwen3-ASR 0.6B / 1.7BMLX 量化。并集成了Community1DiarizationPipeline用于说话人分离。作为本地转录方案它不依赖云端对隐私敏感场景尤为重要此次修复针对 Sonoma 系统上的兼容性问题crates/transcribe-soniqo 目录下包含构建脚本、Swift 桥接库与错误定义确保升级 macOS 后本地转录能力不再失效。会议自动停止补全残留进程场景本版本还补上了自动停止auto-stop逻辑中的一个边界情况会议应用已关闭、但麦克风辅助microphone helper进程仍在运行时会话此前可能无法正确结束。修复后自动停止检测会覆盖该场景避免会议结束了但还在录音/转写的隐私与资源浪费问题。Notes时间线笔记、图片复制与联系人电话时间线模式新建笔记立即置顶在时间线Timeline模式下新创建的笔记此前可能出现在Create new note卡片之后1.0.37 修正为新建笔记在创建后立即排列在 Create new note 卡片之前使继续记录新内容的入口始终位于最新笔记之后时间线阅读顺序更自然。复制笔记内容保留图片为 Markdown 引用复制笔记内容时被选中的图片现在会以 Markdown 图片引用...形式保留而不是丢失或退化为纯文本路径。这保证了笔记在跨应用粘贴、迁移或导出为 Markdown 文件时图片引用仍然可解析、可复用。联系人纳入电话号码联系人Contacts体系在三个入口同步纳入了电话号码字段联系人详情页details展示联系人搜索search可命中号码参与者匹配participant matching可将通话/会议中的参与者与联系人的电话号码关联。从 apps/desktop/src/contacts/queries.ts 等前端查询模块可以继续追踪联系人数据的读取与匹配实现。Chat本地笔记上下文与更自然的交互笔记拖入聊天作为上下文1.0.37 支持将笔记直接拖拽drag drop进聊天窗口作为对话上下文注入。这解决了此前聊天无法感知会议笔记的割裂你在聊天中询问的问题可以明确引用某条笔记的内容作为背景。聊天可读取与搜索本地文件笔记更进一步聊天具备**读取并搜索本地文件型笔记file-backed notes**的能力——当对话需要更多上下文时聊天会自动从本地笔记文件中检索相关片段。相关实现位于 apps/desktop/src/chat/tools/note-files.ts配套测试 note-files.test.ts从命名与目录结构可以推断它是聊天工具chat tools体系的一员与其他工具如 search-meetings.ts、web-search.ts 并列。这意味着查询笔记内容是聊天可主动调用的能力而非仅靠用户手动粘贴。Escape 关闭聊天不丢位置最后一项交互修正按下 Escape 关闭聊天面板后当前所在笔记保持不变。此前关闭聊天可能触发导航回到其他笔记打断阅读流修复后 Escape 只负责收起聊天不影响正在浏览的笔记上下文。小结1.0.37 的可靠性主线纵观整个版本四条改进线共同指向同一目标——让说话人标注—本地转录—笔记组织—聊天问答这条会议工作流在真实使用中更少出错、更可依赖Transcripts说话人重分配入口下沉到转录界面本身且通过前端 hint 对账reconcileSegmentSpeakerAssignmentHint与后端分段重渲染update_identities双重机制保证分配在流式纠错与片段漂移下依然稳定Recording本地 SoniqoCoreML转录恢复 Sonoma 支持自动停止补全麦克风辅助进程残留场景Notes时间线创建顺序、图片 Markdown 引用、联系人电话号码三项细节让笔记组织与复用更顺手Chat拖拽、本地笔记检索与 Escape 行为让聊天真正融入笔记工作流。如需查阅全部历史版本记录可浏览 packages/changelog/content 目录下的各版本文件仓库还维护了一份 nightly.md 用于跟踪每日构建的变更。【免费下载链接】anarlogOpen source Granola AI Alternative项目地址: https://gitcode.com/GitHub_Trending/hy/anarlog创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表