|
| 1 | +const COS = require('../lib/cos-wx-sdk-v5'); |
| 2 | +const config = require('../config'); |
| 3 | +const { cos, requestCallback } = require('../tools'); |
| 4 | + |
| 5 | +const asrDao = { |
| 6 | + '提交音频降噪任务 postNoiseReduction': postNoiseReduction, |
| 7 | + '提交人声分离任务 postVoiceSeparate': postVoiceSeparate, |
| 8 | + '提交语音合成任务 postTts': postTts, |
| 9 | + '提交语音识别任务 postSpeechRecognition': postSpeechRecognition, |
| 10 | + '查询语音识别队列 getAsrQueue': getAsrQueue, |
| 11 | + '更新语音识别队列 putAsrQueue': putAsrQueue, |
| 12 | + '查询语音识别开通状态 getAsrBucket': getAsrBucket, |
| 13 | +}; |
| 14 | + |
| 15 | +function postNoiseReduction() { |
| 16 | + var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/jobs'; |
| 17 | + var url = 'https://' + host; |
| 18 | + var body = COS.util.json2xml({ |
| 19 | + Request: { |
| 20 | + Tag: 'NoiseReduction', |
| 21 | + Input: { |
| 22 | + Object: 'ci/music.mp3', // 文件名,取值为文件在当前存储桶中的完整名称 |
| 23 | + }, |
| 24 | + Operation: { |
| 25 | + Output: { |
| 26 | + Bucket: config.Bucket, // 输出的存储桶 |
| 27 | + Region: config.Region, // 输出的存储桶的地域 |
| 28 | + Object: 'ci/out.mp3', // 输出的文件Key |
| 29 | + }, |
| 30 | + }, |
| 31 | + // QueueId: '', // 任务所在的队列 ID,非必须 |
| 32 | + // CallBackFormat: '', // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式,非必须 |
| 33 | + // CallBackType: '', // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型,非必须 |
| 34 | + // CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须 |
| 35 | + // CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须 |
| 36 | + }, |
| 37 | + }); |
| 38 | + cos.request( |
| 39 | + { |
| 40 | + Method: 'POST', |
| 41 | + Key: 'jobs', |
| 42 | + Url: url, |
| 43 | + Body: body, |
| 44 | + ContentType: 'application/xml', |
| 45 | + }, |
| 46 | + function (err, data) { |
| 47 | + console.log(err || data); |
| 48 | + } |
| 49 | + ); |
| 50 | +} |
| 51 | + |
| 52 | +function postVoiceSeparate() { |
| 53 | + var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/jobs'; |
| 54 | + var url = 'https://' + host; |
| 55 | + var body = COS.util.json2xml({ |
| 56 | + Request: { |
| 57 | + Tag: 'VoiceSeparate', |
| 58 | + Input: { |
| 59 | + Object: 'ci/music.mp3', // 文件名,取值为文件在当前存储桶中的完整名称 |
| 60 | + }, |
| 61 | + Operation: { |
| 62 | + // VoiceSeparate: {}, // 指定转码模板参数,非必须 |
| 63 | + TemplateId: 't13fca82ad97e84878a22cd81bd2e5652c', // 指定的模板 ID,必须 |
| 64 | + // JobLevel: 0, // 任务优先级,级别限制:0 、1 、2。级别越大任务优先级越高,默认为0,非必须 |
| 65 | + Output: { |
| 66 | + Bucket: config.Bucket, // 输出的存储桶 |
| 67 | + Region: config.Region, // 输出的存储桶的地域 |
| 68 | + Object: 'ci/out/background.mp3', // 输出的文件Key,背景音结果文件名,不能与 AuObject 同时为空 |
| 69 | + AuObject: 'ci/out/audio.mp3', |
| 70 | + }, |
| 71 | + }, |
| 72 | + // QueueId: '', // 任务所在的队列 ID,非必须 |
| 73 | + // CallBackFormat: '', // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式,非必须 |
| 74 | + // CallBackType: '', // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型,非必须 |
| 75 | + // CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须 |
| 76 | + // CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须 |
| 77 | + }, |
| 78 | + }); |
| 79 | + cos.request( |
| 80 | + { |
| 81 | + Method: 'POST', |
| 82 | + Key: 'jobs', |
| 83 | + Url: url, |
| 84 | + Body: body, |
| 85 | + ContentType: 'application/xml', |
| 86 | + }, |
| 87 | + function (err, data) { |
| 88 | + console.log(err || data); |
| 89 | + } |
| 90 | + ); |
| 91 | +} |
| 92 | + |
| 93 | +function postTts() { |
| 94 | + var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/jobs'; |
| 95 | + var url = 'https://' + host; |
| 96 | + var body = COS.util.json2xml({ |
| 97 | + Request: { |
| 98 | + Tag: 'Tts', |
| 99 | + Operation: { |
| 100 | + // VoiceSeparate: {}, // 指定转码模板参数,非必须 |
| 101 | + TemplateId: 't192931b3564084168a3f50ebfea59acb3', // 指定的模板 ID,必须 |
| 102 | + // JobLevel: 0, // 任务优先级,级别限制:0 、1 、2。级别越大任务优先级越高,默认为0,非必须 |
| 103 | + TtsConfig: { |
| 104 | + InputType: 'Text', |
| 105 | + Input: '床前明月光,疑是地上霜', |
| 106 | + }, |
| 107 | + Output: { |
| 108 | + Bucket: config.Bucket, // 输出的存储桶 |
| 109 | + Region: config.Region, // 输出的存储桶的地域 |
| 110 | + Object: 'ci/out/tts.mp3', // 输出的文件Key |
| 111 | + }, |
| 112 | + }, |
| 113 | + // QueueId: '', // 任务所在的队列 ID,非必须 |
| 114 | + // CallBackFormat: '', // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式,非必须 |
| 115 | + // CallBackType: '', // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型,非必须 |
| 116 | + // CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须 |
| 117 | + // CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须 |
| 118 | + }, |
| 119 | + }); |
| 120 | + cos.request( |
| 121 | + { |
| 122 | + Method: 'POST', |
| 123 | + Key: 'jobs', |
| 124 | + Url: url, |
| 125 | + Body: body, |
| 126 | + ContentType: 'application/xml', |
| 127 | + }, |
| 128 | + function (err, data) { |
| 129 | + console.log(err || data); |
| 130 | + } |
| 131 | + ); |
| 132 | +} |
| 133 | + |
| 134 | +function postSpeechRecognition() { |
| 135 | + var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/asr_jobs'; |
| 136 | + var url = 'https://' + host; |
| 137 | + var body = COS.util.json2xml({ |
| 138 | + Request: { |
| 139 | + Tag: 'SpeechRecognition', |
| 140 | + Input: { |
| 141 | + Object: 'ci/music.mp3', // 文件名,取值为文件在当前存储桶中的完整名称,与Url参数二选一 |
| 142 | + // Url: 'http://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/music.mp3', // 病毒文件的链接地址,与Object参数二选一 |
| 143 | + }, |
| 144 | + Operation: { |
| 145 | + SpeechRecognition: { |
| 146 | + EngineModelType: '16k_zh_video', // 引擎模型类型 |
| 147 | + ChannelNum: 1, // 语音声道数 |
| 148 | + ResTextFormat: 0, // 识别结果返回形式 |
| 149 | + FilterDirty: 1, // 是否过滤脏词(目前支持中文普通话引擎) |
| 150 | + FilterModal: 1, // 是否过语气词(目前支持中文普通话引擎) |
| 151 | + ConvertNumMode: 0, // 是否进行阿拉伯数字智能转换(目前支持中文普通话引擎) |
| 152 | + }, |
| 153 | + Output: { |
| 154 | + Bucket: config.Bucket, // 输出的存储桶 |
| 155 | + Region: config.Region, // 输出的存储桶的地域 |
| 156 | + Object: 'ci/out/SpeechRecognition.mp3', // 输出的文件Key |
| 157 | + }, |
| 158 | + }, |
| 159 | + // QueueId: '', // 任务所在的队列 ID,非必须 |
| 160 | + // CallBackFormat: '', // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式,非必须 |
| 161 | + // CallBackType: '', // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型,非必须 |
| 162 | + // CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须 |
| 163 | + // CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须 |
| 164 | + }, |
| 165 | + }); |
| 166 | + cos.request( |
| 167 | + { |
| 168 | + Method: 'POST', |
| 169 | + Key: 'asr_jobs', |
| 170 | + Url: url, |
| 171 | + Body: body, |
| 172 | + ContentType: 'application/xml', |
| 173 | + }, |
| 174 | + function (err, data) { |
| 175 | + console.log(err || data); |
| 176 | + } |
| 177 | + ); |
| 178 | +} |
| 179 | + |
| 180 | +function getAsrQueue() { |
| 181 | + var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/asrqueue'; |
| 182 | + var url = 'https://' + host; |
| 183 | + cos.request( |
| 184 | + { |
| 185 | + Method: 'GET', |
| 186 | + Key: 'asrqueue', |
| 187 | + Url: url, |
| 188 | + Query: { |
| 189 | + // queueIds: '', /* 非必须,队列 ID,以“,”符号分割字符串 */ |
| 190 | + // state: '', /* 非必须,1=Active,2=Paused */ |
| 191 | + // pageNumber: 1, /* 非必须,第几页 */ |
| 192 | + // pageSize: 2, /* 非必须,每页个数 */ |
| 193 | + }, |
| 194 | + }, |
| 195 | + function (err, data) { |
| 196 | + console.log(err || data); |
| 197 | + } |
| 198 | + ); |
| 199 | +} |
| 200 | + |
| 201 | +function putAsrQueue() { |
| 202 | + // 任务所在的队列 ID,请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询 |
| 203 | + var queueId = 'pcc77499e85c311edb9865254008618d9'; |
| 204 | + var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/asrqueue/' + queueId; |
| 205 | + var url = 'https://' + host; |
| 206 | + var body = COS.util.json2xml({ |
| 207 | + Request: { |
| 208 | + Name: 'queue-doc-process-1', |
| 209 | + QueueID: queueId, |
| 210 | + State: 'Paused', |
| 211 | + NotifyConfig: { |
| 212 | + // Url: '', |
| 213 | + // Type: 'Url', |
| 214 | + // Event: '', |
| 215 | + State: 'Off', |
| 216 | + }, |
| 217 | + }, |
| 218 | + }); |
| 219 | + cos.request( |
| 220 | + { |
| 221 | + Method: 'PUT', |
| 222 | + Key: 'asrqueue/' + queueId, |
| 223 | + Url: url, |
| 224 | + Body: body, |
| 225 | + ContentType: 'application/xml', |
| 226 | + }, |
| 227 | + function (err, data) { |
| 228 | + console.log(err || data); |
| 229 | + } |
| 230 | + ); |
| 231 | +} |
| 232 | + |
| 233 | +function getAsrBucket() { |
| 234 | + var host = 'ci.' + config.Region + '.myqcloud.com/asrbucket'; |
| 235 | + var url = 'https://' + host; |
| 236 | + cos.request( |
| 237 | + { |
| 238 | + Method: 'GET', |
| 239 | + Key: 'asrbucket', |
| 240 | + Url: url, |
| 241 | + Query: { |
| 242 | + // regions: '', /* 非必须,地域信息,以“,”分隔字符串,支持 All、ap-shanghai、ap-beijing */ |
| 243 | + // bucketNames: '', /* 非必须,存储桶名称,以“,”分隔,支持多个存储桶,精确搜索 */ |
| 244 | + // bucketName: '', /* 非必须,存储桶名称前缀,前缀搜索 */ |
| 245 | + // pageNumber: 1, /* 非必须,第几页 */ |
| 246 | + // pageSize: 10, /* 非必须,每页个数 */ |
| 247 | + }, |
| 248 | + }, |
| 249 | + function (err, data) { |
| 250 | + console.log(err || data); |
| 251 | + } |
| 252 | + ); |
| 253 | +} |
| 254 | + |
| 255 | +module.exports = asrDao; |
0 commit comments