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…

TTS with Pre-Recorded Audio: Preparing the Audio Files

I the last Blog I introduced you to my new Simple TTS Arduino Library which is available on Github. I used the Text-to-Speech (TTS) functionality of Google Translate to generate the mp3 files, which was quite tedious to do manually. Then I executed xxd to generate a .h file from an mp3 recording with: xxd -i mp3file.mp3 header-file.h The header files are then made available with the logic that can be found in AudioDictionary.h Tools Read more…

TTS with Pre-Recorded Audio: Building a Talking Clock

Last year I was digging into Arduino Based TTS Solutions and came to the conclusion that the available engines will not provide any quality audio and therefore recommended to consider an approach which is based on recorded audio samples. Today I took the opportunity to create the new arduino-simple-tts project which is based on this approach. As a proof of concept I have implemented the speaking of numbers and of the output of time. All Read more…

Using stdio.h file operations on Arduino ESP32 to access a SD Drive

So far I was always using the Arduino based SD API to access files on a SD drive. But there are plenty of existing libraries which expect to use stdio.h operations to work with files. So I was digging into the topic and to my surprise this is possible: You just need to mount the SD card: #include <FS.h> #include <SD_MMC.h> #include <stdio.h> void begin() { if(!SD_MMC.begin(“/sdcard”)){ Serial.println(“Card Mount Failed”); return; } } The value Read more…