My ESP32-A2DP Library is now also supporting the Espressif IDF

The ESP32 Microcontroller from Espressif provides a Bluetooth A2DP functionality that can receive sound data e.g. from your Mobile Phone or send it e.g. to Bluetooth Speakers. I am providing a simple API for this in my ESP-A2DP project. Most users are using this as library in the Arduino IDE or sometimes in PlatformIO. Quite some time ago I made the project independent of the Arduino API, and now I took up the task to Read more…

Audio Encoders and Decoders for Microcontrollers

Unfortunately the available memory on Microcontrollers is quite restricted and we do not get very far by storing a (uncompressed) WAV file e.g. in program/flesh memory, so I started to look into compressed audio formats. On the desktop we can use the FFmpeg project which comes with a rich set of functionality. Unfortunately the situation is much more fragmented for Microcontrollers. I started to collect the relevant libraries and in order to make things simple Read more…

An MP3 Encoder for Arduino ?

Introduction I was looking for a MP3 Encoder Library for Arduino, but unfortunately did not find anything. So I decided to take this up and make LAME available as Arduino Library. LAME is a high quality MPEG Audio Layer III (MP3) encoder licensed under the LGPL. It is considered as one of the best MP3 encoder at mid-high bitrates and at VBR. I used the latest current release version 3.100 which can be downloaded from Read more…

Debugging Segmentation Faults with Clang

I wanted to provide an easy to use Arduino Audio Decoding Library based on libhelix. Unfortunately the ESP32 was crashing w/o any stacktrace and on the desktop it was the first time I was running into Segmentation Faults. I tried to resolve the issue with the help of Google where I found the recommendation to use valgrind to debug the code So I used my Arduino Emulator to debug the code on my McBook and Read more…

Running an Arduino Sketch on your Desktop in Linux, Windows or OS/X

I was struggling with an ugly problem and wished it would be possible to compile and run or debug my Audio Arduino Sketch on my Desktop Computer. So I decided to release my arduino-emulator and extend my arduino-audio-tools project and provide an example how to compile and run it in Windows, Linux or OS/X. You just need to provide an Arduino Sketch as cpp file together with this CMakeLists.txt example file. Just replace the example Read more…

PWM Audio Output support for the “arduino-audio-tools” Arduino Library

In one of my last Posts I have described an approach how we can implement a simple audio output using PWM using the Raspberry Pico. The advantage of this approach is, that we can output audio to almost any GPIO pin, and that it can be used on any other processor which supports PWM. I have extended my arduino-audio-tools project to provide this functionality with a Stream based and a callback based API. The following Read more…

Text To Speach in Arduino – Final Conclusions

In my last couple of Blogs I was comparing the following Text To Speach (TTS) libraries which are available on Arduino: SAM Software Automatic Mouth TTS Text-to-Speech Library for Arduino Flite Festival lite I was hoping to find some TinyML based implementations, but so far without success: I put this on my to-do list for some long cold winter days. As a conclusion we see that the sound quality is directly related with the memory Read more…

Text To Speach in Arduino using Flite

In my last Blogs I looked at SAM and Arduino/TTS. I was putting high hopes in CMU Flite: CMU Flite (festival-lite) is a small, fast run-time open source text to speech synthesis engine developed at CMU and primarily designed for small embedded machines and/or large servers. Flite is designed as an alternative text to speech synthesis engine to Festival for voices built using the FestVox suite of voice building tools. I was extending the project Read more…

Text To Speach in Arduino using TTS

In my last Blog I looked at SAM. Now it is time to look at jscrane/TTS. TTS is a popular Text-to-Speech Library for Arduino which is supporting many different Microcontroller Architectures. I was extending the project, so that I could receive the data as stream: My extended project can be found on Github. Like for SAM, the Arduino sketch for the Webserver is also quite small because I am using my arduino-audio-tools . TTS is Read more…

Text To Speach in Arduino using SAM

I started to look into the topic of Text to Speach Synthesis (TTS) on Microcontrollers with the final goal to compare different engines. Since I don’t want to be bothered to connect the Microcontroller to any output device, I decided to just render the result to a Webbrowser with an ESP32 before committing to any solution. Unfortunately there are no Arduino engines which would provide the result as a stream, so I started to “extend” Read more…