专栏中心

EEPW首页 > 专栏 > 基于RT-Thread和N32G457的家庭语音助手

基于RT-Thread和N32G457的家庭语音助手

发布人:半导体行业观察 时间:2022-04-15 来源:工程师 发布文章
出处:RT-Thread
作者:王胖胖
原文链接: 基于RT-Thread和N32G457的家庭语音助手 - - 21ic电子技术开发论坛


应用方案说明及使用场景描述:

本方案通过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
全家福

初步方案
 
 
语音识别是本项目的核心,一般有语音识别模块、在线语音识别、离线语音识别等三种方案。一开始觉得语音识别模块、在线语音识别没有技术含量,离线语音识别才能最大限度的发挥开发板的性能。于是春节期间查阅了不少离线语音识别的资料,最终确定了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:Home-Voice-Assistant: 本方案通过N32G457+RT-Thread,实现一个家庭语音助手,提供语音唤醒、多路开关、倒计时、闹钟提醒、天气提醒、新闻播报、音乐播放等功能,为家庭生活增添便利和趣味性。
gitee:【N32G457】基于RT-Thread和N32G457的家庭语音助手_哔哩哔哩_bilibili


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: 国民技术 MCU

相关推荐

飞思卡尔杯-第六届设计应用大奖赛 一等奖获奖论文

单片机模糊控制系统设计与应用实例

NEC MCU 78F0513D开发板使用教程

视频 2009-04-07

飞思卡尔杯-第六届设计应用大奖赛 二等奖获奖论文

电子科技大学--嵌入式系统应用开发技术39

视频 2009-05-07

边缘 AI 加速的 Arm Cortex‑M0+ MCU 如何为电子产品注入更强智能

氮化镓+MCU赋能高效OBC:大联大诠鼎与英飞凌共探车载电源新趋势

电子科技大学--嵌入式系统应用开发技术38

视频 2009-05-07

STC32车规级 MCU中国芯赋能潍柴玉柴,铸就重型柴油机尾气后处理“中国方案”

汽车电子 2026-04-29

英飞凌聚焦人形机器人:传感、电机控制和电源管理成为切入口

飞思卡尔杯-第六届设计应用大奖赛 三等奖获奖论文

内置TinyEngine NPU:TI全新MCU助力边缘AI落地

嵌入式系统 2026-05-12

如何让电机控制更精准高效

飞思卡尔杯-第六届设计应用大奖赛 优秀奖获奖论文1

售价仅1.7元!STC高性价比车规级MCU重塑汽车电子供应链格局

GD32E230F6V6实用指南:为下一个项目选择合适单片机

MXT8051 SoC开发系统的设计方法

视频 2009-06-05

Badge USB OCD 与 78F0513D 使用演示视频

视频 2009-05-20

3D打印“狂飙”背后:兆易创新GD32 MCU多元方案驱动性能升级

AEIF 2026 本周举行,软件定义汽车把车规半导体带到更多环节

更多 培训课堂
更多 焦点
更多 视频

技术专区