

新闻资讯
行业动态PHP切换TTS音色需正确设置第三方API的voice(阿里云)、per(百度)、VoiceType(腾讯云)等参数,拼写、参数位置、鉴权及SDK版本均影响生效。
PHP 本身不直接支持语音合成(TTS),所谓“调用听书插件”实际是调用第三方 TTS 服务的 HTTP API(如阿里云语音合成、百度语音、腾讯云 TTS 等),音色切换完全取决于该服务提供的 voice 或 speaker 参数,PHP

不同厂商的参数名、可用音色列表、鉴权方式完全不同,不能混用。常见情况:
voice,值如 zhitian_emo、xiaoyun、siyue
per(person),值如 111(度小美)、106(度博文)、112(度小宇)VoiceType,值如 2001(云希)、2002(云磊)、2004(云扬)model 或 speaker_id
以阿里云为例,音色由 voice 字段控制;若你传了 voice=zhiyan 却听到女声,大概率是拼写错误(正确应为 zhiyan 还是 zhiyan_emo?查官方文档)。常见错误:
voice 写成 voice_id 或 speaker
voice=xiaoguang,但阿里云当前不提供该音色voice 没放在 audio 对象里(阿里云要求嵌套在 config 下){
"text": "今天天气不错",
"config": {
"voice": "xiaoyun",
"format": "mp3",
"sample_rate": 16000
}
}
不要只看 HTTP 状态码 200 —— 它只表示请求被接收,不代表音色已切换。必须:
立即学习“PHP免费学习笔记(深入)”;
voice 值生成的音频时长和文件大小(同一文本下,不同音色可能有微小差异)X-Voice-Used header,腾讯云返回 voice_type 字段)旧版 SDK(如阿里云 aliyun-openapi-php-sdk v1.x)可能不支持新上线的音色(如 2025 年新增的 siyue),即使你在请求里写了也自动降级为默认音色。解决方法:
alibabacloud/pop-core + alibabacloud/alisydney-20190729)curl 请求,确保参数透传无损音色不是 PHP 的配置项,它藏在每次请求的 payload 里;漏掉一个下划线、少一个 header、签名过期,都会让切换失效——最稳妥的方式是先用 Postman 调通,再把 working request 复制进 PHP。