Arduino Low Latency Streaming of Audio Data – Using ESP-Now ?

This blog continues the topic Low Latency Streaming of Audio Data and we have a closer look at ESP-NOW. This is a protocol developed by Espressif, which enables multiple devices to communicate with one another without using Wi-Fi. I was missing a proper implementation that is based on Arduino Streams, so I have added one to my Arduino Audio Tools Library. Here are the related example Arduino sketches: communication-espnow-send communication-espnow-receive communication-espnow-receive_measure When I was doing Read more

Arduino Low Latency Streaming of Audio Data – Using TCP/IP ?

Introduction Traditional streaming protocols, such as RTSP and RTMP, support low-latency streaming. These are quite complex to implement and I did not find any efficient library which would work properly on a microcontroller e.g. on an ESP32. I tried to migrate the live555 project, but so far I did not manage to have it working properly. We could use Bluetooth with my A2DP library but the lag (of more then half a second) is too Read more

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