人声分离
更新时间:2025-12-12
人声分离(Voice Separation)能力基于深度学习音频分离模型,可从视频或音频内容中将 目标人声与背景声音(背景音乐 / 环境噪声) 进行分离,产出更加清晰的语音轨道。本能力可广泛应用于字幕生成、语音识别、翻译、TTS 配音、音频增强等场景。
每次调用输入一个媒资(音频 / 视频),输出一个人声和一个背景声。
1. 人声分离处理
触发人声分离之前必须将媒资上传到VOD中,若已经上传直接查看1.2 直接配置方式(1步) ,若还未上传,则需要调用上传并配置工作流,参考1.1 拉取上传方式(2步)。
人声分离的工作流ID:fmhq57f1w3k3kbi81fef。
若想降低成本,可以配置过期时间,过期时间到达后,该媒资将会被自动删除。但注意人声分离结果也会一并删除
1.1 拉取上传方式(2步)
1.1.1 拉取上传并配置人声分离工作流
请求结构
Http
1POST /v2/medias/fetch HTTP/1.1
2connection: keep-alive
3host: vod.bj.baidubce.com
4content-type: application/json
5x-bce-request-id: <bce-request-id>
6x-bce-date: <utc-date-string>
7authorization: <bce-authorization-string>
8
9{
10 // 请求参数
11}
请求参数
| 参数 | 类型 | 是否必需 | 参数位置 | 描述 |
|---|---|---|---|---|
| url | string | 是 | RequestBody参数 | 拉取文件url,长度不超过1024,支持的文件封装格式(url末尾的文件名后缀):
|
| name | string | RequestBody参数 | 媒资名称,如果不指定name,将会从url中提取文件名作为生成的媒资名称 | |
| categoryId | string | RequestBody参数 | 分类ID,用于设置媒资分类 | |
| workflow | MediaWorkflowTaskInput | 是 | RequestBody参数 | 媒资工作流处理参数,配置人声分离工作流ID:fmhq57f1w3k3kbi81fef。 |
| deleteAfterSeconds | long | RequestBody参数 | 配置媒资过期时间,过期后自动删除,单位s,取值 [3600, 180 * 24 * 3600],即1小时到180天 |
返回参数
| 参数 | 类型 | 描述 |
|---|---|---|
| taskId | string | 拉取上传的任务ID,可以通过此ID查询到人声分离工作流任务ID |
示例
请求内容
Http
1POST /v2/medias/fetch HTTP/1.1
2host: vod.bj.baidubce.com
3accept: */*
4connection: keep-alive
5content-type: application/json
6x-bce-request-id: 6bae5cb3-97d1-4b1a-b8b6-0ad577c1d481
7x-bce-date: 2024-03-24T13:08:44Z
8authorization: bce-auth-v1/46bd9968a6194b4bbdf0341f2286ccce/2024-03-24T13:08:44Z/1800/host;x-bce-date/7e21c9cf1e4e2cc6921a407a388fe98df122c53b9f509043d841be76eb09a1f9
9
10{
11 "url": "https://vod.com/demo.mp4?authorization=xxx",
12 "name": "人声分离test",
13 "deleteAfterSeconds": "24 * 3600",
14 "workflow": {
15 "workflowId": "fmhq57f1w3k3kbi81fef"
16 }
17}
返回内容
Http
1HTTP/1.1 200 OK
2Transfer-Encoding: chunked
3x-bce-request-id: 6bae5cb3-97d1-4b1a-b8b6-0ad577c1d481
4Cache-Control: no-cache
5Date: Tue, 24 Mar 2024 13:08:44 GMT
6Content-Type: application/json;charset=UTF-8
7
8{
9 "taskId": "tsk-emdjf2brktngm326"
10}
1.1.2 查询拉取上传任务获取工作流任务ID
此接口查询除了能拿到媒资的mediaId和源信息之后,还能拿到人声分离工作流任务ID(workflowTaskId),后续可以通过该任务ID查询人声分离结果。
请求结构
Http
1GET /v2/tasks/{taskId} HTTP/1.1
2connection: keep-alive
3host: vod.bj.baidubce.com
4content-type: application/json
5x-bce-request-id: <bce-request-id>
6x-bce-date: <utc-date-string>
7authorization: <bce-authorization-string>
请求参数
| 参数 | 类型 | 是否必需 | 参数位置 | 描述 |
|---|---|---|---|---|
| taskId | string | 是 | Path参数 | 拉取任务ID |
返回参数
参考 MediaTaskDetail 结构定义。具体可以看示例中返回内容更容易理解。 重点是能拿到mediaFetchTaskInfo.workflowTaskId
示例
请求内容
Http
1GET /v2/tasks/tsk-fmms9tyg6qdwnhw0 HTTP/1.1
2host: vod.bj.baidubce.com
3accept: */*
4connection: keep-alive
5content-type: application/json
6x-bce-request-id: 6bae5cb3-97d1-4b1a-b8b6-0ad577c1d481
7x-bce-date: 2024-03-24T13:08:44Z
8authorization: bce-auth-v1/46bd9968a6194b4bbdf0341f2286ccce/2024-03-24T13:08:44Z/1800/host;x-bce-date/7e21c9cf1e4e2cc6921a407a388fe98df122c53b9f509043d841be76eb09a1f9
返回内容
Http
1{
2 "taskId": "tsk-fmms9tyg6qdwnhw0",
3 "type": "FETCH",
4 "status": "SUCCESS",
5 "createTime": "2025-12-12T08:03:10Z",
6 "finishTime": "2025-12-12T08:03:19Z",
7 "mediaFetchTaskInfo": {
8 "url": "https://vod.com/demo.mp4?authorization=xxx",
9 "mediaBasicInfo": {
10 "mediaId": "mda-fmmsh2qcm2v8rp00",
11 "name": "fmkk8nxmchfmafvprxx1",
12 "description": "",
13 "mediaType": "video",
14 "banStatus": "NORMAL",
15 "createTime": "2025-12-12T08:03:18Z",
16 "expireTime": "2025-12-12T09:03:18Z",
17 "categoryId": "system",
18 "tags": [],
19 "source": {
20 "bucket": "vod-em5xuw1affk1r014",
21 "sourceKey": "mda-fmmsh2qcm2v8rp00/_src/mda-fmmsh2qcm2v8rp00/fmms7z1yawggbejuaspi.mp4",
22 "coverKey": "",
23 "sourceType": "FETCH",
24 "sourceUrl": "https://vod.com/demo.mp4?authorization=xxx"
25 },
26 "sourceMetadata": {
27 "fileSizeInByte": 18877390,
28 "type": "video",
29 "container": "mov,mp4,m4a,3gp,3g2,mj2",
30 "durationInSecond": 93,
31 "durationInMillisecond": 93250,
32 "video": {
33 "codec": "h264",
34 "heightInPixel": 1136,
35 "widthInPixel": 640,
36 "bitRateInBps": 1484198,
37 "frameRate": 25.0,
38 "dar": "9:16"
39 },
40 "audio": {
41 "codec": "aac",
42 "channels": 2,
43 "sampleRateInHz": 48000,
44 "bitRateInBps": 129943
45 },
46 "etag": "bbf8a2f35d80fb578ba49d627d824f17"
47 }
48 },
49 "workflowTaskId": "tsk-fmms8nje1d5gmx54"
50 }
51}
1.2 直接配置方式(1步)
1.2.1 配置人声分离工作流获取工作流任务ID
已经上传完媒资,则直接可以通过媒资处理接口进行媒资的人声分离。
请求结构
Http
1POST /v2/medias/process HTTP/1.1
2connection: keep-alive
3host: vod.bj.baidubce.com
4content-type: application/json
5x-bce-request-id: <bce-request-id>
6x-bce-date: <utc-date-string>
7authorization: <bce-authorization-string>
8
9{
10 // 请求参数
11}
请求参数
| 参数 | 类型 | 是否必需 | 参数位置 | 描述 |
|---|---|---|---|---|
| mediaId | string | 是 | RequestBody参数 | 媒资ID |
| workflow | MediaWorkflowTaskInput | 是 | RequestBody参数 | 媒资工作流处理参数,配置人声分离工作流ID:fmhq57f1w3k3kbi81fef。 |
返回参数
| 参数 | 类型 | 描述 |
|---|---|---|
| taskId | string | 拉取上传的任务ID,可以通过此ID查询到人声分离工作流任务ID |
| mediaId | string | 媒资ID |
示例
请求内容
Http
1GET /v2/tasks/tsk-fmms9tyg6qdwnhw0 HTTP/1.1
2host: vod.bj.baidubce.com
3accept: */*
4connection: keep-alive
5content-type: application/json
6x-bce-request-id: 6bae5cb3-97d1-4b1a-b8b6-0ad577c1d481
7x-bce-date: 2024-03-24T13:08:44Z
8authorization: bce-auth-v1/46bd9968a6194b4bbdf0341f2286ccce/2024-03-24T13:08:44Z/1800/host;x-bce-date/7e21c9cf1e4e2cc6921a407a388fe98df122c53b9f509043d841be76eb09a1f9
9
10{
11 "mediaId": "mda-fmjsgzs13rb0ry4r",
12 "workflow": {
13 "workflowId": "fmjszv2xiqa0cstnmi1e"
14 }
15}
返回内容
Http
1{
2 "mediaId": "mda-fmjsgzs13rb0ry4r",
3 "taskId": "tsk-fmkw31pknpnh10e0"
4}
2. 查询人声分离工作流任务
人声分离工作流任务中包含多个节点,仅人声分离理解计费,其他节点不计费可以忽略。
请求结构
Http
1GET /v2/tasks/{taskId} HTTP/1.1
2connection: keep-alive
3host: vod.bj.baidubce.com
4content-type: application/json
5x-bce-request-id: <bce-request-id>
6x-bce-date: <utc-date-string>
7authorization: <bce-authorization-string>
请求参数
| 参数 | 类型 | 是否必需 | 参数位置 | 描述 |
|---|---|---|---|---|
| taskId | string | 是 | Path参数 | 拉取任务ID |
返回参数
参考 MediaTaskDetail 结构定义。具体可以看示例中返回内容更容易理解。 重点关注understandingNodeTaskInfos字段。vocalsUrl和bgUrl为分离后的人声和背景音的URL。
示例
请求内容
Http
1GET /v2/tasks/tsk-fmmsv9nk3zkpty98 HTTP/1.1
2host: vod.bj.baidubce.com
3accept: */*
4connection: keep-alive
5content-type: application/json
6x-bce-request-id: 6bae5cb3-97d1-4b1a-b8b6-0ad577c1d481
7x-bce-date: 2024-03-24T13:08:44Z
8authorization: bce-auth-v1/46bd9968a6194b4bbdf0341f2286ccce/2024-03-24T13:08:44Z/1800/host;x-bce-date/7e21c9cf1e4e2cc6921a407a388fe98df122c53b9f509043d841be76eb09a1f9
返回内容
Http
1{
2 "taskId": "tsk-fmmsv9nk3zkpty98",
3 "type": "WORKFLOW",
4 "status": "FINISHED",
5 "createTime": "2025-12-12T08:27:50Z",
6 "finishTime": "2025-12-12T08:29:29Z",
7 "mediaWorkflowTaskInfo": {
8 "mediaId": "mda-fmms73uugy46mnn6",
9 "workflowId": "fmhq57f1w3k3kbi81fef",
10 "startNodeTaskInfo": {
11 "nodeId": "fmhqk6uc2ud0daebtqph",
12 "nodeName": "输入",
13 "status": "SUCCESS"
14 },
15 "transcodeNodeTaskInfos": [
16 {
17 "nodeId": "fmhq81rmi68sxj5c5xky",
18 "nodeName": "转码720P",
19 "transcodeTaskInfo": {
20 "mediaId": "mda-fmms73uugy46mnn6",
21 "status": "SUCCESS",
22 "transcodeInput": {
23 "presetId": "ffkw4ijqidzg1up7eq7k"
24 },
25 "transcodeOutput": {
26 "id": "ffkw4ijqidzg1up7eq7k",
27 "url": "https://bcevod.com/mda-fmms73uugy46mnn6/_output/transffkw4ijqidzg1up7eq7k/mda-fmms73uugy46mnn6.mp4",
28 "meta": {
29 "video": {
30 "durationInSeconds": 116,
31 "durationInMilliSeconds": 115712,
32 "sizeInKiloByte": 26376.774414,
33 "widthInPixel": 720,
34 "heightInPixel": 1280,
35 "bitRateInBps": 1867382,
36 "frameRate": 30,
37 "gopAlign": false,
38 "mp4MoovSize": 41313
39 },
40 "audio": {
41 "sampleRateInHz": 48000,
42 "channels": 2
43 }
44 }
45 }
46 }
47 }
48 ],
49 "understandingNodeTaskInfos": [
50 {
51 "nodeId": "fmhqhtx8a43wbebsi56m",
52 "nodeName": "人声分离",
53 "understandingTaskInfo": {
54 "jobId": "job-fmms7mfhpcrsbfiz",
55 "mediaId": "mda-fmms73uugy46mnn6",
56 "status": "SUCCESS",
57 "understandingOutput": {
58 "vocalsUrl": "https://bcevod.com/mda-fmms73uugy46mnn6/_output/understand/mda-fmms73uugy46mnn6_vocals_separation_vocals.mp3",
59 "bgUrl": "https://bcevod.com/mda-fmms73uugy46mnn6/_output/understand/mda-fmms73uugy46mnn6_vocals_separation_bg.mp3"
60 }
61 }
62 }
63 ],
64 "publishNodeTaskInfo": {
65 "nodeId": "fmhqm5b1e66skfkrib2a",
66 "nodeName": "发布",
67 "status": "SUCCESS"
68 }
69 }
70}
