php无法直接集成fathom说话人分离,只能通过http调用其api;需用multipart/form-data上传音频并传{"diarize":true},响应中speaker字段为字符串如"speaker_00",且音频须超5秒、有清晰说话人切换。

PHP 本身不支持说话人分离(Speaker Diarization),Fathom 也从未提供过 PHP SDK 或原生集成能力——所谓“PHP 集成 Fathom 说话人分离”是概念混淆,实际只能通过 HTTP 调用其 API 实现间接对接。
为什么不能直接在 PHP 里调用 Fathom 的说话人分离?
Fathom 是一家提供语音分析 SaaS 服务的公司,其说话人分离能力封装在云端 API 中(如 /v1/transcribe 带 diarize 参数),底层依赖 PyTorch、Whisper 变体和聚类模型,完全无法在 PHP 进程内加载或执行。
常见错误现象:Class 'Fathom\Diarizer' not found、extension_loaded('fathom') 返回 false、Composer 找不到 fathom/fathom-php 包——因为根本不存在官方 PHP 绑定。
- Fathom 官方只维护 Python SDK(
fathom-sdk)和 JavaScript(浏览器/Node)客户端 - PHP 没有兼容的音频特征提取库(如
librosa)、无法做 VAD 或嵌入向量计算 - 强行用
exec('python -m fathom ...')调用会因环境隔离、路径、权限失败,且无法流式处理长音频
如何用 PHP 正确调用 Fathom 实现说话人分离?
唯一可行路径:PHP 作为 HTTP 客户端,上传音频文件并解析返回的 JSON 结果。关键在于格式合规、字段对齐、错误兜底。
使用场景:需异步处理会议录音、客服对话等带多说话人的 MP3/WAV 文件,且后端为 PHP(如 Laravel、Symfony 项目)。
- 必须用
POST请求https://api.fathom.ai/v1/transcribe,Header 中携带Authorization: Bearer <your_api_key></your_api_key> - Body 必须是
multipart/form-data,音频文件字段名固定为file,额外参数用data字段传 JSON 字符串:{"diarize": true, "language": "zh"} - 不要尝试 base64 编码音频塞进 JSON body——Fathom API 不接受该格式,会返回
"error": "invalid file type" - 响应中说话人信息在
result.segments数组里,每个 segment 含speaker(如"SPEAKER_00")、start、end、text
curl -X POST "https://api.fathom.ai/v1/transcribe" \
-H "Authorization: Bearer sk-xxx" \
-F "file=@meeting.mp3" \
-F 'data={"diarize":true,"language":"zh"}'
PHP 中容易漏掉的兼容性细节
不是所有 PHP 环境都能顺利发请求,尤其企业内网或旧版本服务器,几个硬性条件必须检查。
-
allow_url_fopen必须为 On,否则file_get_contents("https://...")直接失败 - cURL 需启用
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false)(仅测试环境),生产环境要确保系统 CA 证书更新,否则报SSL certificate problem: unable to get local issuer certificate - 音频文件大小不能超 Fathom 当前限制(默认 100MB),PHP 的
upload_max_filesize和post_max_size必须同步调大,否则$_FILES为空 - 返回的
speaker字段值是字符串,不是数字索引,PHP 里别写成$seg['speaker'] === 0,应为$seg['speaker'] === 'SPEAKER_00'
真正卡住人的地方从来不是代码怎么写,而是没看清 Fathom 的 API 文档里那句小字:“Diarization requires audio longer than 5 seconds and with clear speaker turns.” —— 静音太长、单人独白、重叠语音,都会让 speaker 字段缺失或全为 None。测之前先用官方 Web 控制台跑一遍原始音频,再动 PHP。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











