Feature Description
Submit a voice separation task.
Authorization Description
When using a sub-account, you need to add the ci:CreateMediaJobs permission to the action in the authorization policy. For ALL supported operation APIs of Cloud Infinite (CI), see CI action. When a sub-account uses an asynchronous processing API, it must be granted the cam:passrole permission. The asynchronous processing API performs COS read-write operations through cam roles. passrole permission is used for role passing. For details, refer to Cloud Access Management - Write Operation - passrole API. Service Activation
To use this feature, you need to bind a bucket and enable Cloud Infinite (CI) service in advance. To use this feature, you need to enable Smart Audio Service in advance via the console or API. Note:
After binding Cloud Infinite (CI), if you manually perform the unbind operation for a bucket, you will not be able to continue using this function.
Use Limits
When using this API, please confirm the related use limits. For details, see Use Limits. Fee Instructions
This API is a paid service, and the generated costs will be charged by Cloud Infinite. For billing details, see Smart Audio Fee. Request
Request sample
POST /jobs HTTP/1.1
Host: <BucketName-APPID>.ci.<Region>.myqcloud.com
Date: <GMT Date>
Authorization: <Auth String>
Content-Length: <length>
Content-Type: application/xml
<body>
Note:
Authorization: A request header that carries authentication information to verify the legitimacy of the request. For details, see the Request Signature document. Request header
Request body
The implementation of the request operation requires the following request body:
<Request>
<Tag>VoiceSeparate</Tag>
<Input>
<Object>input/demo.mp4</Object>
</Input>
<Operation>
<TemplateId>t1460606b9752148c4ab182f55163ba7cd</TemplateId>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/backgroud.${ext}</Object>
<AuObject>output/audio.${ext}</AuObject>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</Request>
The data are described as follows:
|
Request | None. | Container for saving requests | Container | Yes |
The data description of the Container Type Request is as follows:
|
Tag | Request | Create task Tag: VoiceSeparate | String | Yes |
Input | Request | File information to be operated | Container | Yes |
Operation | Request | Operation rule | Container | Yes |
CallBackFormat | Request | Job callback format, JSON or XML, default XML, priority is higher than queue callback format | String | No |
CallBackType | Request | Job callback type, Url or TDMQ, default Url, priority is higher than queue callback type | String | No |
CallBack | Request | Job callback URL has a higher priority than queue callback address. When set to no, it means the queue callback address does not generate callbacks. | String | No |
CallBackMqConfig | Request | Task callback TDMQ configuration. Required when CallBackType is TDMQ. For details, see CallBackMqConfig | Container | No |
The data description of the Container Type Input is as follows:
|
Object | Request.Input | File path | String | Yes |
The data description of the Container Type Operation
is as follows: |
TemplateId | Request.Operation | | String | No |
VoiceSeparate | Request.Operation | Voice separation template parameter, required when TemplateId is empty | Container | No |
Output | Request.Operation | Output configuration | Container | Yes |
UserData | Request.Operation | Pass through user information, printable ASCII codes, length not exceeding 1024. | String | No |
JobLevel | Request.Operation | Task priority, level limit: 0, 1, 2. A higher level indicates a higher priority, default is 0. | String | No |
Note:
Note: The voice separation parameter must be set through TemplateId or VoiceSeparate, with TemplateId having higher priority.
The data description of the Container Type VoiceSeparate
is as follows: |
AudioMode | Request.Operation.VoiceSeparate | | String | Yes |
AudioConfig | Request.Operation.VoiceSeparate | | Container | Yes |
The data description of the Container Type Output
is as follows: |
Region | Request.Operation.Output | Bucket Region | String | Yes |
Bucket | Request.Operation.Output | Bucket for result storage | String | Yes |
Object | Request.Operation.Output | background audio result filename | String | No |
AuObject | Request.Operation.Output | voice result filename | String | No |
BassObject | Request.Operation.Output | Bass result filename | String | No |
DrumObject | Request.Operation.Output | drum result filename | String | No |
Note:
Object, AuObject, BassObject, DrumObject cannot be empty at the same time.
The supported wildcards for Request.Operation.Output.Object, Request.Operation.Output.AuObject are as follows:
Response
Response Headers
Response Body
The response body is returned as application/xml. An example including the complete node data is shown below:
<Response>
<JobsDetail>
<Code>Success</Code>
<Message/>
<JobId>j8d121820f5e411ec926ef19d53ba9c6f</JobId>
<State>Submitted</State>
<CreationTime>2022-06-27T15:23:10+0800</CreationTime>
<StartTime>-</StartTime>
<EndTime>-</EndTime>
<QueueId>p2242ab62c7c94486915508540933a2c6</QueueId>
<QueueType>Speeching</QueueType>
<Tag>VoiceSeparate</Tag>
<Input>
<BucketId>test-123456789</BucketId>
<Object>input/demo.mp4</Object>
<Region>ap-chongqing</Region>
</Input>
<Operation>
<TemplateId>t1460606b9752148c4ab182f55163ba7cd</TemplateId>
<TemplateName>voiceseparate_demo</TemplateName>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/backgroud.${ext}</Object>
<AuObject>output/audio.${ext}</AuObject>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
</JobsDetail>
</Response>
The data are as follows:
|
Response | None. | Container for saving results | Container |
Container node Response content:
|
JobsDetail | Response | Task Details | Container Array |
Container node JobsDetail
content: |
Code | Response.JobsDetail | Error code, only meaningful when State is Failed | String |
Message | Response.JobsDetail | Error description, only meaningful when State is Failed | String |
JobId | Response.JobsDetail | ID of the newly created task | String |
Tag | Response.JobsDetail | Tag of the newly created task: VoiceSeparate | String |
State | Response.JobsDetail | Task Status Submitted: submitted, pending execution Running: executing Success: execution successful Failed: execution failed Pause: task is paused. When the queue is paused, to be executed tasks change to paused state. Cancel: task cancelled | String |
CreationTime | Response.JobsDetail | Task creation time | String |
StartTime | Response.JobsDetail | Task Start Time | String |
EndTime | Response.JobsDetail | Task Closed At | String |
QueueId | Response.JobsDetail | | String |
QueueType | Response.JobsDetail | Task queue type | String |
Input | Response.JobsDetail | Input resource URL of the task | Container |
Operation | Response.JobsDetail | Task rule | Container |
Container node Input content:
|
Region | Response.JobsDetail.Input | Bucket Region | String |
BucketId | Response.JobsDetail.Input | The bucket where the source file resides | String |
Object | Response.JobsDetail.Input | Source file filename | String |
Container node Operation content:
|
TemplateId | Response.JobsDetail.Operation | Template ID of the task | String |
TemplateName | Response.JobsDetail.Operation | Template name of the task, returns when TemplateId exists | String |
VoiceSeparate | Response.JobsDetail.Operation | | Container |
Output | Response.JobsDetail.Operation | | Container |
MediaInfo | Response.JobsDetail.Operation | Transcode video info, do not return if the task is not completed. For details, see MediaInfo | Container |
MediaResult | Response.JobsDetail.Operation | Basic info of the output file, do not return if the task is not completed. For details, see MediaResult | Container |
UserData | Response.JobsDetail.Operation | Pass through user information | String |
JobLevel | Response.JobsDetail.Operation | Task priority. | String |
Error Code
This request returns common error responses and error codes. For more information, see Error Codes. Practical Case
Case 1: Using a Voice Separation Template ID
Request
POST /jobs HTTP/1.1
Authorization:q-sign-algorithm=sha1&q-ak=************************************&q-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=****************************************
Host:test-1234567890.ci.ap-chongqing.myqcloud.com
Content-Length: 166
Content-Type: application/xml
<Request>
<Tag>VoiceSeparate</Tag>
<Input>
<Object>input/demo.mp4</Object>
</Input>
<Operation>
<TemplateId>t1460606b9752148c4ab182f55163ba7cd</TemplateId>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/backgroud.${ext}</Object>
<AuObject>output/audio.${ext}</AuObject>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</Request>
Response
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 230
Connection: keep-alive
Date: Mon, 28 Jun 2022 15:23:12 GMT
Server: tencent-ci
x-ci-request-id: NTk0MjdmODlfMjQ4OGY3XzYzYzhf****
<Response>
<JobsDetail>
<Code>Success</Code>
<Message/>
<JobId>j8d121820f5e411ec926ef19d53ba9c6f</JobId>
<State>Submitted</State>
<CreationTime>2022-06-27T15:23:10+0800</CreationTime>
<StartTime>-</StartTime>
<EndTime>-</EndTime>
<QueueId>p2242ab62c7c94486915508540933a2c6</QueueId>
<QueueType>Speeching</QueueType>
<Tag>VoiceSeparate</Tag>
<Input>
<BucketId>test-123456789</BucketId>
<Object>input/demo.mp4</Object>
<Region>ap-chongqing</Region>
</Input>
<Operation>
<TemplateId>t1460606b9752148c4ab182f55163ba7cd</TemplateId>
<TemplateName>voiceseparate_demo</TemplateName>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/backgroud.${ext}</Object>
<AuObject>output/audio.${ext}</AuObject>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
</JobsDetail>
</Response>
Case 2: Using Voice Separation Parameters
Request
POST /jobs HTTP/1.1
Authorization: q-sign-algorithm=sha1&q-ak=************************************&q-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=****************************************
Host: test-1234567890.ci.ap-chongqing.myqcloud.com
Content-Length: 166
Content-Type: application/xml
<Request>
<Tag>VoiceSeparate</Tag>
<Input>
<Object>input/demo.mp4</Object>
</Input>
<Operation>
<VoiceSeparate>
<AudioConfig>
<Bitrate>500</Bitrate>
<Channels>2</Channels>
<Codec>mp3</Codec>
<Samplerate>44100</Samplerate>
</AudioConfig>
<AudioMode>AudioAndBackground</AudioMode>
</VoiceSeparate>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/backgroud.${ext}</Object>
<AuObject>output/audio.${ext}</AuObject>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</Request>
Response
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 230
Connection: keep-alive
Date: Mon, 28 Jun 2022 15:23:12 GMT
Server: tencent-ci
x-ci-request-id: NTk0MjdmODlfMjQ4OGY3XzYzYzhf****
<Response>
<JobsDetail>
<Code>Success</Code>
<Message/>
<JobId>j8d121820f5e411ec926ef19d53ba9c6f</JobId>
<State>Submitted</State>
<CreationTime>2022-06-27T15:23:10+0800</CreationTime>
<StartTime>-</StartTime>
<EndTime>-</EndTime>
<QueueId>p2242ab62c7c94486915508540933a2c6</QueueId>
<QueueType>Speeching</QueueType>
<Tag>VoiceSeparate</Tag>
<Input>
<BucketId>test-123456789</BucketId>
<Object>input/demo.mp4</Object>
<Region>ap-chongqing</Region>
</Input>
<Operation>
<VoiceSeparate>
<AudioConfig>
<Bitrate>500</Bitrate>
<Channels>2</Channels>
<Codec>mp3</Codec>
<Samplerate>44100</Samplerate>
</AudioConfig>
<AudioMode>AudioAndBackground</AudioMode>
</VoiceSeparate>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/backgroud.${ext}</Object>
<AuObject>output/audio.${ext}</AuObject>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
</JobsDetail>
</Response>