摘要:一背景作為一名前端同學有時候感覺挺可憐的,復雜的操作都依賴后端同學在服務器端完成。
一、背景
作為一名前端同學有時候感覺挺可憐的,復雜的操作都依賴后端同學在服務器端完成。那么,有一天我們自己想玩一個新技術或者后端同學不搭理我們,怎么辦?絕望中.....
二、小程序語音識別
接到這個需求,我們明確兩個問題:
小程序錄音支持什么格式
由小程序文檔可知:只支持 mp3格式和 aac格式
微信小程序錄音文檔
科大訊飛平臺需要什么格式的音頻
支持的格式 pacm或者wav, speex和 speex-web 格式
科大訊飛語音聽寫api
3. 目標 將小程序的錄音轉為 科大訊飛能識別的音頻格式
import Mp3 from "@/utils/js-mp3/decode" import { md5 } from "@/utils/md5.js" import pcm from "pcm-util" 錄音 // 獲取錄音權限 this.getRecordAuth() // 獲取錄音對象 const that = this; this.recorderManager = wx.getRecorderManager() this.recorderManager.onStart(() => { console.log("recorder start") }) // 錄音的格式參數 const options = { duration: 11000, sampleRate: 32000, numberOfChannels: 1, encodeBitRate: 64000, format: "mp3", frameSize: 6 } this.recorderManager.start(options) this.recorderManager.onStop(res => { const tempFilePath = res.tempFilePath that.duration = res.duration const fs = wx.getFileSystemManager() console.log("record stop") console.log(res) // 從臨時文件中讀取音頻 fs.readFile({ filePath: tempFilePath, success (res) { console.log("read success") that.mp3ToPcm(res.data) }, fail (e) { console.log("read fail") console.log(e) } }) }) 轉格式 mp3ToPcm (mp3AB) { var that = this var decoder = Mp3.newDecoder(mp3AB) var pcmArrayBuffer = decoder.decode() // 和錄音的格式一樣 const fromFormat = { channels: 1, sampleRate: 32000, interleaved: true, float: false, samplesPerFrame: 1152, signed: true } // 目標音頻的格式 const toFormat = { channels: 1, sampleRate: 16000, bitDepth: 8, interleaved: true, float: false, samplesPerFrame: 576, signed: true } var pcmAB = pcm.convert(pcmArrayBuffer, fromFormat, toFormat) const base64 = wx.arrayBufferToBase64(pcmAB) var millTime = (new Date().setMilliseconds(0) / 1000) + "" /** 調用科大訊飛平臺的語音識別 請求參數都是自己申請應用的參數 */ wx.request({ url: "http://api.xfyun.cn/v1/service/v1/iat", method: "POST", data: { audio: base64 }, header: { "X-Appid": "5be4162d", "X-CurTime": millTime, "X-Param": "eyJlbmdpbmVfdHlwZSI6ICJzbXMxNmsiLCJhdWUiOiAicmF3In0=", "X-CheckSum": md5("b243cb9e1ea9d9eb40847967a8ebeef2" + millTime + "eyJlbmdpbmVfdHlwZSI6ICJzbXMxNmsiLCJhdWUiOiAicmF3In0="), "content-type": "application/x-www-form-urlencoded" // 默認值 }, success (res) { console.log("turn success") console.log(res) console.log(res.data) }, fail: function (res) { console.log("turn fail") console.log(res) } }) } },
注意:
首先在科大訊飛平臺申應用申請應用
請求參數的文檔語音識別的接口文檔
錄音一定在真機上測試,模擬器不行
js-mp3
pcm工具包
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/101852.html
摘要:月日下午,齊心好視通智無界新跨越新品發布會在齊心集團總部發布廳隆重舉行。同時,我們也是業內首家在微信小程序上實現實時音視頻與視頻會議會議硬件終端通信的廠商齊心好視通微信小程序產品經理梁娟蘭表示。12月27日下午,齊心好視通智無界·新跨越新品發布會在齊心集團總部發布廳隆重舉行。會議吸引了來自行業專家、生態合作伙伴、新聞媒體、投資機構等在內的多名人士參加,現場火爆,座無虛席。齊心集團副總裁兼好視...
摘要:本文以開發一個類似語音口令紅包小程序為例,向您講解如何使用阿里云函數計算快速構建微信小程序的服務端。 前言 這篇文章適合所有的想微信小程序開發新手、老鳥以及想準備學習開發微信小程序的程序猿。本文以開發一個類似語音口令紅包小程序為例,向您講解如何使用阿里云函數計算快速構建微信小程序的服務端。通過本文,您將會了解以下內容: demo概覽 傳統服務器架構 VS Serverless架構 S...
摘要:本文以開發一個類似語音口令紅包小程序為例,向您講解如何使用阿里云函數計算快速構建微信小程序的服務端。 前言 這篇文章適合所有的想微信小程序開發新手、老鳥以及想準備學習開發微信小程序的程序猿。本文以開發一個類似語音口令紅包小程序為例,向您講解如何使用阿里云函數計算快速構建微信小程序的服務端。通過本文,您將會了解以下內容: demo概覽 傳統服務器架構 VS Serverless架構 S...
摘要:摘要阿里云函數計算是一個事件驅動的全托管計算服務。微信小程序是一種不需要下載安裝即可使用的應用,它可以在微信內被便捷地獲取和傳播。本文以開發一個類似語音口令紅包小程序為例,向您講解如何使用阿里云函數計算快速構建微信小程序的服務端。 摘要: 阿里云函數計算是一個事件驅動的全托管計算服務。通過函數計算,您無需管理服務器等基礎設施,只需編寫代碼并上傳。微信小程序是一種不需要下載安裝即可使用的...
摘要:摘要阿里云函數計算是一個事件驅動的全托管計算服務。微信小程序是一種不需要下載安裝即可使用的應用,它可以在微信內被便捷地獲取和傳播。本文以開發一個類似語音口令紅包小程序為例,向您講解如何使用阿里云函數計算快速構建微信小程序的服務端。 摘要: 阿里云函數計算是一個事件驅動的全托管計算服務。通過函數計算,您無需管理服務器等基礎設施,只需編寫代碼并上傳。微信小程序是一種不需要下載安裝即可使用的...
閱讀 3028·2021-09-08 10:43
閱讀 1031·2019-08-30 15:53
閱讀 964·2019-08-30 13:51
閱讀 836·2019-08-29 14:03
閱讀 796·2019-08-26 18:35
閱讀 1229·2019-08-26 13:38
閱讀 1580·2019-08-26 10:34
閱讀 3497·2019-08-26 10:21