如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
LinTO-diarization 是 LinTO 平台的说话人分轨服务,具备猜测说话人数以及在提供目标说话人语音样本时识别特定说话人的能力。该服务可作为独立分轨服务部署,也可作为微服务集成到分布式系统中。
/opt/audio)存储音频文件,避免大文件通过消息代理传输若启用说话人识别功能,需部署 Qdrant 向量数据库存储说话人嵌入向量:
bashdocker run \ -p 6333:6333 \ # Qdrant 默认端口 -v ./qdrant_storage:/qdrant/storage:z \ qdrant/qdrant
5.1.1 构建镜像
bashgit clone https://github.com/linto-ai/linto-diarization.git cd linto-diarization docker build . -t linto-diarization-pyannote:latest -f pyannote/Dockerfile
5.1.2 拉取镜像
bashdocker pull lintoai/linto-diarization-pyannote
通过 HTTP API 提供独立分轨服务。
5.2.1 配置 .env 文件
参考 https://github.com/linto-ai/linto-diarization/blob/master/pyannote/.envdefault 创建 .env 文件,配置参数见 6. 配置参数说明。
5.2.2 运行容器
bashdocker run --rm \ -v <宿主机共享文件夹路径>:/opt/audio \ # 挂载共享音频文件夹 -p <宿主机端口>:80 \ # 映射容器 80 端口到宿主机(如 8080:80) --env-file .env \ # 加载环境变量 # 启用 GPU(如有) --gpus all \ # 可选,启用所有 GPU linto-diarization-pyannote:latest
5.2.3 启用说话人识别
需挂载说话人语音样本文件夹(样本需按说话人名称命名文件/文件夹):
bashdocker run ... -v </path/to/speaker/samples>:/opt/speaker_samples # 或自定义路径(通过 SPEAKER_SAMPLES_FOLDER 指定)
若需复用 Qdrant 现有向量集合,设置环境变量 QDRANT_RECREATE_COLLECTION=false。
作为微服务部署,通过 Celery 监听消息代理中的分轨任务。
5.3.1 前置条件
SERVICES_BROKER 配置5.3.2 配置 .env 文件
基础参数同 HTTP 模式,额外添加微服务特有参数(见 6. 配置参数说明)。
5.3.3 启动容器(docker-compose)
创建 docker-compose.yml:
yamlversion: '3.7' services: diarization-service: image: linto-diarization-pyannote:latest volumes: - /path/to/shared/folder:/opt/audio # 共享音频文件夹 env_file: .env # 加载环境变量 deploy: replicas: 1 # 根据需求调整副本数 networks: - your-net # 连接至微服务网络 networks: your-net: external: true # 使用现有网络
启动服务:
bashdocker stack deploy --resolve-image always --compose-file docker-compose.yml your_stack
| 变量名 | 描述 | 示例值 |
|---|---|---|
SERVING_MODE | 部署模式(必填):http(独立服务)或 task(微服务) | http 或 task |
CONCURRENCY | 主工作进程外的额外工作进程数 | 0 | 1 | 2 |
DEVICE | 嵌入模型运行设备(默认:优先 GPU,否则 CPU) | cpu | cuda | cuda:0 |
DEVICE_CLUSTERING | 聚类模型运行设备(默认同 DEVICE) | cpu | cuda |
DEVICE_IDENTIFICATION | 说话人识别模型运行设备(默认同 DEVICE) | cpu | cuda |
NUM_THREADS | CPU 最大线程数 | 4 |
CUDA_VISIBLE_DEVICES | GPU 设备索引(多 GPU 时指定,需配合 --gpus 参数) | 0 | 1,2 |
SPEAKER_SAMPLES_FOLDER | 说话人语音样本文件夹路径(默认:/opt/speaker_samples) | /path/to/samples |
SPEAKER_PRECOMPUTED_FOLDER | 预计算嵌入向量存储路径(默认:/opt/speaker_precomputed) | /path/to/precomputed |
QDRANT_HOST | Qdrant 服务地址(说话人识别时必填) | localhost |
QDRANT_PORT | Qdrant 服务端口(默认 6333) | 6333 |
QDRANT_COLLECTION | Qdrant 向量集合名称(默认 speaker_embeddings) | my_collection |
QDRANT_RECREATE_COLLECTION | 是否重建 Qdrant 集合(默认 true,复用集合时设为 false) | true | false |
| 变量名 | 描述 | 示例值 |
|---|---|---|
SERVICES_BROKER | 消息代理地址(如 Redis) | redis://my_redis_broker:6379 |
BROKER_PASS | 消息代理密码(可选) | my_password |
QUEUE_NAME | 任务队列名称(默认自动生成) | diarization_queue |
SERVICE_NAME | 服务名称 | diarization-ml |
LANGUAGE | BCP-47 语言代码 | en-US | *(多语言) |
MODEL_INFO | 模型描述信息 | Multilingual diarization model |
7.1.1 健康检查 /healthcheck
"1"(服务正常)7.1.2 分轨接口 /diarization
方法:POST
请求参数:
file:WAV 音频文件(必填)speaker_count:固定说话人数(可选,整数,自动聚类时留空)max_speaker:最大说话人数(可选,整数,当 speaker_count 未指定时生效)speaker_names:目标说话人名称(可选,仅在提供语音样本时生效):
"":禁用识别"*":识别所有说话人| 分隔字符串:指定说话人列表(如 ["spk1","spk2"] 或 "spk1|spk2")响应示例(application/json):
json{ "speakers": [ {"spk_id": "spk5", "duration": 2.2, "nbr_seg": 1} ], "segments": [ {"seg_id": 1, "spk_id": "spk5", "seg_begin": 0.0, "seg_end": 2.2} ] }
7.1.3 API 文档 /docs
通过消息代理(如 Redis)提交分轨任务,参数同 HTTP API,区别在于 file 为共享文件夹中的相对路径。
任务参数
file:共享文件夹中音频文件的相对路径(字符串,必填)speaker_count、max_speaker、speaker_names:同 HTTP API(可选)响应格式
同 /diarization 接口响应(JSON 结构)。
bashcurl -X POST "http://<服务地址>:<端口>/diarization" \ -H "accept: application/json" \ -H "Content-Type: multipart/form-data" \ -F "file=@test.wav;type=audio/x-wav" \ -F "speaker_count=2"
本项目基于 AGPLv3 许可证开源(详见 https://github.com/linto-ai/linto-diarization/blob/master/LICENSE%EF%BC%89%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务