调用腾讯云智聆口语评测需使用ASR V20190614 SDK,显式配置Region(如ap-guangzhou)、密钥权限(QcloudASRFullAccess或asr:SpeechEvaluation)、httpProfile endpoint为asr.tencentcloudapi.com;音频须为Base64编码的PCM(单声道/16bit/16kHz),Language仅支持zh/en,Mode为words/sentences时必须传Text;Accuracy为综合得分,定位问题需解析DetailResult中word/sentence的MatchTag与pronunciation;长音频建议上传COS后通过Url调用,避免PHP内存与超时限制。

调用 TencentCloud\Asr\V20190614\Client 前必须配置好密钥和区域
智聆口语评测(SpeechEvaluation)不是独立 SDK,它属于腾讯云 ASR 服务的子能力,得走 V20190614 版本的 ASR 接口。很多人卡在第一步:用对了 SDK,但没传 Region 或密钥权限不足,直接报 InvalidParameter.Region 或 UnauthorizedOperation。
实操建议:
- 密钥必须有
QcloudASRFullAccess或至少包含asr:SpeechEvaluation的自定义策略 -
Region必须显式指定,比如ap-guangzhou—— 即使你用的是广州地域,不写也会默认走ap-beijing导致鉴权失败 - SDK 初始化时别漏掉
profile配置,尤其是httpProfile的endpoint要设为asr.tencentcloudapi.com,不是speech.tencentcloudapi.com(后者是旧版,已下线)
SpeechEvaluationRequest 的关键字段不能填错类型或空值
口语评测接口对输入格式极其敏感:音频必须是 Base64 编码的 PCM(单声道、16bit、16kHz),Language 和 Mode 必须严格匹配文档值,否则返回 InvalidParameterValue 或静默失败(返回空结果)。
常见错误现象:
立即学习“PHP免费学习笔记(深入)”;
- 传了 MP3 文件 Base64 后直接调用 —— 接口不转码,只认原始 PCM,会返回
AudioDataIllegal -
Language写成zh-CN或chinese—— 正确值只有zh(中文)、en(英文) -
Mode用words却没传Text—— 全句模式(complete)可不传Text,但单词/句子模式必须传,否则评分全为 0
示例片段(关键字段):
腾讯云通用票据识别高级版(VatInvoiceOCR)接口调用技能。当用户需要识别发票图片中增值税专用发票、增值税普通发票、增值税电子专票、增值税电子普票、电子发票(普通/增值税专用)的全字段信息时,应使用此技能。支持识别发票图片中的发票代码、发票号码、开票日期、合计金额、校验码、税率、合计税额、价税合计、购买方...
$request = new SpeechEvaluationRequest();
$request->AudioData = base64_encode(file_get_contents('audio.pcm'));
$request->Language = 'zh';
$request->Mode = 'complete'; // 或 'words' / 'sentences'
$request->VoiceType = 1; // 1=男生,2=女生,不填默认1,但建议显式指定
返回结果里 DetailResult 和 Accuracy 的含义容易被误解
评测返回的 Accuracy 是整体得分(0–100),但它不等于“发音准确率”,而是模型对语音与参考文本在音素、语调、流利度等维度的加权综合分;真正定位问题得看 DetailResult 数组里的每个 word 或 sentence 对象。
使用场景提醒:
- 想标出用户哪个字读错了?必须解析
DetailResult中每个word的Accuracy和MatchTag(success/insert/delete/substitute) -
pronunciation字段只在Mode=words且传了Text时才稳定返回,complete模式下可能为空 - 注意
DetailResult是按时间顺序排列的,但不一定和Text字符一一对应——尤其遇到吞音、连读时,模型可能合并或拆分音节
PHP 处理长音频或高并发时要注意内存和超时
智聆接口对单次请求音频时长限制为 60 秒,但 PHP 默认 max_execution_time=30,加上网络上传耗时,很容易触发 504 Gateway Timeout;Base64 编码后体积膨胀约 33%,1 分钟 PCM(16kHz×16bit×60s)原始约 1.9MB,编码后超 2.5MB,memory_limit 不够会直接 Fatal error。
实操建议:
- 上传前用
fopen(..., 'rb')+stream_get_contents()替代file_get_contents(),避免一次性加载大文件到内存 - 设置
ini_set('max_execution_time', 120)和ini_set('memory_limit', '256M')(仅限 CLI 或可控入口) - 别在 Web 请求中同步调用 —— 更稳妥的做法是上传音频到 COS,然后用
Url字段发起评测(SpeechEvaluationRequest支持传 COS URL),把耗时操作移出 PHP 执行周期
复杂点在于:音频预处理(降噪、裁静音、转 PCM)和评测结果归因(把模型返回的音素级偏差映射回用户原输入文本)这两步,SDK 完全不碰,得自己补。


















