Is simple voice synthesis (just digits 0-9) possible with Cortex-M0+ with 4kB flash

cortex-mspeech

I'm working on a little side project with the LPC810 (Cortex M0+ 32 bit ARM MCU, 8 pin DIP package, 4kB flash, 1kB SRAM). I need a UI to convey to the user a temperature setting. I only have about 2 pins spare to implement the UI…. so using LEDs is going to a challenge.

I had an idea of using just one pin to drive a speaker or peizzo buzzer and convey the temperature in speech. Just the digits 0 – 9 in english is all I need. Storing 0-9 in PCM is out of the question with so little flash. So I was wondering is anyone aware of open source code that would allow for very high compression of a small dictionary of words what would be light enough on CPU/RAM to work with a Cortex M0 class MCU? (I have a strong hunch this is plain out of reach of low end Cortex M0 MCUs without external memory).

Best Answer

While this may not be a complete, independent and ready-to-use answer, but I think you can get some neat ideas, implement (or port) it on Cortex-M0. Here I assume that from a computation power and resource standpoint, a Cortex-M0 has more to offer, than the popular Atmel 8-bit AVR (ATmega328P) running on an Arduino.

Here are 2 projects, that manage to use the PWM pin of Arduino and an RC-filter circuit to play out synthesized speech. Of course, we are not looking at hi-fidelity audio, but something that is recognizable. Also do note, that apart from the need for a PWM capable pin, your micro-controller might be very busy during the synthesis, so much so that, it might spend most of it's cycles doing it. Software PWM would put further strain.

Now for the 2 projects:

PS> Personally, I've not implemented them, but looked at them for a project.