Files
klubhaus-doorbell/libraries/audio-tools/examples/examples-stream/streams-tf-i2s/streams-tf-i2s.ino
2026-02-16 19:05:11 -08:00

45 lines
1.2 KiB
C++

/**
* @file streams-tf-i2s.ino
* @author Phil Schatzmann
* @brief We use Tenorflow lite to generate some audio data and output it via I2S
* @version 0.1
* @date 2022-04-07
*
* @copyright Copyright (c) 2022
*
*/
#include "AudioTools.h"
#include "AudioTools/AudioLibs/TfLiteAudioStream.h"
#include "model.h"
TfLiteSineReader tf_reader(20000,0.3); // Audio generation logic
TfLiteAudioStream tf_stream; // Audio source -> no classification so N is 0
I2SStream i2s; // Audio destination
StreamCopy copier(i2s, tf_stream); // copy tf_stream to i2s
int channels = 1;
int samples_per_second = 16000;
void setup() {
Serial.begin(115200);
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Warning);
// Setup tensorflow input
auto tcfg = tf_stream.defaultConfig();
tcfg.channels = channels;
tcfg.sample_rate = samples_per_second;
tcfg.kTensorArenaSize = 2 * 1024;
tcfg.model = g_model;
tcfg.reader = &tf_reader;
tf_stream.begin(tcfg);
// setup Audioi2s output
auto cfg = i2s.defaultConfig(TX_MODE);
cfg.channels = channels;
cfg.sample_rate = samples_per_second;
i2s.begin(cfg);
}
void loop() { copier.copy(); }