I Made a 10¢ Mcu Talk
Posted2 months agoActive2 months ago
atomic14.comTechstoryHigh profile
supportivepositive
Debate
20/100
MicrocontrollersSpeech SynthesisEmbedded Systems
Key topics
Microcontrollers
Speech Synthesis
Embedded Systems
The author created a speech synthesis project using a $0.10 CH32V003 microcontroller, sparking discussion on audio compression, filtering, and potential applications.
Snapshot generated from the HN discussion
Discussion Activity
Very active discussionFirst comment
39m
Peak period
40
0-6h
Avg / period
6.6
Comment distribution53 data points
Loading chart...
Based on 53 loaded comments
Key moments
- 01Story posted
Oct 29, 2025 at 10:12 AM EDT
2 months ago
Step 01 - 02First comment
Oct 29, 2025 at 10:52 AM EDT
39m after posting
Step 02 - 03Peak activity
40 comments in 0-6h
Hottest window of the conversation
Step 03 - 04Latest activity
Oct 31, 2025 at 7:27 PM EDT
2 months ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
ID: 45747112Type: storyLast synced: 11/20/2025, 4:26:23 PM
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
https://github.com/ctoth/SAM/tree/master/src
Assuming SAM is a faithful port of the original, it converts text into phonemes according to a bunch of pronunciation rules.
Then I thought you made a lecture on MCUs where the device was available for purchase generally for $0.10.
Then I thought with an MCU valued at $0.10 you generated speech
English... sigh
Although I guess that can also be confused with micro Couloumbs
The bigger ones have PHYs for USB HS, USB-C (5Gbps) and 10/100M Ethernet integrated (!). And their development environment (Mounriver Studio) isn't too bad - I didn't had the immediate urge to port everything to CMake/VSCode.
But they need some kind of pin planning tool. It's awful to use the datasheet and find the correct pin functionalities and their mutual exclusions... STM32 mastered this with their STM32CubeIDE tool: select a feature (like USART1) and the right pins light up - alternate pins are easy to locate.
They also should clean up their license mess on OpenWCH (their GitHub page). Lots (all?) of their HALs are Opensource - but the right version with right SPDX tags are often a bit hidden.
If you don't like it.. well it's a free world and every engineer has it own preferences :-)
But the joke was on me — when I tried to open the PCB file, KiCad said: "KiCad was unable to open this file because it was created with a more recent version than the one you are running. To open it you will need to upgrade KiCad to a version dated 12/29/2024 or later."
So I now think your position is reasonable. Also I think I need to upgrade Debian.
Always have the right version for it "locked". It works well with most tools except those that save stuff in the .config folder as it messes up isolation.
If you find the nix language daunting, for basic stuff like nix shell setup its easy but also LLMs are good for it.
But for a hobby project I really don't see the need. It takes a few extra minutes to install KiCAD, clone the repo, and view the schematic at any point in time.
(Unfortunately, it does not zoom on the cursor but on the center of the screen).
Vertical panning is then accomplished by rolling the scrollwheel. Horizontal scrolling can be accomplished by tilting the scrollwheel on a mouse that is so-equipped.
(Perhaps bizarrely, I was unable to discover any other way to pan.)
I wish that existed for more weird binary formats. Altium have 365 but you have to have signins to use it, and they cost named-user seats.
Older ones were Eclipse with the serial numbers filed off.
I made a basic one for the RP2350- https://rp2350b.pinout.xyz/
Though STM32Cube has a very different approach, handles lots of mutually exclusive features and peripherals and a bunch of extra stuff for controlling code gen IIRC.
12KiB of data at 300 bytes per second would be 41 seconds of recorded speech.
Decoding the LPC10 data on the CH32V003 might be tricky. On amd64, running `make CFLAGS=-Os` followed by `ld -r -o tmp.o *.o` inside sox-14.4.2+git20190427/lpc10 yields a tmp.o with 25243 bytes of text (including .rodata, etc.) and 356 bytes of data. I'm not optimistic that RISC-V would compress that to fit inside the CH32's flash. And I find the code in that directory inscrutable; it's Fortran that's been compiled to C.
Still, it seems plausible that you could massage the LPC10 data into a format that something like Talkie would understand.
From distant memory you got quite a bit more compaction.
The presentation of this part seems extremely padded out to me, ironically enough.
https://github.com/cpldcpu/ModPlayRISCV
Another codec which might be interesting to try but is considerably more complicated is AMR, from GSM: https://en.wikipedia.org/wiki/Adaptive_Multi-Rate_audio_code...
The pwm on the CH32v003 is pretty similar to the STM32 implementation, so porting might not take much.
It would be really cool to have phenome/text based vocabulary like talkie on that little chip! Since it uses text/phenomes it can have a large vocabulary for such a tiny chip. It would be possible to have about 1500 words in an 8k dictionary, 2k for code, and 4K for the phenome engine and still fit in the 16k of flash it comes with.
Incidentally, there is another riscV from WCH that also features BLE, 200K+ of flash, and 18K of RAM in an ESSOP-10 package (same size as the SOP8 but only 4 GPIO). It’s around $0.41 in Q1. The vocabulary with that would be 20k plus words with 100k left for code lol.
It’s just nuts what a dollar will get you these days in that space.