最近想给自己的代办清单任务微信小程序想加个语音识别识别功能,废话不多说,直接说重点,语音识别使用的是百度语音识别api,因为微信小程序的录音输入文件目前只能是mp3或aac 但是百度语音识别不支持这两种(百度api接口文档上有说明),所以需要把音频格式转换一下,我这边使用的是Alvas.Audio.dll转换的,目前没发现什么问题。

百度云账号地址:https://login.bce.baidu.com/

Alvas.Audio下载地址:https://download.csdn.net/download/u014265946/11094962

 1、登录百度云账号后打开百度语音页面

创建一个语音识别的应用,记录应用的相关信息,如果API Key、Secret Key  ....下载sdk......这里废话就不多说了api文档上面都有 https://ai.baidu.com/docs#/ASR-Online-Csharp-SDK/top

(这是需要注意的是百度提供的sdk引用的Newtonsoft.Json    10.0.0.0 以上的版本,所以如果您项目中使用的是低版本的,必须升级Newtonsoft.Json)

2、下载 Alvas.Audio.dll 引用到项目中,

直接上代码

    public class AudioHelper
    {

        /// <summary>
        /// Mp3 to Pcm
        /// </summary>
        /// <param name="stream"></param>
        /// <returns></returns>
        public static byte[] Mp3ToPcm(Stream stream)
        {
            try
            {
                //mp3 -> mp3 mono 48000 samples per second example
                //int sps = 48000;

                Mp3Reader mr = new Mp3Reader(stream);
                IntPtr formatMp3 = mr.ReadFormat();
                byte[] dataMp3 = mr.ReadData();
                mr.Close();
                IntPtr formatPcm = AudioCompressionManager.GetCompatibleFormat(formatMp3, AudioCompressionManager.PcmFormatTag);
                //mp3 -> pcm
                byte[] dataPcm = AudioCompressionManager.Convert(formatMp3, formatPcm, dataMp3, false);

                return dataPcm;
            }
            catch (System.Exception ex)
            {
                LogManager.DefaultLogger.ErrorFormat("Mp3 to Pcm 出错:{0}", ex.ToString());
                return null;
            }
        }
    }

上传语音到百度云平台上识别语音

    /// <summary>
    /// 百度语音识别帮助
    /// </summary>
    public class BaiduHelper
    {

        private readonly static Asr Client = new Baidu.Aip.Speech.Asr("你的 Api Key", "你的 Secret Key");

        /// <summary>
        /// 语音识别
        /// </summary>
        /// <param name="data">语音内容</param>
        /// <param name="text">文本内容</param>
        /// <param name="format">语音文件的格式,pcm 或者 wav 或者 amr。不区分大小写。推荐pcm文件,</param>
        /// <param name="rate">采样率,16000,固定值</param>
        /// <param name="devPid">默认1537(普通话 输入法模型)。dev_pid 必须为整数类型。参数可选值见REST API文档说明</param>
        /// <returns></returns>
        , )
        {
            text = "";
            Client.Timeout = ;

            var options = new Dictionary<string, object>
             {
                {"dev_pid", devPid}
             };

            var jObject = Client.Recognize(data, format, rate, options);

            )
            {
                text = jObject[].ToString();
                return true;
            }
            else
            {
                return false;
            }
        }
    }

微信小程序录音上传的代码我就就不贴了,网上很多。官方文档介绍的也很详细,整个流程就是微信小程序录音上传到后台,后台转码后通过百度语音识别api上传到百度云平台,返回结果后台返回给前端。

下面也是比较坑的地方,截止到这里,语音识别基本完成了,我做到这里的时候发现将将程序发到服务器上,语音转码总是报错,语音转码不成功,最后查找Alvas.Audio的官方文档中给出了解决方案,

http://www.alvas.net/alvas.audio,articles.aspx#mp3-to-wav-without-desktop-experience

要么安装桌面体验,要么安装库文件,我选择了安装桌面体验,具体怎么安装桌面体验,可以百度一下,(就像安装iis一样)

安装桌面体验参考地址:https://www.cnblogs.com/asdyzh/p/9826976.html

这个时候你发布到服务器上的程序,音频就会正常转换了

下面恭请大家同行们体验一下我的微信小程序,体验一下我实现的语音识别功能,

简单介绍一下我的微信小程序:

这个是个代办清单任务的小程序,和备忘录相似,主要是自己用方便,简单方便,没有复杂的设置,记录自己的规划,让自己的工作生活变的有计划。简单而实用。发现用的人还挺多,为了更简单,就加上了语音识别功能,在编辑任务的时候可以不用手打字,只要说话就能识别成文字,

使用语音识别的正确姿势

长按输入框上按钮,最长可一次性转换10秒语音,

如果文章对你有帮助的话,请打开微信扫一下二维码,点击一下广告,支持一下作者!谢谢!

语音识别功能_微信小程序代办清单任务的更多相关文章

  1. 即速应用_微信小程序开发 http://www.jisuapp.cn/

    即速应用_微信小程序开发   http://www.jisuapp.cn/

  2. 微信小程序语音识别开发过程记录 微信小程序silk转mp3 silk转wav 以及ffmpeg使用

    说说最近在开发微信小程序语音识别遇到的问题吧 最先使用微信小程序录音控件可以拿到silk格式,后来微信官方又支持mp3格式了 但是我们拿到这些格式以后,都还不能直接使用,做语音识别,因为目前百度的语音 ...

  3. Web前端_微信小程序实战开发

    微信小程序开发实战教程 一.微信小程序 它是一种混合开发的方式. 是安装在微信中的程序(一个程序最多2M空间). 1.1 注册 1  2 点击立即注册:进入下方页面 3  4 点击小程序进入表单填写页 ...

  4. 微信语音红包小程序开发如何提高精准度 红包小程序语音识别精准度 微信小程序红包开发语音红包

    公司最近开发的一个微信语音红包,就是前些时间比较火的包你说红包小程序.如何提高识别的精准度呢. 在说精准度之前,先大概说下整个语音识别的开发流程.前面我有文章已经说到过了.具体我就不谈了.一笔带过. ...

  5. 爬虫_微信小程序社区教程(crawlspider)

    照着敲了一遍,,, 需要使用"LinkExtrator"和"Rule",这两个东西决定爬虫的走向. 1.allow设置规则的方法:要能够限制在我们想要的url上 ...

  6. 微信小程序产品定位及功能介绍

    产品定位及功能介绍 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验. 小程序注册 注册小程序帐号 在微信公众平台官网首页(mp.weixin.qq ...

  7. 微信小程序学习指南

    作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  8. 小程序语音红包开发中 汉字转拼音的问题 微信小程序红包开发遇到的坑

    公司最近在开发微信小程序的红包功能,语音红包需要用到文字转拼音的功能. 之前介绍过怎么将中文的汉字转为拼音的,具体看下面这篇文章. 微信语音红包小程序开发如何提高精准度 红包小程序语音识别精准度 微信 ...

  9. 微信小程序导航:官方工具+精品教程+DEMO集合(1月7更新)

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=14764346784612:简易教程:https://mp.weixin.qq.com/debug ...

随机推荐

  1. [ES]ES集群内容灾

    ES是如何实现节点容灾的? 1. ES中的index,首先会进行分片,每一个分片数据一般都会有自己的副本数据,ES分配分片的策略会保证同一个分片数据和自己的副本不会分配到同一个节点上2. 当集群中的某 ...

  2. javascript 事件流的应用之 addEventListener

    原始需求:防止按钮短时间内高频率触发点击事件,由于重复提交导致的业务异常. 图: demo: <!DOCTYPE html> <html lang="en" di ...

  3. JSON数据映射之元素可见控制

    1.效果: 2.demo 源码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  4. SpringMVC(前端设计模式)简介

    一.提供一个入口,让所有的请求都进行 / ,然后再分配给对应的页面,这就是前端设计模式(front) @WebServlet("/") 不过滤 .jsp public class ...

  5. oracle in 多个字段

    oracle 使用in的时候使用多个字段 这个也是刚需啊. 最近有个需求,在一堆商品里面过滤出一些特定的商品类型.供应商的商品(同时满足). 需要的数量不多,但是可能会变化,所以做了两个配置表. 商品 ...

  6. 2019.01.22 hdu5195 DZY Loves Topological Sorting(贪心+线段树)

    传送门 题意简述:给出一张DAGDAGDAG,要求删去不超过kkk条边问最后拓扑序的最大字典序是多少. 思路:贪心帮当前不超过删边上限且权值最大的点删边,用线段树维护一下每个点的入度来支持查询即可. ...

  7. codeforces题目合集(持续更新中)

    CF280CCF280CCF280C 期望dp CF364DCF364DCF364D 随机化算法 CF438DCF438DCF438D 线段树 CF948CCF948CCF948C 堆 CF961EC ...

  8. 2018.11.08 NOIP模拟 水管(简单构造)

    传送门 仔细读题会发现只要所有点点权之和等于0一定有解. 如何构造? 直接当做树来构造就行了,非树边都赋值成0就行. 代码

  9. 2018.10.31 bzoj3339&&3585mex(主席树)

    传送门 双倍经验 直接上主席树,每个叶节点维护这个值出现的最右区间,非叶子节点维护当前值域内所有最右区间的最小值. 查询的时候只用在以root[qr]root[qr]root[qr]为根的树上面二分. ...

  10. win10 VMware ubuntu12.04 虚拟机不能上网【已解决】

    参考  :链接. 本机环境:Ubuntu 12.04 无线上网(连接手机热点). 主机:Win 10. 步骤1:VMware安装运行后,默认会有3个虚拟网络,VMnet0,VMnet1,VMnet8. ...