送给女儿的礼物 智能物联+人工智能+各种好玩的想法。。。。(程序开发篇 一)

      (一)系统输入部分 

      书接上回,几天的时间已经购买好了所有硬件、以及微信小程序IMDemo、winform 并且通过百度语音识别可以识别我远程传来的消息了。

下面是测试图微信小程序就直接用腾讯IMdemo就可以,直接注册小程序开发。由于没有大洋,所以就智能用预发布版本,一天一更新的那种,哎。。。

送给女儿的礼物 智能物联+人工智能+各种好玩的想法。。。。(程序开发篇 一)_第1张图片

   下面是winform 端 测试内容

送给女儿的礼物 智能物联+人工智能+各种好玩的想法。。。。(程序开发篇 一)_第2张图片

注意的坑:最开始用的是腾讯的语音识别,它只能识别mp3、wav,没办法,只能转码了,网上转码的代码少了点,都是依赖于某个软件进行转码的,我这里用到的是faad.exe 。

 Interaction.Shell(String.Format("faad.exe -o {0} {1}",
                    InQuotes(tempFileName),
                    InQuotes(fromPath)), 
                AppWinStyle.Hide, true, -1);
            //Interaction.Shell(String.Format("lame.exe --preset standard {0} {1}",
            //        InQuotes(tempFileName),
            //        InQuotes(toPath)),
            //    AppWinStyle.Hide, true, -1);

试着听了听音频,转的质量也可以,但是腾讯语音识别就是不好使,识别出来就是嗯嗯 啊啊的。后来一顿猛搜,发现是我转码的问题,所以以上的方案放弃了,从新选用了ffmpeg.exe,据说这个软件比较强大。

  //        //ffmpeg.exe -i 1.m4a 2.wav -b 128000  -ar 16000
        //        Interaction.Shell(String.Format("ffmpeg.exe -i {0} {1} -b:a{2}  -ar{3}",
        //              InQuotes(fromPath),
        //              InQuotes(tempFileName), 128000, 16000),
        //              AppWinStyle.Hide, true, -1);
        //        //Interaction.Shell(String.Format("faad.exe -o {0} {1}",
        //        //      InQuote
        //        //      InQuotes(fromPath)),
        //        //      AppWinStyle.Hide, true, -1);
        //        //Interaction.Shell(String.Format("lame.exe --preset standard {0} {1}",
        //        //        InQuotes(tempFileName),
        //        //        InQuotes(toPath)),
        //        //    AppWinStyle.Hide, true, -1);

后来看百度Ai的时候发现百度直接可以转微信语音格式m4a的音频文本,而且百度调用特别简单,还支持.NET CORE 。我这个程序将来是要部署到树莓派上的(linux),像这种调用方式只能在windows上玩(没测试过linux,但十有八九不行,linux不会识别exe文件的),所以果断放弃掉这个想法,选择百度的接口。

            // 设置APPID/AK/SK
            var APP_ID = "id";
            var API_KEY = "key";
            var SECRET_KEY = "sk";

            var client = new Baidu.Aip.Speech.Asr(APP_ID, API_KEY, SECRET_KEY);
            var data = File.ReadAllBytes(filename);
            var result =  client.Recognize(data, "m4a", 16000);

就这么简单~~,而且速度和腾讯的差不太多;

这样我的系统输入部分基本上完成了,接下来就是树莓派部分了~!

(二)树莓派部分

       说起这个东西,真是坑的一批啊。下面说说我的经历,也是给大家提个醒。由于资金紧张,没办法买全套(500多大洋啊)只能分开买,因为买套餐的话他们很贵的,这帮奸商。。。。

由于本人没怎么碰过linux所以遇到的问题比较多,基本一步一个坎啊 ,总结如下:

 1.转接口的问题: 树莓派用的是micro转接口,因为我家有个手机HDMI的转接口,我以为他俩是一样的呢,回来懵逼了,居然差那么一点点,就一点点啊,也不知道这帮研究线的货们怎么想的,能不能统一一下。所以没办法,又买一条,坐等吧。

2.安装步骤以及问题,基本遇到我就记上了 

(1) 安装putty 注意无需任何端口号,直接输入IP就可以运行,如果仍然报错的话可能时sd卡中没有ssh文件,将sd卡拔下来,新建ssh文件夹就可以了

(2)安装vncview 注意这个也无需任何端口号  直接输入IP+:1就可以了,:1自己设置的,每次登陆必须要设置一次,命令是 tightvncserver :1

(3)切换源 可以百度查看一下 主要切换两个地方 SOURCE.LIST 

(4)安装.net core 第一次安装失败了,原因是我本以为我的树莓派系统是64的,因为ARM是64啊;嘿嘿,坑的一批啊;

所以安装之前要先查看一下   getconf LONG_BIT  显示 32 就是32位。。。

安装.NET CORE

https://www.cnblogs.com/vcode/p/11705939.html

以下是安装失败,有些包需要拿掉具体步骤如下~   

 https://www.cnblogs.com/morang/p/8324701.html 如果其他软件安装错误可以这样卸载

查看已安装的包:dpkg --list

查看正则匹配的包:dpkg --list 'dotnet-*' //查看以dotnet-开头的包

卸载匹配的包:sudo apt-get --purge remove

按照正则卸载匹配的包:sudo apt-get --purge remove 'dotnet-*' //卸载以dotnet-开头的包

如果不想自己手动输入Y确认的话则使用:echo "Y" |sudo apt-get --purge remove 'dotnet-*'

更多参数使用--help查看即可

 

来自


 

3.文件传输,本来以为拔下来卡直接一传就搞定,可是万万没想到的,插到电脑上显示的只有那么一块200多M的盘,其他的都不显示,所以没办法,弄过传输工具吧;

基本上就是搭建FTP服务器的过程具体如下

Filezzail 文件传输配置

https://www.cnblogs.com/qq605490312/p/7792982.html

4.万事具备,考程序喽~~

(1)我程序是用.net core 3.1 winform 开发的,本以为它会全能,但试的时候这东西根本跑不起来。

执行 dotnet  mlgil.dl l报错 ~~

问题就是缺少DESKSDK,于是我去微软官网,一顿猛搜,根本他妈的没有linux的,哎功课没做足啊,部署失败~~

(2)没办法,迁移吧,改成控制台的吧~!

         目前改完还没试呢,希望能成功,祈祷吧 ,睡觉

明天还上班呢,等晚上再战~!

 

 

 

 

你可能感兴趣的:(女儿的生日礼物)