加载失败
作者展示了在单枚成本约 0.1 美元的 CH32 系列微控制器上实现“会说话”或播放语音的做法,演示以 PWM 驱动扬声器并讨论如何压缩与合成语音。评论从两条主线展开:一是硬件与工具链(CH32 的集成 PHY、Mounriver Studio、引脚规划短板、KiCad 文件共享与浏览器查看工具 kicanvas,以及 OpenWCH 上的许可/HAL 标注问题);二是软件与编码权衡(SoX 的 LPC10、SAM、AMR、1‑bit DPCM 等在存储、解码体积与音质间的折衷,以及用 PWM+低通滤波或 DMA+环形缓冲播放 MOD 的实现)。评论者给出具体可行的改进建议,例如加 I2C Flash 扩展存储、为 PWM 输出配低通 RC 滤波保护扬声器、以及用小型 H‑Bridge(如 DRV8837)控制电机方向。讨论同时夹杂怀旧与幽默(提到 Speak & Spell、MacinTalk,以及标题中 MCU 的歧义笑话),呈现出既务实又轻松的技术社区氛围。
评论者普遍赞扬 CH32 系列芯片极其廉价且功能丰富,较大型号居然集成了 USB HS PHY、USB‑C(5Gbps)和 10/100M 以太网等硬件接口,使其在低成本嵌入式项目中具有吸引力。开发体验上 Mounriver Studio 被认为“还不错”,没有强烈动机把所有东西迁移到 CMake/VSCode,但官方工具在引脚规划方面明显不足,依赖 datasheet 人工查找引脚功能和互斥关系很痛苦。有人对比指出 STM32CubeIDE 在引脚选择和互斥功能可视化上做得好(选外设即高亮可用引脚),并建议可以做成网页版的 pin‑planner(举例 rp2350b.pinout.xyz)。另外也提到 OpenWCH/GitHub 上的许可与 HAL 版本标注混乱,正确的 SPDX 标签和对应 HAL 版本有时不好找,增加了移植与长期维护成本。
许多评论抱怨项目仓库只放了 KiCad 源文件却没有在 README 里附上易查看的原理图快照,浏览者不愿为看一个示意图去安装工具或克隆仓库。kicanvas 被多次推荐为能在浏览器直接加载 GitHub 上的 KiCad 文件的工具,用户称其非常方便但也有人抱怨缩放或交互(平移/缩放手势)体验和兼容性还需完善。另外出现了 KiCad 版本兼容问题:有人在 51 秒内克隆并安装 KiCad 仍被新版文件阻止打开,说明仅保留源文件可能给不同平台/旧版本用户带来障碍。折中的建议包括在 CI 中自动生成并随 release 发布导出的 PDF/位图快照,以兼顾“源文件为单一真实来源”和普通读者快速查看的需求。
关于在极小 flash/资源上实现可懂语音,评论提出多种折衷与实现参考。有人建议利用 SoX 中的 LPC10(约 2400 bps,≈300 字节/秒)以极小存储保存较长语音,但 SoX 的 LPC10 解码实现经 Fortran→C 转换后体积较大,可能无法塞进 CH32 的 flash;因此软件解码体积与 MCU 存储是关键瓶颈。也有评论推荐更简单或更复古的方案:SAM(Software Automatic Mouth)可把文本转为 phoneme 规则合成,NES 风格的 1‑bit DPCM 则用最少数据产生怀旧音色;硬件上普遍建议用 PWM 输出配合低通 RC 滤波以去除 PWM 的“嗡嗡”感并保护扬声器。另有实际工程案例可借鉴:ModPlayRISCV 在类似 MCU 上通过把重采样后的样本写入环形缓冲、由 DMA 送到 PWM 比较器并加低通滤波播放 tracker MOD,展示了在资源受限平台上播放复杂音频的可行模式。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]
评论中给出若干直接可行的硬件改进建议:把 I2C Flash 挂到 MCU 上可以显著扩大存储空间,用于放压缩音频或样本,同时仍保留串口等必要 IO。关于电机控制,有人问能否反转直流电机极性,回复指出常见的小型 H‑Bridge(如 DRV8837)带有方向引脚,可直接实现方向翻转。原贴衍生出作者已用 CH32 做过小型 DC 电机控制器并控制玩具机器人,说明在同一平台上既能实现外设控制也能做基本音频输出,只要合理分配 IO 与外设资源。总体结论是:扩展外部存储与选用合适的驱动芯片是最直接的硬件升级路径。
许多评论以怀旧和幽默的方式把该项目放入更长的历史脉络:提到 TI 的 Speak & Spell、BBC Micro 的 *SAY 以及 Mac 的 MacinTalk,指出早期 8‑bit/微控制器时代就有可懂的语音合成实现。也有人回忆程序员在 1970s/80s 用方波或极简合成器做到“会说话”的经验,强调低资源合成语音的传统与魅力。此外标题引发大量玩笑,例如把 MCU 误读为“Marvel Cinematic Universe”或把“10¢”理解为“0.1 美元的讲座”,社区氛围因此既技术向又轻松。整体上评论既提供技术参考也带有怀旧与调侃,帮读者从工程与文化两方面理解该项目的意义。
CH32 / CH32V003: CH32(由 WCH 推出的一系列超低成本微控制器),CH32V003 是其常见的 RISC‑V 变体,经常被用于极低成本嵌入式与原型项目。
Mounriver Studio: Mounriver Studio(针对 CH32 系列常用的开发环境/IDE),评论中被认为可用但在引脚规划等方面比不上 STM32CubeIDE。
STM32CubeIDE: STM32CubeIDE(STMicroelectronics 的官方 IDE),内置直观的引脚规划器、外设互斥可视化与代码生成功能,常被用来快速配置 STM32 引脚与外设。
KiCad: KiCad(开源电子设计自动化 EDA 工具),用于绘制原理图和 PCB 布局,项目通常以源文件为主并可导出为 PDF/图像供分享。
kicanvas: kicanvas(一个 Web 工具),可以直接在浏览器加载并查看 GitHub 上的 KiCad 项目文件,方便不想安装 KiCad 的用户在线浏览设计。
LPC10: LPC10(低比特率线性预测语音编解码器),SoX 提供 2400 bps 的实现,能以极小的数据率保存语音,但其解码实现体积和复杂度可能不适合超小 MCU。
SAM (Software Automatic Mouth): SAM(Software Automatic Mouth),一种早期基于规则的 TTS 引擎,通过发音规则和 phoneme 表合成为简洁可懂的语音,数据量小且易于移植。
PWM: PWM(Pulse‑Width Modulation,脉宽调制),MCU 常用来生成音频输出的方波,通过低通滤波器可近似还原模拟音频并消除高频噪声。
1‑bit DPCM: 1‑bit DPCM(单比特差分脉冲编码调制),NES 等早期平台使用的简单压缩/播放法:按位决定增/减一步,能以极低数据率产生复古三角波状音色。