我来了,这里是 Juwan ,专注于 MicroPython 的开发,最近在折腾 ESP-IDF


#1

最近比较忙,所以我先留个痕迹,方便到时这里成为我的导航大楼,除了回答积木化编程的问题,我还会将我的软件分享到这些地方,也包括一些硬件代码,但我可能会顾不过来解释。

全能型选手,主力还是纯粹的软件,因为我是软工出身的,多复杂的代码我都写过。

现在主攻 ESP32 的 ESP-IDF 和 MicroPython ,如果你对我的作品或成果感兴趣的,欢迎来到这里,查看或是反馈问题等等。

https://live.bilibili.com/855443

https://space.bilibili.com/98649

https://scratch3.codelab.club/

https://blog.just4fun.site(有个人总是把我挂出来还不打码的!)

https://forum.banana-pi.org.cn/c/bpi-bit/micropython

如果我没有看到你们的回复,可以微信 junhuanchen 找到我。

或是到我的群中 892523077 进行提问和问答。

我近期有在开展直播开发的安排,虽然很菜,但也是个学习的过程。

所以,一起加油吧!


#2

@Juwan 终于来了 :smile:


#3

您好,我现在做的项目是面向中学生的AI教学中的语音控制智能小车案例,想达到学生通过scratch或其他图形化编程工具来编写程序,然后将编写好的程序灌注到小车中使其离线实现语音控制的功能。

请问这个工作可以单独由scratch3.0来实现吗,我现在正在尝试scratch3.0的block开发。但发现blockly仿佛更适合我,所以十分纠结是否更换工具。

而且开发过程中如何在特定block里调用本地的语音识别脚本一直未能解决,以及之后如何将编写的程序离线打包灌注到小车里也并没有什么思路,请问能否给一些建议呢或者是学习方向上的意见,多谢您。


#4

@BUPT_zzc 听起来这个工作确实更适合用blockly来做。

中文离线语音识别可能不是很容易,精确度未必如你预期。 英文离线语音识别,目前深度学习领域有些工作能做到很理想的效果。

关于这块的思路,灌入代码、scratch3与blockly的比较,可以参考我之前的两篇文章:


#5

多谢您的建议,您的文章我也看过大多数了(包括随笔 :blush: )


#6

@BUPT_zzc 不客气的,博客里没开评论区,相关技术问题,可以在这个论坛里交流:slight_smile:

@Juwan 近期比较忙,他可能要迟些才回复 。


#7

好的,不过我的技术基础比较薄弱,估计也问不出太有技术含量的问题:stuck_out_tongue_closed_eyes:

不过看了您的文章后我突然又觉得交互式编程好像更适合我们的教育场景,我之前的思路是在js代码里直接调用语音识别的python脚本,以避免重新学习一门新语言,但我了解到的使用Eel来帮助调用python仿佛在scratch编程里不太实用,您对这方面有研究过吗?


#8

你是指 https://github.com/ChrisKnott/Eel 这个项目吗? 我用过这个项目,它使用websocket在js和python直接做了一个桥接。

我不大清楚你的项目希望做的事情是什么。http://codelab-adapter-docs.codelab.club 在连接这块做了比较多的工作。它允许Python和Scratch/Blockly之间互动,而且允许混合两者的功能,诸如利用Scratch3.0中已有的语音识别功能。


#9

对,是这个项目。其实我之前给您发过邮件的不知您是否还记得,我也十分想用adapter来完成我想做的东西,但是它无法在RK-3399开发板上被打开,所以我只好想别的方法来解决问题了。


#10

记得呢。 这篇文章可能对你有帮助: https://blog.just4fun.site/codelab-rpi-mqtt-solution.html

如果你方便寄一块RK-3399开发板给我, 我找个时间在上边build一下。


#11

来了来了,还好有邮件系统的通知~!


#12

HI~
关于这个方面,我最近有准备推出 webduino blockly 的国内语音识别积木块,所以,到时我会完全开源并补充在我的 github 上,如果我还记得这里的话,会提示您参考使用的。

关于语音识别,近期在sc3的微软接口表现的非常好,而我也有在做关于 Js 的前端录音接口,其实语音控制接口,要分作两段开发,第一段是实时的语音录制,并且可以保证被拆解提交给服务器,第二段工作则是将录音文件交由服务器识别反馈结果,所以在开发的时候,明确几点思路。

第一 特定的 block(积木块)您期望调用本地的语音识别脚本,其实不能这样认为,特定的积木块其实只需要能够提供一个录音接口就足够了,甚至是,它可以被设计为,当这个积木存在的时候,就持续的录音,然后根据声音大小的情况来判定是否结束或者是触发识别,这时候就会有一个外部变量来接收识别的结果,所以你的实现思路应该是处理成这种模式,然后只剩下,录音文件的识别服务器,是在本地还是在云端的问题。

第二 目前小车程序的控制方面可以离线到硬件中,至少我维护的 micropython 都可以轻易做到动态修改其中的程序,这就意味着控制硬件,其实就是在开发程序,如果您想做到这样的效果,可以考虑一下学习 micropython for esp32 会加速你的应用和开发。

最后,如果您有问题,我希望选择一种技术,先做一次尝试,如果你无法做出选择,或许你可以考虑继续留意我的开发情况,或者是其他开发方面的成果,也有不少已经可以使用的例子了,如果不在乎硬件成本的话。


#13

谢谢您的耐心回复,虽然我现在暂时决定使用condelab-adapter来尝试解决的我的问题,但您给出的建议仍然给了我很大的启发。但我有两个问题想问一下,

1、由于我将来的应用场景是比较嘈杂的环境,如果让程序一直处于监听状态,感觉灵敏度会很受影响,我自己使用的华为的小艺语音助手在室外都基本无法使用,我目前的想法是设计为点击操作触发识别。

2、对于我所做的指令词语音识别系统,目前的识别方式是录音生成本地wav文件,然后由识别脚本扫描检测到相应的文件进行识别,那么是识别孤立指令词的话,您觉得我这种方式合适吗还是说需要建立一个本地的识别服务器

还有,能否告知一下您的github地址,我十分想要学更多的相关编程知识。再次感谢您的指导。


#14

关于这方面,或许有许多学问值得你深思,因为我最近在忙着建立 micropython 的 esp32 社区和文档资料等,关于开发方面我已经有些落后,我的 github.com/junhuanchen ,有些资料并不会放到主页上,关于语音识别相关的一些资料,我有几个项目是做了这方面的 Js 或 NodeJS 的前端操作,所以关于录音识别部分,你如果很迫切想做到比较完美的效果,我个人建议你去了解一些互联网电话的实现,那个或许可以改善你说的户外的问题,关于一些降噪之类的辅助功能,甚至是改善设备,比如指向性录音设备,但无论从哪个角度来讲,眼下,关键的部分应该还是你说的第二个问题,如果你打算离线识别,那你必然要搭建本地服务器,但事实上,你可以先网络 SDK 操作,之后再调整服务器 API 地址,重新指向你的本地服务器,所以我认为,录音文件的提取比较关键,之后处理识别结果,我们不一定要靠自己实现的服务器,比如送给自带系统的一些AI接口,我想这也是一种最快最好折衷的实现。

如果有那么一天,像手机这样的载体已经内置了基本的语音识别库,那我们只需要关心的就是怎么把录音文件,又快又小又准确的获取到了。


#15

好的,虽然我还不是太明白搭建本地服务器的相关知识,但我会根据您的建议马上跟进的,多谢您指导


#16

#17

这个很 OK,曲线救国,我也是这样想得,如果可以就用这种方法吧,不需要纯粹的 js ,而且借助外部 py 的力量,和我们做 adapter 的思维是一样的。


#18

受到 codelab 的微软语音接口启发,我现在准备了一个插件。