演讲者日记化mcp
接收声音文件pyannote.audio 对话框,您可以在此定义自定义格式。\ 软件包管理 uv 中所述修改相应参数的值。
主要规格
- 接收语音输入
speaker/start/end返回段 wav也接受以外输入ffmpeg转换为WAV- 在推论之前一定
16kHz mono WAV归一化 - GPU(
cuda/mps)优先使用,不可用时向CPU回退 - 长条语音在服务器内自动区块分割依次推论,1次请求返还合并结果
- 注意:由于信息块单位推理,可能会重新分配跨越信息块边界的说话人标签
- 工作目录限制(环境变量)
- 输入文件大小限制(环境变量,默认值256MiB)
事前要件
- Python 3.11+
uvffmpeg(PATH),模板名称将采用不同的格式- Hugging Face的访问令牌(
pyannote允许模型访问)
安装(uv)
uv sync环境变数
|变量名|必需|默认|说明| |---|---|---|---| | SDMCP_WORK_DIR 可选|当前目录|可读取输入文件的根目录| | SDMCP_MAX_FILE_SIZE_BYTES | 任意 | 268435456 (256MiB)|输入文件大小上限(bytes)| | SDMCP_HF_TOKEN |必需|无|用于获取pyannote模型的Hugging Face令牌| | SDMCP_PYANNOTE_MODEL | 任意 | pyannote/speaker-diarization-3.1 使用的pyannote模型 | SDMCP_CHUNK_DURATION_SECONDS | 任意 | 600 分割长语音的区块长度(秒)
环境变数设定例
export SDMCP_WORK_DIR=/absolute/path/to/audio
export SDMCP_MAX_FILE_SIZE_BYTES=268435456
export SDMCP_HF_TOKEN=hf_xxx
export SDMCP_PYANNOTE_MODEL=pyannote/speaker-diarization-3.1
export SDMCP_CHUNK_DURATION_SECONDS=600服务器启动
uv run speaker-diarization-mcp或:
uv run python -m speaker_diarization_mcp交付工具
diarize_audio
- 引数:
- file_path: str - 绝对路径或 SDMCP_WORK_DIR 相对路径 - num_speakers: int | null(任意) - 指定固定话人数(1 以上)。未指定时は自动推定
- 举动:
1. 验证路径是否位于工作目录下 1. 验证文件大小上限 1. 发出声音 16kHz mono WAV 归一化 1. 长条语音进行区块分割,在pyannote中依次进行说话者诊断 1. 对说话人段进行时间戳校正并合并 1. JSON 返却
响应示例
{
"input_file": "/absolute/path/to/audio/sample.mp3",
"device": "cuda",
"sample_rate_hz": 16000,
"channels": 1,
"segments": [
{ "speaker": "SPEAKER_00", "start": 0.21, "end": 2.94 },
{ "speaker": "SPEAKER_01", "start": 2.95, "end": 6.88 }
]
}错误时的代表示例
SDMCP_HF_TOKEN is required ...
- 未设置Hugging Face令牌
Input file must stay inside ...
- 指定允许目录之外的路径
Input file exceeds max size limit ...
- 超出大小限制
ffmpeg is required ...
- ffmpeg 未导入或PATH未设定
设计书
有关设计的详细信息 docs/design.md 来修改标记元素的显示属性。
