E企盈营销工具技术服务商 热线:4006-838-530

微信小程序实现语音识别

E企盈直播平台营销卖货系统

小程序实现语音识别功能,通过语音的方式代替手动输入查询。经过查询微信小程序api,发现微信并没有对外提供语音识别的api,所以要另外想办法。经过多发查找资料发现了思路。解决思路:微信小程序提供了录音的功能,通过录音的方式,然后把录音文件传到服务器,后台服务器将语音转码,然后再调用第三方语音识别api,我这里使用的是百度的api,最后在将识别的文字返回给微信小程序。直接上代码:小程序端代码:startRecord: function() {if (this.recorderManager == null) {this.recorderManager = wx.getRecorderManager();this.options = {duration: 10000,sampleRate: 16000,numberOfChannels: 1,encodeBitRate: 64000,format: ‘mp3’,frameSize: 50}}this.recorderManager.start(this.options);this.recorderManager.onStop((res) => {console.log(res)wx.uploadFile({url: ‘https://xxxx’,//将录音文件传到后台服务器filePath: res.tempFilePath,method:’POST’,name: ‘file’,header: {‘content-type’: ‘multipart/form-data’},success: function(res) {console.log(res);},fail: function() {console.log(“语音识别失败”);}})});},stopRecord: function() {this.recorderManager.stop()} 服务端代码:注意:需要使用mp3plugin.jar包,网上可以下载到。    // 百度语音识别    public static final String APP_ID = “xxx”;    public static final String API_KEY = “xxx”;    public static final String SECRET_KEY = “xxx”;    /**     * @Description TODO     * @return     */    @RequestMapping(value = “speechRecognition”, method = RequestMethod.POST)    @ResponseBody    public Object speechReco(HttpServletRequest request) {        MultipartFile file = ((MultipartHttpServletRequest) request).getFile(“file”);        try {            byte[] pcmBytes = mp3Convertpcm(file.getInputStream());            org.json.JSONObject resultJson = speechBdApi(pcmBytes);            System.out.println(resultJson.toString());            if (null != resultJson && resultJson.getInt(“err_no”) == 0) {                return resultJson.getJSONArray(“result”).get(0).toString().split(“,”)[0];            }        } catch (Exception e) {            e.printStackTrace();        }        return “”;    }    /**     * @Description MP3转换pcm     * @param mp3Stream     *            原始文件流     * @return 转换后的二进制     * @throws Exception     */    public byte[] mp3Convertpcm(InputStream mp3Stream) throws Exception {        // 原MP3文件转AudioInputStream        BufferedInputStream zipTest=new BufferedInputStream(mp3Stream);        //重新包装一层,不然会报错。        AudioInputStream mp3audioStream = AudioSystem.getAudioInputStream(zipTest);        // 将AudioInputStream MP3文件 转换为PCM AudioInputStream        AudioInputStream pcmaudioStream = AudioSystem.getAudioInputStream(AudioFormat.Encoding.PCM_SIGNED,                mp3audioStream);        byte[] pcmBytes = IOUtils.toByteArray(pcmaudioStream);        pcmaudioStream.close();        mp3audioStream.close();        return pcmBytes;    }    /**     * @Description 调用百度语音识别API     * @param pcmBytes     * @return     */    public static org.json.JSONObject speechBdApi(byte[] pcmBytes) {        // 初始化一个AipSpeech        AipSpeech client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);        // 可选:设置网络连接参数        client.setConnectionTimeoutInMillis(2000);        client.setSocketTimeoutInMillis(60000);        // 调用接口        org.json.JSONObject res = client.asr(pcmBytes, “pcm”, 16000, null);        return res;    } 如果我的文章帮助到了大家,减少大家的弯路,愿意打赏的请扫下面的二维码。也可留言。

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信小程序实现语音识别
分享到: 更多 (0)
E企盈小程序直播营销卖货系统
E企盈直播平台营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏