Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
国民技术_N32G45x
RT-Thread
【N32G457】基于RT-Thread和N32G457的家庭语音助手
发布于 2022-03-24 23:59:29 浏览:997
订阅该版
**应用方案说明及使用场景描述:** 本方案通过N32G457+RT-Thread,实现一个家庭语音助手,提供语音唤醒、多路开关、倒计时、闹钟提醒、天气提醒、新闻播报、音乐播放等功能,为家庭生活增添便利和趣味性。 具体实现功能如下: 1.一键配网(未实现) 2.特定唤醒词唤醒 3.语音控制多路开关 4.语音设置倒计时 5.语音设置闹钟(未实现) 6.语音播报天气提醒 7.语音播报新闻 8.语音控制音乐播放 **硬件平台** N32G45XVL-STB开发板 **软件平台** RT-Thread 4.0.4 RT-Thread Studio **功能模块** ADC Timer msh Serial pyaudio pyserial 百度实时语音识别realtime-asr 百度语音合成tts **全家福** ![image.png](https://oss-club.rt-thread.org/uploads/20220324/2d26a634937ddb002f08616bcfd7c65f.jpg) **初步方案** ![image.png](https://oss-club.rt-thread.org/uploads/20220324/181613fadaec4c8a99cf5d056b24d0ff.jpg.webp) 语音识别是本项目的核心,一般有语音识别模块、在线语音识别、离线语音识别等三种方案。一开始觉得语音识别模块、在线语音识别没有技术含量🐶,离线语音识别才能最大限度的发挥开发板的性能😂。于是春节期间查阅了不少离线语音识别的资料,最终确定了MFCC+DTW的离线语音识别方案。节后事情比较多,中断了很长时间。等再拾起来的时候,发现没有想象中那么简单,像FFT/DCT等DSP运算不是新手能轻易搞定的。距离截稿时间已经没几天了,无奈只能选择降级方案。 **降级方案** 降级后的方案是使用ADC采样音频信号,交由上位机(或ESP8266)进行在线语音识别。ADC进行了配置之后,给VREF接上3.3V,测试正常。可问题还是出现了,首先是自制的音频放大电路的放大能力不足,远达不到3.3v的上限,导致采样精度不足;其次是音频采样需要8k的采样速率,也就是125us采样一次,而系统定时器最小周期默认是10ms,就算配置成1ms也是不能满足需求的。文档里的高精度定时器还需要进一步研究,无奈只能再次降级。 **再次降级** ``` def process_instruct(instruct): """ 处理语音指令 """ instruct = str(instruct).replace("。", "").replace("?", "") cmd = "" voice = "" match instruct: case "小白小白": cmd = "mini_rgb up" voices = "在呢|嗯|爷爷在此".split("|") random.shuffle(voices) voice = voices[0] case "打开红灯": cmd = "light_control red on" voice = "红灯已打开" case "关闭红灯": cmd = "light_control red off" voice = "红灯已关闭" case "打开绿灯": cmd = "light_control green on" voice = "绿灯已打开" case "关闭绿灯": cmd = "light_control green off" voice = "绿灯已关闭" case "打开蓝灯": cmd = "light_control blue on" voice = "蓝灯已打开" case "关闭蓝灯": cmd = "light_control blue off" voice = "蓝灯已关闭" case "天气": cmd = "mini_rgb up" voice = "有你的每一天都是晴天" case "几点了": cmd = "mini_rgb up" now = time.strftime("%Y年%m月%d日%H点%M分%S秒", time.localtime()) voice = "现在是" + now case "早上好": cmd = "mini_rgb up" voice = "morning" case "我想听歌": cmd = "mini_rgb up" voice = "一闪一闪亮晶晶,满天都是小星星" case "倒计时五秒钟": cmd = "count_down 5" voice = "已为您设置好倒计时" case "新闻": cmd = "mini_rgb up" voice = "【一眼新闻丨3月16日贝果财经早间资讯】中国塞尔维亚驾照互认正式生效;106班上海入境国际航班将更改入境点;邓伦偷逃税被处罚并追缴1.06亿元;最高法明确电商不得以拆封为由拒绝退货;茅台回应潘长江直播事件;白俄罗斯和俄罗斯将在能源交易中放弃使用美元;英国将取消所有新冠疫情旅行限制措施;韩国开发全球首个可拉伸无失真元显示技术;美国航天局证实:美航天员将乘俄飞船返回......" case "再见": cmd = "mini_rgb down" voice = "再见" case _: cmd = "mini_rgb down" voices = "不知道你说了什么|不懂".split("|") random.shuffle(voices) voice = voices[0] if cmd != "": logger.info('cmd:'+cmd) cmd = cmd + "\n" cmd = cmd.encode("ascii") n32_serial.write(cmd) if voice != "": tts_file = tts(voice) if tts_file != "": play_audio(tts_file) ``` 再次降级后,使用上位机通过pyaudio进行音频录制,语音片段通过websocket上传至百度实时语音接口进行语音识别,返回的结果转换为指令通过pyserial写入开发板,触发对应动作,同时通过百度语音合成tts生成对应语音回复,通过pyaudio播放。基本实现了前期预定目标。 **总结** 由于是第一个硬件项目,经验有限加上知识储备不足,一开始的想法并没有完全实现出来,只能一再降级,好在也不辱使命,完成了作品。后期我会继续完善这个项目,把离线语音识别方案实现出来,真正发挥这块开发板的价值!💪💪💪 bilibili:https://gitee.com/grinow/home-voice-assistant gitee:https://www.bilibili.com/video/BV1gU4y1o7XJ/
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
OMJC_9014
这家伙很懒,什么也没写!
文章
1
回答
0
被采纳
0
关注TA
发私信
相关文章
1
RT-THREAD在STM32H747平台上移植lwip
2
正点原子miniSTM32开发板读写sdcard
3
反馈rtt串口驱动对低功耗串口lpuart1不兼容的问题
4
Keil MDK 移植 RT-Thread Nano
5
RT1061/1052 带 RTT + LWIP和LPSPI,有什么坑要注意吗?
6
RT thread HID 如何收发数据
7
求一份基于RTT系统封装好的STM32F1系列的FLASH操作程序
8
RT-Thread修改项目名称之后不能下载
9
rt-studio编译c++
10
有木有移植rt-thread(nano)到riscv 32位MCU上
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
a1012112796
20
个答案
3
次被采纳
张世争
12
个答案
3
次被采纳
踩姑娘的小蘑菇
7
个答案
3
次被采纳
用户名由3_15位
13
个答案
2
次被采纳
rv666
9
个答案
2
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
RTT_逍遥
1
篇文章
7
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部