本文档旨在帮助用户在完成前置开通动作,准备好相关输入参数后,在很短的时间内完成 TMP 服务的注册,并生成可以直接运行的 python 版本 demo,尽量将用户的开发量降到最低
前置准备
在正式注册之前,请执行以下开通动作,准备相关参数
开通动作:
- 创建腾讯云账号 https://cloud.tencent.com ,并进行实名认证(如已有请忽略),确保账号有 200 元余额
- 到购买页进行音乐服务开通。https://buy.cloud.tencent.com/imusic
- 在 CAM( https://console.cloud.tencent.com/cam ),创建一个 AK/SK 密钥对(即一个访问方式为编程访问用户,不需要登录和任何用户权限),
- 创建 COS 桶,创建一个 COS(对象存储)桶( https://console.cloud.tencent.com/cos/bucket ),并在 COS 桶管理界面给已创建的仅编程用户授权 COS 桶的读写权限
准备参数
- operateUin: 腾讯云子用户的账号 ID
- cosConfig: 对象存储相关参数
- secretId: 存储桶的 secretId
- secretKey: 存储桶的 secretKey
- bucket: 存储桶的名称
- region: 存储桶的地区,例如"ap-guangzhou"
激活注册
在完成前置准备后,通过发起请求的方式,进行注册激活,预计等待 2 分钟左右
发起请求:
curl -X POST \
http://service-mqk0mc83-1257411467.bj.apigw.tencentcs.com/release/register \
-H 'Content-Type: application/json' \
-H 'Cache-control: no-cache' \
-d '{
"requestId": "test-regisiter-service",
"action": "Register",
"registerRequest": {
"operateUin": <operateUin>,
"userName": <customedName>,
"cosConfig": {
"secretId": <CosConfig.secretId>,
"secretKey": <CosConfig.secretKey>,
"bucket": <CosConfig.bucket>,
"region": <CosConfig.region>
}
}
}'
请求结果:
发起请求后,预计在 2 分钟之后返回响应
{
"requestId": "test-regisiter-service",
"registerInfo": {
"tmpContentId": <tmpContentId>,
"tmpSecretId": <tmpSecretId>,
"tmpSecretKey": <tmpSecretKey>,
"apiGateSecretId": <apiGateSecretId>,
"apiGateSecretKey": <apiGateSecretKey>,
"demoCosPath": "UIN_demo/run_musicBeat.py",
"usageDescription": "请从COS桶[CosConfig.bucket]中下载python版本demo文件[UIN_demo/run_musicBeat.py], 替换demo中的输入文件后,执行python run_musicBeat.py",
"message": "注册成功,感谢注册",
"createdAt": <createdAt>,
"updatedAt": <updatedAt>
}
}
参数说明
Request 参数说明
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
action | 是 | string | 公共参数,此处为 Register |
userName | 是 | string | 用户名称,必须为字母或数字,小于等于 19 位字符,不支持特殊符号 |
operateUin | 是 | string | 腾讯云账号ID, 填写开通音乐服务时使用的腾讯云账号ID。若使用主账号开通,则填主账号ID;若使用子账号开通,则填子账号ID |
- secretId | 是 | string | 用户 SecretId |
- secretKey | 是 | string | 用户 secretKey |
- bucket | 是 | string | 用户 cos 桶名称 |
- region | 是 | string | 用户 cos 桶地域 |
- domain | 否 | string | 用户 cos 桶域名 |
Response 参数说明
参数名称 | 类型 | 说明 |
---|---|---|
tmpContentId | string | cosConfig 在智能音乐平台中的注册 ID |
tmpSecretId | string | 智能音乐平台的身份识别 ID |
tmpSecretKey | string | 智能音乐平台的身份密钥 |
apiGateSecretId | string | API 网关的身份识别 ID |
apiGateSecretKey | string | API 网关的身份密钥 |
demoCosPath | string | 注册请求完成后,会将 python-demo 存在输入 Cos 上的该路径下 |
usageDescription | string | 使用描述 |
message | string | 提示性消息 |
运行验证
完成上述激活注册服务后,会在demoCosPath
目录下生成一个以音乐鼓点识别能力为例的 python 版本的可执行 demo,请在有网络的环境下,执行命令python run_musicBeat.py
python-demo 模版:
import requests
import datetime
import hashlib
import hmac
import base64
GMT_FORMAT = "%a, %d %b %Y %H:%M:%S GMT"
API_GATE_SOURCE = "uin_userName"
API_GATE_SECRET_ID = "apiSecretId"
API_GATE_SECRET_KEY = "apiSecretKey"
URL = "http://service-mqk0mc83-1257411467.bj.apigw.tencentcs.com/release/job"
TMP_CONTENT_ID = "tmpContentId"
TMP_SECRET_ID = "tmpSecretId"
TMP_SECRET_KEY = "tmpSecretKey"
def get_api_gate_signature(source, secret_id, secret_key):
date_time = datetime.datetime.utcnow().strftime(GMT_FORMAT)
auth = (
'hmac id="'
+ secret_id
+ '", algorithm="hmac-sha1", headers="date source", signature="'
)
signStr = "date: " + date_time + "\n" + "source: " + source
sign = hmac.new(secret_key.encode(), signStr.encode(), hashlib.sha1).digest()
sign = base64.b64encode(sign).decode()
sign = auth + sign + '"'
return sign, date_time, source
if __name__ == "__main__":
sign, date_time, source = get_api_gate_signature(
API_GATE_SOURCE, API_GATE_SECRET_ID, API_GATE_SECRET_KEY
)
headers = {
"Content-Type": "application/json",
"Authorization": sign,
"Date": date_time,
"Source": source,
}
request = {
"action": "CreateJob",
"secretId": TMP_SECRET_ID,
"secretKey": TMP_SECRET_KEY,
"createJobRequest": {
"customId": "musicBeat",
"inputs": [
{
"source": {
"contentId": TMP_CONTENT_ID,
"path": "file_path_to_root"
}
}
],
"outputs": [
{
"contentId": TMP_CONTENT_ID,
"destination": "/output/musicBeat",
"inputSelectors": [0],
"smartContentDescriptor": {
"musicBeat": {
"outputType": 4,
"drumType": 2,
"enlargeLevel": 3,
"splitNum": 3,
},
},
}
],
},
}
resp = requests.post(
url=URL,
headers=headers,
json=request,
)
print(resp.text)
获取任务信息
请参考对应 API 文档中的"获取任务信息"章节,查询任务执行状态