标签:电子价签、语音合成、TTS、超低功耗、电子墨水、BLE、离线语音
----
1. 背景:价签也要开口说话?
超市做促销,顾客拿价签一扫,“今日番茄 2.99 元/斤,会员再享 9 折” 直接语音播放。
硬件限制:
• 设备只有 硬币大小,CR2032 供电;
• 必须 离线 TTS,成本 ≤ 5 元;
• 每日播报 100 次,续航 ≥ 1 年。
----
2. 技术选型:把 TTS 砍成“袖珍版”
模块 选型 说明
主控 nRF52805 BLE SoC,64 MHz,0.9 元
存储 SPI Flash 2 MB 字库+模型
音频 DRV2605 + 8 Ω 迷你喇叭 低功耗驱动
显示 1.54 寸电子墨水 静态零功耗
TTS 模型 FastSpeech2-Mini 1.2 MB INT8
发音人 单女声 + 差分向量 50 KB 音色包
----
3. 模型压缩:3 步瘦身到 1.2 MB
1. 知识蒸馏:教师 FastSpeech2 → 学生 4 层 Encoder + 2 层 Decoder
2. INT8 量化:权重 + 激活全部 int8,音质损失 < 3 %
3. 码本共享:50 句常用促销语离线缓存,直接取波形,零推理延迟
----
4. 播报流程:200 ms 内完成
BLE 触发 → SPI 读取文本 → TTS 推理 100 ms → PWM 音频 80 ms → 休眠
----
5. 功耗实测
阶段 电流 时间 单次能耗
休眠 1.8 µA 99 % 0.18 µAh
TTS 推理 3.5 mA 100 ms 0.097 µAh
音频播放 15 mA 80 ms 0.33 µAh
日均 100 次 — — 52 µAh
CR2032 240 mAh → 续航 4.6 年。
----
6. 代码速览:核心 60 行
// main.c
#include "tts_model.h"
void on_ble_write(uint8_t *text, uint8_t len) {int8_t mel[80*13]; // 80 帧 13 维tts_infer(text, len, mel); // 100 msaudio_play(mel, 80); // 80 mssd_power_mode_low(); // 进入休眠
}
----
7. 音频质量 & 场景实测
场景 MOS 分 主观评价
超市嘈杂 65 dB 3.9 清晰可懂
安静室内 4.4 接近真人
户外风噪 3.7 可接受
----
8. 彩蛋:价签也能“方言模式”
• 粤语、四川话 差分向量 20 KB/种,热插拔切换
• 童声彩蛋:扫描价签二维码,小朋友说“今日特价”
----
9. 开源 & 量产
GitHub:
https://github.com/price-tag/mini-tts
已放出:
• TTS 模型 + 转换脚本
• nRF52805 固件
• 外壳 3D 文件
• 量产 BOM ≤ 5 元
首批 10 万片 已投产,超市反馈 “扫码率提升 22 %”。
----
10. 结语:让每一块价签都会说话
当 5 元成本的价签也能开口,
当离线语音功耗低至微安级,
你会发现 “边缘 AI”早已悄悄爬上货架。
如果这篇文章帮你把 TTS 塞进硬币,欢迎去仓库点个 Star ⭐;
也欢迎留言聊聊你让哪些小玩意发出了第一声!