云知声API接入指南:语音识别与合成接口调用
云知声开放平台提供语音识别、语音合成等AI能力,接入流程可以概括为:注册开发者账号、创建应用拿到AppKey和AppSecret、按文档拼接请求参数并生成签名、发起HTTPS请求。
下面按实际调用顺序拆开讲,重点放在签名生成和请求验证上,因为新手卡住的地方大多在这里。
调用前需要准备什么
先在云知声开放平台完成开发者注册,进入控制台创建应用。
创建后重点记录三个值:AppKey、AppSecret、以及接口文档中标注的服务地址。
AppSecret只用于本地生成签名,不要写进前端代码或提交到公开仓库。
本地环境建议准备Python 3.7以上版本,并安装requests库:
pip install requests
调用前确认两件事:接口是否要求时间戳参数,以及签名算法是HMAC-SHA1还是MD5。
不同服务可能不同,以你控制台对应产品的接口文档为准,不要直接套用其他厂商的示例。
生成签名并调用接口
云知声部分语音接口采用HMAC-SHA1签名。
典型做法是把AppKey、时间戳等参数按文档规定拼接成待签名字符串,再用AppSecret做HMAC计算,最后Base64编码。
下面是一个通用骨架,实际参数名和拼接顺序需要替换成你所用接口文档的写法:
import base64
import hashlib
import hmac
import time
import requests
app_key = "你的AppKey"
app_secret = "你的AppSecret"
timestamp = str(int(time.time()))
# 按接口文档拼接待签名字符串
sign_str = app_key + timestamp
sign = base64.b64encode(
hmac.new(app_secret.encode(), sign_str.encode(), hashlib.sha1).digest()
).decode()
headers = {
"Content-Type": "application/json",
"X-App-Key": app_key,
"X-Timestamp": timestamp,
"X-Signature": sign
}
resp = requests.post("接口地址", headers=headers, json={"text": "测试文本"}, timeout=10)
print(resp.status_code)
print(resp.text)
发送请求后先看HTTP状态码。
返回200且响应体里包含业务数据,说明鉴权通过。
如果返回401或403,优先检查签名串拼接顺序、时间戳是否在有效期内、以及AppSecret是否复制完整。
容易踩坑的几个地方
时间戳过期:多数接口要求时间戳与服务器时间偏差在几分钟内。
服务器时间不准时,先同步时间再重试,别急着改代码。
签名串顺序写错:参数拼接顺序必须和文档完全一致,多一个空格或少一个分隔符都会导致签名不匹配。
建议把待签名字符串打印出来,和文档示例逐字符比对。
密钥泄露:AppSecret不要出现在前端、日志或Git历史中。
如果怀疑泄露,到控制台重置密钥并更新服务端配置。
请求体编码:语音合成类接口如果返回乱码,检查是否按文档要求传了音频格式参数,以及响应是否按二进制读取而不是当作文本解析。
怎么确认调用成功
验证分两层:先看HTTP状态码和业务错误码,再检查返回内容是否符合预期。
语音识别接口应返回识别文本字段,语音合成接口应返回可播放的音频数据。
建议第一次调用时把完整响应打印到日志,确认字段名和文档一致后再接入业务代码。
如果接口持续返回鉴权失败,用最小请求排查:只保留AppKey、时间戳和签名三个头,请求体传文档里的示例参数,排除业务参数干扰后再逐步加回。
这样能快速定位是签名问题还是参数问题。
云知声API使用教程的核心不在代码量,而在密钥管理和签名细节。
先把单个接口调通并记录下可用的请求格式,再批量接入其他语音能力会顺利很多。