腾讯ASR录音文件识别极速版
<template> <div> <input type="file" id="fileInput" /> <button @click="uploadFile()">Upload File</button> </div> </template> <script setup> import axios from 'axios' import CryptoJS from 'crypto-js' // 腾讯录音文件识别极速版 API // https://cloud.tencent.com/document/product/1093/52097#3.5-.E7.AD.BE.E5.90.8D.E7.94.9F.E6.88.90.E8.AF.B4.E6.98.8E.3Ca-id.3D.22sign.22.3E.3C.2Fa.3E function uploadFile() { const Appid = '1313203058' const SecretId = 'AKID60e2B3ez3btufAOL1QYP0KOAn9F4cuvg' const SecretKey = 'WmlTt4ybx2qNeeNp0uYv1pMdcKlwquiF' const params = { // convert_num_mode: '1', engine_type: '16k_zh', // filter_dirty: '0', // filter_modal: '0', // filter_punc: '0', // first_channel_only: '1', // hotword_id: '', SecretId, // SecretKey, // speaker_diarization: '0', timestamp: Math.round(new Date() / 1000), voice_format: 'wav' // word_info: '0' } // 对参数按字典序进行排序并拼接成签名原文 const sortedParams = Object.keys(params) .sort() .map((key) => `${key}=${params[key]}`) .join('&') const requestUrl = `asr.cloud.tencent.com/asr/flash/v1/${Appid}` const signString = `POST${requestUrl}?${sortedParams}` // 使用 HmacSHA1 进行加密并进行 Base64 编码 const hash = CryptoJS.HmacSHA1(signString, SecretKey) const signature = CryptoJS.enc.Base64.stringify(hash) console.log('签名原文:', signString) console.log('签名值:', signature) const fileInput = document.getElementById('fileInput') const file = fileInput.files[0] const url = `https://asr.cloud.tencent.com/asr/flash/v1/${Appid}` const formData = new FormData() formData.append('data', file) const headers = { Host: 'asr.cloud.tencent.com', Authorization: signature, // 'Content-Type': 'multipart/form-data' 'Content-Type': 'application/octet-stream' } const reader = new FileReader() reader.onload = (event) => { const arrayBuffer = event.target.result axios .post(url, arrayBuffer, { headers, params }) .then((response) => { console.log('成功:', response.data) }) .catch((error) => { console.error('失败:', error) }) } reader.readAsArrayBuffer(file) } </script>