# yiwa **Repository Path**: bobo2cj/yiwa ## Basic Information - **Project Name**: yiwa - **Description**: 伊瓦yiwa,家庭语音控制"假机器人",语音转屏幕页面指令动作,用于家庭数据展示和语音交互,4G内存及以上配置笔记本或平板,借助Flask框架蓝图功能实现插件化开发,技术基础(Flask、SQLite、HTML、jQuery),易于开发。可fork自行增加不同领域插件,或毕业设计,或幼教机构青少年Python学习项目。 - **Primary Language**: Python - **License**: GPL-2.0 - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 374 - **Forks**: 115 - **Created**: 2019-06-15 - **Last Updated**: 2025-12-08 ## Categories & Tags **Categories**: ai, robot **Tags**: None ## README # YiWa #### 介绍 - 伊瓦(伊娃&瓦力),用于家庭数据展示和语音手势交互(如:儿童奖励表,幼童算数,搜索图片,俄罗斯方块等); - 建议设备:4G内存及以上配置笔记本或平板电脑(需要Ubuntu系统);语音和手势识别、短文本语义匹配,本地化运行未调接口。 - 借助Flask框架蓝图功能实现插件化开发,未来将做成一个功能插件商店,可购买安装优质插件功能内容。 - 技术基础(Flask、SQLite、HTML、jQuery),易于开发。内含不同技术示例,各个技术阶段的都能开发自己的功能。 - 大家可以fork自行增加不同领域的专业内容进行孵化,或幼教机构将其改造为青少年Python学习项目。 - 支持Ubuntu, Deepin, Fedora, Mac等类Unix系统下调试开发运行, 不支持Windows. #### Python版本 | 分支版本 | Python版本 | 成功运行 | |----------|-------------|------------------------------------------| | `<=v0.4` | `Python3.6` | `Ubuntu18.10` | | `>v0.4` | `Python3.8` | `Ubuntu20.04` | #### 截图 - 语音状态 ![语音状态](https://images.gitee.com/uploads/images/2021/0203/225429_25798f4a_25066.jpeg "QQ20210203-225408@2x.jpg") - 指令目录 ![指令目录](commands.png) - 俄罗斯方块(支持手势操作) ![俄罗斯方块](%E4%BF%84%E7%BD%97%E6%96%AF%E6%96%B9%E5%9D%97.jpg) #### 实现逻辑 - 接收麦克风语音,本地离线匹配唤醒词(YiWa); - 唤醒后继续接收麦克风指令,本地语音识别,转换成文字; - 接着分应用范围向量搜索匹配指令,匹配成功后,再做文本模糊相似性比对; - 命中指令后操作浏览器跳转指令对应url地址,实现数据展示; - 同时指令和手势配置关联页面动作实现语音控制页面动作; #### 主要技术清单 | 模块 | 技术、模型 | 备注 | |--------|----------------------------------------------------------|---------------------------------------------------| | 依赖库管理 | pip | | | 虚拟环境 | virtualenv | | | Web框架 | flask | https://dormousehole.readthedocs.io/en/1.1.2/ | | 前端页面 | jinja2+html+jquery | | | 数据库 | sqlite | | | 缓存 | memcache | | | 页面自动化 | playwright | https://playwright.nodejs.cn/python/docs/library | | 语音唤醒 | snowboy | https://pypi.org/project/snowboy/ | | 语音识别 | asr_abc[pytorch]、whisper-tiny | https://github.com/glynpu/asr_abc | | 短文本匹配 | text2vec[transformers]、
faiss[sentence_transformers] | https://gitee.com/hf-models/text2vec-base-chinese | | 手势方向识别 | mediapipe | `api/gdr/_mediapipe.py` | | 二维码 | qrcode | | | 文本播报 | kokoro-zh-v1.1 | 已测试,暂未加入,流式耗费资源较高 | #### 安装 [详见Wiki](https://gitee.com/bobo2cj/yiwa/wikis) - 安装依赖 `pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple` - 浏览器自动化 playwright install chromium 安装速度可能比较慢; - 注意snowboy的安装(建议找下载速度较快的gitee搬运仓库)[参考这里](https://www.jianshu.com/p/a1c06020f5fd) #### 启动运行,[详见Wiki](https://gitee.com/bobo2cj/yiwa/wikis) - python3 web.py - python3 yiwa.py - 启动无误后,对着麦克风说`YiWa`激活,`显示所有指令`查看已支持的功能指令; #### 本地开发概述,[详见Wiki](https://gitee.com/bobo2cj/yiwa/wikis) - 最好基于类Linux系统开发(Debian,Ubuntu,Fedora,MacOS) - 可开发基于Flask的插件页面,插件以独包形式,放入apps文件夹下, - 插件必需包含configs.py配置文件 - 指定必需的参数:APPID :str, APPNAME :str, COMMANDS :dict - 插件的__init__.py文件必需导入其他flask页面文件,参考已存在的插件包。 - 插件包的静态文件放入各自包里 - 约定: - 插件必需以单独文件夹形式放入apps文件夹中 - 插件文件夹根目录,必需包含自我介绍的配置文件configs.py文件 #### TODO - 小学算术(11位数以内加减乘除,可设置) - 汉字笔顺(可设置字体和内容) - 随机出一张喜欢的图,照着画画,按照自己的想象去创意(后台可自行配置关键词) - 做个在线升级和安装apps的功能,备份本地apps,从gitee拉取代码,替换apps,重启服务。 - 高德地图通勤(跨省/市,后台可设置) - 时间线功能,适配包含:远古时代(二叠纪、侏罗纪、白垩纪);中国历史编年线;中国古诗词诗人所在年代line - 贪吃蛇(语音控制:前后左右,调头[近食物],停下[按时缩短],加速,跳过,隐身,自动; - 设置:食物个数,食物种类和增长点,穿墙,穿过自身,障碍物,老鹰飞过等;其他:长度排名[时间点|长度]) - :white_check_mark: 俄罗斯方块游戏,[参考这里,谢谢](https://zhangxiaoleiwk.gitee.io/t.html) - 会优先做一个猜水果游戏[苹果、茄子、双星等],在家里和孩子一起玩。 - 人生剩余时间倒计时 - 出门提醒清单(后台可配置) - 相册轮播(后台管理本地图片) - 会试着用docker来解决部署过于麻烦的问题。 - 可能哪天会结束这个项目的更新,我还有很多没学,很多想法需要时间实现,很多有趣和必须要做的事情等着我; - 这里我只是做一个小平台,提供一个思路,希望能够为大家所用。