腾讯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>
复制代码

 

posted @   xuanPhoto  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2018-07-13 Cordova开箱注意事项
2017-07-13 ES6中对象
点击右上角即可分享
微信分享提示