[HN Gopher] I made a 10C/ MCU Talk
       ___________________________________________________________________
        
       I made a 10C/ MCU Talk
        
       Author : iamflimflam1
       Score  : 163 points
       Date   : 2025-10-29 14:12 UTC (8 hours ago)
        
 (HTM) web link (www.atomic14.com)
 (TXT) w3m dump (www.atomic14.com)
        
       | docdeek wrote:
       | Interesting, though before clicking I thought the headline might
       | be referring to a very poorly paid presentation about Marvel
       | movies.
        
         | pdntspa wrote:
         | Ha, seconded. I hate how acronyms get repeated between domains.
         | Makes for very confusing reading if you're not part of the in-
         | group.
        
       | pjc50 wrote:
       | Nice work. Especially referencing the TI prior art of the Speak
       | and Spell. This kind of synthesis was quite prevalent in the
       | early 80s - school BBC Micros had a ROM which let you "*SAY" a
       | phrase. Classic Macs had MacinTalk.
       | 
       | 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...
        
       | thrtythreeforty wrote:
       | This is great. Missed opportunity for a low-pass RC filter on the
       | speaker circuit - if you know you're driving an 8kHz sample rate,
       | you can design your filter with that cutoff, and it'll sound way
       | better (it'll get rid of the buzzy quality).
        
         | kragen wrote:
         | This may be essential if you're connecting it to an audio
         | amplifier. I learned this the hard way by burning out someone
         | else's very expensive tweeters with 31.25kHz PWM.
        
       | MisterTea wrote:
       | Could hang an i2c flash chip off that thing for more storage and
       | still have enough IO pins for serial coms and a spare IO pin.
        
       | ctoth wrote:
       | You should be able to do it all on-device, check out SAM, the
       | Software Automatic Mouth. The actual data in the *_tabs files:
       | 
       | https://github.com/ctoth/SAM/tree/master/src
        
         | thomassmith65 wrote:
         | The sound in the video seems more sophisticated than TTS. It
         | seems more like the result of analyzing a clip of digital
         | audio, and turning it into a series of TTS phonemes.
         | 
         | Assuming SAM is a faithful port of the original, it converts
         | text into phonemes according to a bunch of pronunciation rules.
        
       | Findecanor wrote:
       | I saw another audio project on the same microcontroller (family)
       | posted a few days ago: _ModPlayRISCV_ It plays a tracker MOD.
       | using PWM with a low-pass filter. It resamples /scales all
       | samples at varying rate/volume into a ring buffer which gets fed
       | to the PWM comparator by DMA.
       | 
       | https://github.com/cpldcpu/ModPlayRISCV
        
       | colechristensen wrote:
       | First I thought you made a lecture on MCUs which was available
       | for viewing in exchange for $0.10
       | 
       | 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
        
         | SideburnsOfDoom wrote:
         | It has worse misreadings, it could be a cheap lecture on the
         | "Marvel Cinematic Universe". (It's about cheap MicroController
         | Units.)
        
         | SJC_Hacker wrote:
         | This is why I prefer mC
         | 
         | Although I guess that can also be confused with micro Couloumbs
        
         | NetMageSCW wrote:
         | Time flies like an arrow.
        
           | kragen wrote:
           | I like it too.
        
             | brucehoult wrote:
             | Fruit flies like a banana.
        
               | kragen wrote:
               | Sometimes it _is_ one.
        
       | zahlman wrote:
       | > I considered a few encoding options for compressing the audio.
       | 
       | The presentation of this part seems extremely padded out to me,
       | ironically enough.
        
       | NoiseBert69 wrote:
       | These CH32 mikrocontrollers are great and dirt cheap. I've build
       | a small DC motor controller with them to control a toy robot:
       | https://github.com/h0lad/MiniSpeedController
       | 
       | 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.
        
         | amelius wrote:
         | Can you change the polarity (direction) of the DC motors with
         | this board?
        
           | NoiseBert69 wrote:
           | Yes. The DRV8837 has a pin for the direction. It's a
           | H-Bridge.
        
         | MisterTea wrote:
         | Nothing irks me more than "check out my neat-o PCB design" and
         | there's no schematic.
        
           | NoiseBert69 wrote:
           | Feel free to have a look at the "pcb" folder.
        
             | MisterTea wrote:
             | Sorry, but I am not installing KiCAD or cloning a repo just
             | to look at a schematic. Since the beginning of time
             | electronics hobbyists have been posting schematics in
             | bitmap or pdf format. It should be in the readme.
        
               | NoiseBert69 wrote:
               | Sorry my friend - but embedding static PDFs in Git is my
               | opinion an anti-pattern. The KiCad (or EDA) sources
               | should be the single source of truth, with visuals
               | generated/exported locally when needed.
               | 
               | If you don't like it.. well it's a free world and every
               | engineer has it own preferences :-)
        
               | MisterTea wrote:
               | Neglecting a schematic is an anti-pattern. And I never
               | said it had to be PDF. Besides, of all the crap people
               | shove in Git repos, a simple bitmap that compresses well
               | and conveys extremely useful information has to be the
               | least offensive.
        
               | NoiseBert69 wrote:
               | Maybe an idea for the next project: setting up a CICD
               | chain which auto-generates them for releases. Will take a
               | piece of your critics with me.
        
               | kragen wrote:
               | That's an excellent idea!
        
               | sampullman wrote:
               | I'd agree with you in the past, when KiCAD didn't work as
               | nicely with git. And for a professional project, I'd
               | still at least keep snapshots of every milestone with
               | "compiled" output.
               | 
               | 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.
        
               | kragen wrote:
               | I already had KiCad installed, so I uninstalled it to see
               | how long it would take. It took me 51 seconds to clone
               | the repo and reinstall KiCad. I thought this wasn't too
               | bad.
               | 
               | 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.
        
           | amoose136 wrote:
           | It's kicad which means you can use kicanvas to view it. For
           | example: https://kicanvas.org/?github=https%3A%2F%2Fgithub.co
           | m%2Fh0la...
        
             | jimmyswimmy wrote:
             | What an amazing tool: it loads and displays the kicad
             | native files in a simple web browser, but moreover - you
             | don't have to be the intermediary, cloning some repo and
             | then uploading the individual files to a website.
             | 
             | 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.
        
             | NoiseBert69 wrote:
             | Oh.. I love this web tool. Thanks for showing!
        
             | MisterTea wrote:
             | I use KiCAD so I know it well. Unfortunately that site is
             | in alpha and I am unable to zoom in to see the schematic
             | clearly.
        
               | kragen wrote:
               | For me control-mousewheel zooms and shift-mousewheel pans
               | horizontally.
        
               | amelius wrote:
               | Use Ctrl+mousewheel to zoom.
               | 
               | (Unfortunately, it does not zoom on the cursor but on the
               | center of the screen).
        
               | ssl-3 wrote:
               | It seems that a person can also click to select an object
               | on the board, and then use the "zoom to selection" button
               | near the bottom-right of the viewport, to bring things up
               | to a more-visible size and place [some of] them on-
               | 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.)
        
               | inanutshellus wrote:
               | FWIW - On my laptop (track pad), I expected to click-drag
               | or ctrl-drag to move it, but on a track pad it's two-
               | finger swipe to move it left/right. then pinch zoom.
        
               | stronglikedan wrote:
               | pebkac error
        
         | gadgetoid wrote:
         | A pin planner- without the code gen of STM32Cube- would be
         | doable as a website.
         | 
         | 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.
        
       | dlcarrier wrote:
       | Can you export the schematic and Gerber files to a PDF file? A
       | lot of open source projects do this, and it makes it much easier
       | to tell what's going on, with software pretty much everyone
       | already has on their computer.
        
       | kragen wrote:
       | It's probably worth mentioning the 2400bps (300 bytes per second)
       | LPC10 codec built into SoX. If you have SoX installed, try
       | rec -t lpc10 speech.lpc
       | 
       | and then speaking into your microphone for ten or fifteen seconds
       | before you ^C it. Then play it back with                   play
       | speech.lpc
       | 
       | It will sound very robotic but pretty comprehensible, at least
       | with an adult male voice in English, and it preserves a lot of
       | the prosody and enunciation that is so hard to get out of speech-
       | synthesis packages.
       | 
       | 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.
        
       | sehugg wrote:
       | Even easier is the 1-bit DPCM codec used on the NES. Go up or
       | down one step each sample depending on the next bit. You can't
       | get a square wave out of it, only a triangle, but it has a
       | nostalgic quality.
        
         | a_cardboard_box wrote:
         | The NES DPCM runs at up to 33kHz, so it actually has double the
         | bitrate of the 2-bit 8kHz encoding used in the article. If you
         | run it at 16kHz to match the bitrate, it will sound much worse.
        
       | kazinator wrote:
       | Programmers made 8 bit micros talk in the 1970s, using nothing
       | but square wave pulses sent to the speaker.
        
       ___________________________________________________________________
       (page generated 2025-10-29 23:01 UTC)