(一)系统输入部分
书接上回,几天的时间已经购买好了所有硬件、以及微信小程序IMDemo、winform 并且通过百度语音识别可以识别我远程传来的消息了。
下面是测试图微信小程序就直接用腾讯IMdemo就可以,直接注册小程序开发。由于没有大洋,所以就智能用预发布版本,一天一更新的那种,哎。。。
下面是winform 端 测试内容
注意的坑:最开始用的是腾讯的语音识别,它只能识别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 <programname>
按照正则卸载匹配的包:sudo apt-get --purge remove 'dotnet-*' //卸载以dotnet-开头的包
如果不想自己手动输入Y确认的话则使用:echo "Y" |sudo apt-get --purge remove 'dotnet-*'
更多参数使用--help查看即可
来自 <https://www.cnblogs.com/morang/p/8324701.html>
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)没办法,迁移吧,改成控制台的吧~!
目前改完还没试呢,希望能成功,祈祷吧 ,睡觉
明天还上班呢,等晚上再战~!