商城系統(tǒng) 注冊(cè)

微信小程序語(yǔ)音識(shí)別、合成如何實(shí)現(xiàn)

2020-09-27|HiShop
導(dǎo)讀:網(wǎng)上前篇一律的微信小程序語(yǔ)音識(shí)別博客,在小程序api更新之后讓莘莘學(xué)子看的一頭霧水,這里只敘述前端的工作內(nèi)容,以下是微信小程序語(yǔ)音識(shí)別、合成如何實(shí)現(xiàn) ...

網(wǎng)上前篇一律的微信小程序語(yǔ)音識(shí)別博客,在小程序api更新之后讓莘莘學(xué)子看的一頭霧水,這里只敘述前端的工作內(nèi)容,以下是微信小程序語(yǔ)音識(shí)別、合成如何實(shí)現(xiàn) 

先敘述下原理:

利用微信小程序api,錄音結(jié)束后返回mp3文件;

 

使用方法請(qǐng)看:https://developers.weixin.qq.com/miniprogram/dev/api/getRecorderManager.html

 

錄音轉(zhuǎn)換成文件的格式只有兩種:acc mp3,所以網(wǎng)上老api返回的是silk格式的都是過(guò)時(shí)的。

切記:

 

微信開發(fā)者工具拿到的MP3連接是不可用的,只有在真機(jī)上調(diào)試返回的是本地文件的路徑,這個(gè)路徑指向錄音的mp3文件,是可以用的。

如此輕松的拿到mp3文件了,很簡(jiǎn)單吧~

接下來(lái)我們將利用百度語(yǔ)音識(shí)別合成api:http://ai.baidu.com/docs#/ASR-API/top

這里配置微信小程序錄音api

微信小程序語(yǔ)音識(shí)別、合成如何實(shí)現(xiàn)

配置后start的值為:

{
    numberOfChannels: 1,
    sampleRate:16000,
    format: 'mp3',
    frameSize: 50
  }

這樣錄音后取到的mp3文件是百度語(yǔ)音想要的。

方式一 :是不是要問了百度語(yǔ)音識(shí)別不支持mp3格式啊,這就是java后臺(tái)的事了,網(wǎng)上java mp3轉(zhuǎn)pcm格式的博客數(shù)不勝數(shù),讓你的java后臺(tái)去看百度語(yǔ)音api獲取token順便將轉(zhuǎn)換后的pcm格式給轉(zhuǎn)換成文字傳給前臺(tái)吧。

是不是百度一大堆的配置和前端沒有關(guān)系了~

松了一口氣~好強(qiáng)的前端當(dāng)然可以拿到后臺(tái)傳輸過(guò)來(lái)的pcm文件地址再去調(diào)百度api。

選擇方式一跳過(guò)方式二,直接看再續(xù)。

方式二 :如果前端要去做的話,請(qǐng)看api詳解

 

 

地址:http://ai.baidu.com/docs#/ASR-API/top

再續(xù): 這樣錄音后的mp3文件就被轉(zhuǎn)換成了文字。如果想要語(yǔ)音播放的功能,請(qǐng)繼續(xù)往下看~很簡(jiǎn)單

微信小程序api:

wx.createInnerAudioContext(),地址:https://developers.weixin.qq.com/miniprogram/dev/api/createInnerAudioContext.html

看參數(shù);

 

這里要的是src即是MP3的鏈接啊,我只拿到后臺(tái)穿過(guò)來(lái)的文字啊。

對(duì),百度語(yǔ)音合成API,不去百度官網(wǎng)看了,太簡(jiǎn)單了,奉上:

  https://tsn.baidu.com/text2audio?tok=xxxx&cuid=867905025778863&ctp=1&spd=6&lan=zh&tex=xxxx;
  tok:百度語(yǔ)音token, ?。ǐ@取請(qǐng)看額外篇)
  text:你想要播報(bào)的文字。
  這是一個(gè)完整的mp3鏈接,調(diào)用微信小程序api可直接播放。


  額外:百度token的獲取;
  
/*百度語(yǔ)音合成獲取token*/
  export let getBaiDuToken=()=>{
    return new Promise((resolve)=>{
      wx.request({
        url:  'https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=xxxxxxxx&client_secret=xxxxxxxxxx',
        method:'GET',
        success: function(r){
          resolve(r);
        },
        fail(res){
          wx.showToast({
            title:"百度語(yǔ)音合成獲取token接口錯(cuò)誤",
            icon:'none'
          });
        }
      })
    });
  };

這里的client_id和client_secret是注冊(cè)百度語(yǔ)音識(shí)別平臺(tái)在控制臺(tái)中創(chuàng)建應(yīng)用獲取的。


電話咨詢 預(yù)約演示 0元開店