Using Faust with the Arduino Audio Tools Library

I managed to provide a simple Interface class to use Faust in my Arduino Audio Tools. Faust (Functional Audio Stream) is a functional programming language for sound synthesis and audio processing with a strong focus on the design of synthesizers, musical instruments, audio effects, etc. Faust targets high-performance signal processing applications and audio plug-ins for a variety of platforms and standards. The core component of Faust is its compiler. It allows to “translate” any Faust Read more…

Fast Fourier Transform (FFT) with the Audio Tools Library

The Fast Fourier Transform (FFT) is a mathematical operation that changes the domain (x-axis) of a signal from time to frequency. This is particularly useful for determining the frequency of a signal or for decomposing a signal consisting of multiple frequencies. I had this on my to-do list for quite some time and I finally managed to add this functionality to my Arduino Audio Tools library. Length and Stride The length defines the number of Read more…

Using a ESP32-C3 with my Arduino Audio Tools Library

Today I was testing my Arduino Audio Tools Library with an ESP32-C3 Processor. This is a RISC­ V Single­Core CPU supporting 2.4 GHz Wi­Fi and Bluetooth® 5 (LE). Please note that it does not support classic Bluetooth, so A2DP is not available! First I tried out my simple streams-generator-i2s sketch and there were quite some bad surprises: The Log Level Info is completely disturbing the audio output. This is much worse then on a regular Read more…

Mixing Audio with the Arduino Audio Tools Library

I added some basic simple audio mixing functionality to my Arduino Audio Tools Library where we can mix multiple input audio streams together. Example Sketch We just need to define a Mixer and then add the different input streams that need to be mixed. Optionally we could define a weight parameter to the add method, which we did not do in the example below: #include “AudioTools.h” #include “AudioLibs/AudioKit.h” uint16_t sample_rate=32000; uint8_t channels = 2; SineWaveGenerator<int16_t> Read more…

An Introduction to Arduino Audio Generated by Tensorflow Lite

The goal of this blog is to give a quick introduction into using TensorFlow Lite For Microcontrollers to create Audio Output with the help of the audio-tools library. Hallo World The starting point is the good overview provided by the “Hallo World” example of Tensorflow Lite which describes how to create, train and use a model which based on the sine function. Converting into Audio We can use this model to output the result as Read more…

Tensorflow Lite Microspeach with my Audio Tools Library – The Final Solution

The staring point for doing speech recognition on an Arduino based board is TensorFlow Light For Microcontrollers with the example sketch called micro_speech! I have presented a DRAFT proposal for a Micro Speach API in one of my last posts. In the meantime I have finally managed to adapt the MicroSpeech example from TensorFlow Lite to follow the philosophy of my Arduino Audio Tools Library. The example uses a Tensorflow model which can recognise the Read more…

TF-Lite micro_speech – An ESP32 Audio Provider using Arduino Audio Tools

In one of my latest Blogs I described how the API for an easy to use the micro_speech should look like. However I was struggling to make it work. So I decided to do some baby steps and make the existing example work first with my audio-tools library. We need to implement the (missing) methods defined audio_provider.h: InitAudioRecording GetAudioSamples LatestAudioTimestamp InitAudioRecording Init is easy: we just need to start i2s: TfLiteStatus InitAudioRecording(tflite::ErrorReporter* error_reporter) { AudioLogger::instance().begin(Serial, Read more…

Unstable Zerotier Connections…My WordPress is down!

The last two days this WordPress site was down several times. I restarted my local server and things started to work but when I checked a couple of hours later the connection was down again. I am using Zerotier to connect the public server to my local machine and indeed a ping revealed that the connection was down. Pings to other servers were working, but the machine with WordPress was not reachable. So I started Read more…

An Introduction to Speech Recognition with Arduino

The staring point for doing speech recognition on an Arduino based board is TensorFlow Light For Microcontrollers with the example sketch called micro_speech! There are quite a few alternative Arduino Libraries for TensorFlow Light but honestly the situation is rather dire and I could not find any version which would fit my requirements support multiple microcontrollers (ESP32, RP2040 and Arduino Based MBED Implementations (e.g. Nano BLE Sense)) w/o compile errors no further dependencies It took Read more…

TTS with Pre-Recorded Audio: Removing Silence

In my introductory blog, I have described that it would be cool to remove the silence from the recorded samples. If we look at one of the recordings we can see that they start and end with some silence: I have created a SilenceRemovalConverter which does exactly this. The first parameters indicates the number of samples we consider (if the last n samples were silence we remove the sample), the second the threshold value. Here Read more…