对象存储 智能伴奏人声提取

人声分离可以快速将音频和视频中的人声、背景音乐(伴奏)、乐器声分离为若干个文件,而且不会损失或破坏音质,轻松实现二次创作。这篇将介绍如何基于COS JavaScript SDK 调用腾讯云数据万象(CI)人声分离功能, 实现人声、背景音、伴奏的智能提取,以满足二次创作、降噪等业务场景。

相关产品
对象存储 产品页,含版本规格、价格与购买入口。

一、后期混音

理解多种不同风格的歌曲,从中分离伴奏和人声,并针对分离后的人声、背景音、伴奏等做变声、混音等多种风格艺术加工。

二、影视节目发行宣传

针对不同影视平台的用户观看兴趣取向,将源视频音频进行剥离后叠加所需 BGM 背景声进行素材混剪提升观看点击率。

三、准备工作

·已创建和绑定存储桶,详情请参见 存储桶操作。

·已设置对应的 跨域规则。

·已 开通智能语音 功能。

·已 上传视频、音频文件。

四、步骤 1:初始化 COS SDK 并配置相关信息

<!–COS SDK–><script src="https://cdn.jsdelivr.net/npm/cos-js-sdk-v5/dist/cos-js-sdk-v5.min.js"></script>// 密钥请在访问管理控制台获取。https://console.cloud.tencent.com/cam/capiconst cos = new COS({ SecretId: '************************************', SecretKey: '**********',});

注意:说明:

五、步骤 2:创建人声分离任务

构造提交人声分离任务接口并发起请求,相关请求参数请参见 API 文档:

// 存储桶配置请在cos控制台获取。https://console.cloud.tencent.com/cos/bucket// 格式参考:Bucket: 'abc-1250000000', Region: 'ap-shanghai'// 源文件相关配置const InputConf = { Bucket: '***-125********', Region: '**-*****', FileName: 'demo.mp4',};// 人声分离结果文件相关配置,注意:需与源文件所在存储桶为同地域const OutputConf = { Bucket: '***-125********', Region: 'ap-chongqing', AuObject: '', // 人声结果文件名 Object: '', // 背景音结果文件名 BassObject: '', // Bass声结果文件名 DrumObject: '' // 鼓声结果文件名};//需在地址前拼接/jobs,即:`https://<BucketName-APPID>.ci.<Region>.myqcloud.com/jobsconst host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';const url = 'https://' + host + '/jobs';// 使用cos sdk 发起人声分离任务请求// 人声分离参数,包括人声、背景声、人声和背景声、贝斯,鼓点 const body = COS.util.json2xml({ Request: { "Tag": "VoiceSeparate", /* 创建任务的 Transcode ,必须*/ "Input": { "Object": InputConf.FileName, /* 需要的文档文件,存储桶里的路径,必须 */ }, "Operation": { "Output": { "Region": OutputConf.Region, /* 存储桶的地域,必须 */ "Bucket": OutputConf.Bucket, /* 存储结果的存储桶,必须 */ "Object": OutputConf.Object, /* 背景音结果文件名,非必须 */ "AuObject": OutputConf.AuObject, /* 人声结果文件名,非必须 */ "BassObject": OutputConf.BassObject, /* Bass声结果文件名,非必须 */ "DrumObject": OutputConf.DrumObject /* 鼓声结果文件名,非必须 */ /* Object、AuObject、BassObject、DrumObject 不可以同时为空。 */ }, "VoiceSeparate": { "AudioConfig": { "Codec": "mp3" // 编解码格式,取值aac, mp3, flac, amr。当 Request.AudioMode 为 MusicMode 时,仅支持 mp3、wav、acc }, "AudioMode": "IsAudio" // 输出音频模式,取值IsAudio(输出人声), IsBackground(输出背景声), AudioAndBackground(输出人声和背景声), MusicMode(输出人声、背景声、Bass声、鼓声)。 }, } },});const body = COS.util.json2xml(param);cos.request( { Bucket: InputConf.Bucket, Region: InputConf.Region, Method: 'POST', Url: 'https://' + host + '/jobs', Key: '/jobs', /** 固定值,必须 */ ContentType: 'application/xml', /** 固定值,必须 */ Body: body }, (err, data) => { console.log(err || data); });

注意:说明:

六、步骤 3:获取人声分离文件

通过 JobId 查询任务执行结果,详情请参见 查询任务接口文档 。
可定时查询任务的状态,当返回的 State 为 Success 时代表人声分离执行成功,音频地址为:

https://${OutputConf.Bucket}.cos.${OutputConf.Region}.myqcloud.com/${OutputConf.Object/AuObject/BassObject/DrumObject}

// 需在对象地址前面拼接 jobs/<jobId>,即:`https://<BucketName-APPID>.ci.<Region>.myqcloud.com/jobs/<jobId>`// jobId 即为刚刚创建的任务 IDconst host = InputConf.Bucket + '.ci.' + InputConf.Region + '.myqcloud.com';const url = 'https://' + host + '/jobs/' + JobId;cos.request( { Bucket: InputConf.Bucket, Region: InputConf.Region, Method: 'GET', Url: url, Key: '/jobs/' + JobId /** 固定值,必须 */, ContentType: 'application/xml' /** 固定值,必须 */, }, (err, data) => { if (err) { // 人声分离任务查询失败,请在console查看报错信息; console.log(JSON.stringify(err)); return; } const resp = data.Response || {}; // 判断人声分离任务是否执行中 if (resp.JobsDetail.State !== 'Success') { console.log('…人声分离任务执行中'); return; } // 任务执行完成 人声分离文件地址为 const srtUrl = `https://${OutputConf.Bucket}.cos.${OutputConf.Region}.myqcloud.com/${OutputConf.Object/AuObject/BassObject/DrumObject}`; });

七、操作结果

源视频如下:

<video src="https://cosbrowser-1253960454.file.myqcloud.com/sites/pr/voice-separate-demo.mov" width="350px" controls></video>

提取出来的人声如下:

<audio src="https://cosbrowser-1253960454.file.myqcloud.com/sites/pr/voice-separate-voice.mp3" controls="controls" style="display:block;width:100%"></audio>

提取出来的背景声如下:

<audio src="https://cosbrowser-1253960454.file.myqcloud.com/sites/pr/voice-separate-bak.mp3" controls="controls" style="display:block;width:100%"></audio>

提取出来的 Bass 声如下:

<audio src="https://cosbrowser-1253960454.file.myqcloud.com/sites/pr/voice-separate-bass.mp3" controls="controls" style="display:block;width:100%"></audio>

提取出来的鼓声如下:

<audio src="https://cosbrowser-1253960454.file.myqcloud.com/sites/pr/voice-separate-drum.mp3" controls="controls" style="display:block;width:100%"></audio>

八、费用相关

·人声分离计费规则详见 智能语音费用 – 人声分离。

·音视频文件存储在 COS 上,涉及 对象存储相关费用。

九、Demo 体验

具体代码可参考 cos demo,你也可在 数据万象体验馆 中体验人声分离实际效果。

赞 (0)
上一篇 4天前
下一篇 4天前