同一句话为什么不该重复生成 MP3:拆分语音资产与播放任务
本地语音平台最初每次发送相同文字都会重新调用 TTS,并生成一份重复 MP3。本文从一次真实重复文件问题出发,解释为什么“语音资产”和“播放任务”必须分开,以及缓存键、历史试听、再次发送和旧数据库迁移应该怎样配合。
阅读文章LEARNING NOTES
从零学习 3D 打印、电子硬件和 AI 产品制作的实践记录,包含元件选型、供电调试、失败复盘与可复现方法。
本地语音平台最初每次发送相同文字都会重新调用 TTS,并生成一份重复 MP3。本文从一次真实重复文件问题出发,解释为什么“语音资产”和“播放任务”必须分开,以及缓存键、历史试听、再次发送和旧数据库迁移应该怎样配合。
阅读文章我把 ESP32-S3 的语音播放从“把固定音频烧进代码”改成了“在网页输入文字后动态播放”。本文记录网页、本地 TTS、任务队列、ESP32、MAX98357A 和喇叭之间怎样连成一条实际可听的链路,以及当前还没有完成的语音输入边界。
阅读文章记录一次已经完成的 ESP32-S3 语音播放实践:先解决喇叭插头无法接入 MAX98357A 的问题,再按 5 根线完成 I²S 接线,经过短时供电检查、三声测试音和五条网页语音验证,确认声音输出链路可用。
阅读文章为了练习焊接,又希望最后得到一个能使用的作品,我选择了一套 YCA2109 电子骰子练习板。这篇文章记录我怎样从一块空板和一袋元器件开始,花大约五六个小时完成安装、焊接和故障排查,最后让 LED 短时点亮。
阅读文章一块刚焊完的 YCA2109 电子骰子通电后 LED 全灭,接入电路板后的电压只有约 2.2V,约 10 分钟后两颗芯片明显发热。本文记录我怎样从电源、按钮、万用表档位和输入二极管一路排查,最终发现两颗 DIP 芯片方向错误;换向后,电子骰子恢复运行并能随机停在不同点数。
阅读文章第一次连接 GMT130-V1.0 时,我只会照着接线表操作。本文把 VCC、GND、BLK、RES、SCK、SDA、DC 分成四类,沿完整显示链路解释它们怎样把 ESP32 代码变成可见画面,以及理解以后怎样安全地重新规划线路。
阅读文章一块有背光却始终没有像素画面的 GMT130-V1.0,驱动芯片和分辨率其实都选对了。本文复盘我如何从软件 SPI Mode 0 黑屏,转向真正应用 SPI_MODE3 的硬件 SPI,并通过五色循环和断电重启完成复测。
阅读文章第一次给 INMP441 焊排针,我跳过练习板直接上手,20 分钟后留下了六个形状各异的焊点。这次翻车让我明白:教程和 AI 能教知识,但动手能力只能从实践中长出来。
阅读文章1.8 英寸 128×160 ST7735 已经能显示主体,右侧和底部却留下固定彩线。本文用一次单变量实测说明如何从画面偏移判断初始化参数不匹配,并验证 INITR_GREENTAB 是否适合当前面板。
阅读文章