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
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务