美文网首页
微信小程序:语音识别

微信小程序:语音识别

作者: 这是一个假的程序员 | 来源:发表于2018-09-18 09:55 被阅读0次
废话不多说

首先微信有两种录制语音方式

1.wx.startRecord  得到的文件是silk格式的,从版本1.6.0开始,微信就不再维护这个接口了

2.wx.getRecorderManager  得到的文件是mp3格式的,建议使用这个方式来录音

const manager = wx.getRecorderManager();

startRecord: function(e){

    const options = {

      durations: 10000,

      sampleRate: 16000,

      numberOfChannels: 1,

      encodeBitRate: 96000,

      format: 'mp3',

      frameSize: 50

    }

    manager.start(options);

    var that = this;

    manager.onStart(() => {

      console.log('record start')

    })

  },

endRecord: function(e){

    var that = this;

    var filePath = '';

    manager.stop();

    manager.onStop((res) => {

      filePath = res.tempFilePath

      wx.uploadFile({

        ...//上传到后台处理

        success: function (res) {

            that.setData({

              text: res.result

            })

        },

        fail: function (res) {

        }

      })

    })

  }

这样我们就成功拿到录音拉,然后语音识别我用的是百度的API,JAVA SDK

看看都会的拉,就是有一个问题,百度语音在识别的时候,只支持PCM WAV AMR这三个格式,但是我们拿到的是MP3的格式,就需要转换一下格式

解决方案 链接,使用这位老铁的方式有一个问题就是转换格式后的语音根本识别不了,然后我就自己设置了一下参数

//AudioFormat baseFormat = in.getFormat();

//targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16, baseFormat.getChannels(), baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false);

targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 16000, 16,1, 50, 16000, false);

就好了,就是注意下这些参数,在录音的时候需要配置,转换的时候也有,还有识别的时候也有。。

相关文章

网友评论

      本文标题:微信小程序:语音识别

      本文链接:https://www.haomeiwen.com/subject/ejlynftx.html