asr.js 9.5 KB

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