[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)