说话人分离与声纹 ID
OpenASR 把说话人分离与声纹 ID视为两个相关但独立的阶段:
- 说话人分离回答一段录音里“谁在什么时候说话”。陌生人会得到本次录音内的匿名标签,如
SPEAKER_00、SPEAKER_01。 - 声纹 ID 把这些说话人轨道与用户主动登记的人进行匹配,让后续转写显示姓名。它只用于转写标注,不是身份认证或法律意义上的身份核验。
两个阶段默认都在本机运行。
Desktop:所有本地文件模型共用一个开关
Section titled “Desktop:所有本地文件模型共用一个开关”文件转写里的声纹 ID开关支持所有本地 ASR 模型。应用会自行选择说话人来源,不要求用户理解或切换两套流程:
- 自带说话人轨道的模型(目前为 MOSS)保留模型自己的分离结果。
- 其他 ASR 模型统一使用 OpenASR 的外置说话人分离管线。
- ReDimNet2-B6 提供统一的说话人嵌入空间,供声纹登记、跨录音匹配和外置分离使用。
没有提前登记任何人也可以开启声纹 ID。转写仍会得到匿名说话人;在转写完成页可以把匿名说话人关联到已有身份或新建身份,后续录音即可复用姓名。
Desktop 只在本地文件转写中提供声纹 ID。听写、实时字幕和远程计算不会显示或启用声纹 ID。
外置说话人分离管线
Section titled “外置说话人分离管线”对于没有原生说话人轨道的 ASR,OpenASR 在识别器外组合四个独立组件:
- 内置 FireRedVAD 检出语音区间。
pyannote segmentation-3.0检测说话人活动、切换与重叠。- ReDimNet2-B6 提取说话人嵌入。
- 自动聚类与重叠重建把说话人映射回 ASR 时间线。
segmentation-3.0 是宽松许可证下的基线,也是默认提供方。OpenASR 还预留了固定为 FP16 DiariZen Large-s80-md-v2 包的可选增强路径,但它目前尚未在公共目录提供下载。若以后提供,其 CC BY-NC 4.0 权重必须由用户另行明确确认“仅限个人、非商业用途”;OpenASR 不会自动下载。用户明确安装并启用后,“自动”策略会自动选用它。用户主动停用或移除后才会切回 segmentation-3.0;如果已安装的 DiariZen 包损坏,声纹 ID 会明确失败,不会静默切换提供方。
这条管线与所选 ASR 模型解耦。模型市场中的“内置说话人分离”只表示模型能在一次推理中原生输出说话人轨道,不代表只有这些模型才能使用声纹 ID。
CLI 匿名说话人分离
Section titled “CLI 匿名说话人分离”开源内核通过 --diarize 提供匿名说话人分离:
openasr transcribe --diarize recording.wavopenasr live --diarize离线文件转写在已知人数时可强制指定聚类数量:
openasr transcribe --diarize --speakers 3 recording.wav--speakers 依赖 --diarize,且不能用于 live。所需能力包必须已经安装,或由用户明确批准安装。使用 --offline、缺少所需能力包或提供方不可用时,OpenASR 会直接失败,不会伪造说话人标签。
CLI 不存在 openasr speaker enroll 命令。跨录音身份管理由本地服务器的仅管理员声纹 ID API 提供,桌面端则使用完整的产品流程。
每份登记样本必须包含至少 10 秒有效语音。Desktop 和 from-audio API 路由会通过本地统一转换路径接收常见源音频格式;源文件只作临时处理。
OpenASR 将嵌入向量、授权记录和身份元数据保存在 SQLite:$OPENASR_HOME/diarize/voice-id.db。可通过 OPENASR_VOICE_ID_DB 覆盖路径。声纹 ID 数据库不会持久化原始登记音频。
只有语音证据达到匹配门槛时,已登记的人才会被显示为姓名;证据不足时安全保留匿名 SPEAKER_NN 标签。
服务端 API
Section titled “服务端 API”启用配对认证时,下列路由全部仅限管理员调用。远程计算设备凭证不能读取或修改管理员的声纹 ID 数据。
| 方法 | 路径 | 用途 |
|---|---|---|
GET、POST | /v1/voice-id/persons | 列出人员,或用已准备片段登记人员 |
GET、PATCH、DELETE | /v1/voice-id/persons/{person_id} | 读取、编辑或删除人员 |
POST | /v1/voice-id/persons/from-audio | 从常见源音频登记人员 |
POST | /v1/voice-id/persons/{person_id}/samples | 添加已准备样本 |
POST | /v1/voice-id/persons/{person_id}/samples/from-audio | 从常见源音频添加样本 |
POST | /v1/voice-id/persons/{person_id}/consent/revoke | 撤回授权并停止匹配 |
PATCH、DELETE | /v1/voice-id/samples/{sample_id} | 重命名或删除一份样本 |
POST | /v1/voice-id/export | 导出声纹 ID 元数据 |
PUT | /v1/history/{id}/speaker-assignments | 保存人工复核后的说话人归属 |
完整路由表和鉴权模型见本地服务 API;CLI 的独立匿名实时分离见实时转写。
隐私与许可证边界
Section titled “隐私与许可证边界”- 处理与匹配默认在本机完成,无遥测。
- 声纹 ID 数据库不保存原始登记音频。
- 模型下载必须明确发起,并通过签名目录完成。
- DiariZen 的非商业许可证边界与默认的宽松许可证
segmentation-3.0相互独立。 - 声纹 ID 不得用作登录、门禁、访问控制或身份凭证。