This commit is contained in:
2026-02-12 21:00:02 -08:00
parent 77f8236347
commit 8bdbf227ca
1141 changed files with 1010880 additions and 2 deletions

View File

@@ -0,0 +1,61 @@
/**
* @file streams-audiokit-tf.ino
* @author Phil Schatzmann
* @brief We use a Nano BLE Sense which has a microphone as input to feed a Tensorflow Light Model which recognises the words yes and no.
* @version 0.1
* @date 2022-03-01
*
* @copyright Copyright (c) 2022
*
*/
#include "AudioTools.h"
#include "AudioTools/AudioLibs/AudioMP34DT05.h"
#include "AudioTools/AudioLibs/TfLiteAudioStream.h"
#include "model.h" // tensorflow model
AudioMP34DT05 mic; // Access I2S as stream
TfLiteAudioFeatureProvider fp;
TfLiteAudioStream tfl; // Audio sink
const char* kCategoryLabels[4] = {
"silence",
"unknown",
"yes",
"no",
};
StreamCopy copier(tfl, mic); // copy mic to tfl
int channels = 1;
int samples_per_second = 16000;
void respondToCommand(const char* found_command, uint8_t score,
bool is_new_command) {
if (is_new_command) {
char buffer[80];
sprintf(buffer, "Result: %s, score: %d, is_new: %s", found_command, score,
is_new_command ? "true" : "false");
Serial.println(buffer);
}
}
void setup() {
Serial.begin(115200);
while(!Serial); // wait for serial to be ready
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Info);
Serial.println("starting...");
// Setup tensorflow
fp.kAudioChannels = channels;
fp.kAudioSampleFrequency = samples_per_second;
fp.respondToCommand = respondToCommand;
tfl.begin(g_model, fp, kCategoryLabels, 10 * 1024);
// setup Audiomic
auto cfg = mic.defaultConfig(RX_MODE);
cfg.channels = channels;
cfg.sample_rate = samples_per_second;
mic.begin(cfg);
Serial.println("started!");
}
void loop() { copier.copy(); }