Введение
Микрофоны на базе MAX9814 и INMP441 — одни из самых популярных для DIY-проектов и промышленной акустики. MAX9814 — аналоговый микрофон с предусилителем и AGC, идеален для захвата голоса на расстоянии до 2-3 метров. INMP441 — цифровой MEMS-микрофон с интерфейсом I²S, обеспечивает высокое качество записи без шумов аналоговой линии. Оба модуля часто используются в системах голосового управления, мониторинга шума и аудиоаналитики.
Но как превратить «сырой» аудиопоток в интеллектуальные сценарии: распознавание команд, детекцию событий (звонок, крик, лай), отправку уведомлений в Telegram или автоматическое включение света? Для этого нужен AI-агент, который возьмёт на себя анализ звука и интеграцию с другими устройствами. ASI Biont — как раз такой агент: он подключается к микрофону через ESP32 или Raspberry Pi, обрабатывает аудио в реальном времени и выполняет действия по вашему описанию. Всё настраивается через чат — без сложных панелей и ручного кодирования.
Как AI-агент подключается к микрофону
ASI Biont не имеет ограничений по типу устройства — он подключается к чему угодно через универсальный механизм execute_python. Пользователь просто описывает в чате, к какому устройству нужно подключиться и какие параметры использовать. AI сам генерирует Python-скрипт с нужной библиотекой и выполняет его в защищённом окружении (sandbox). Для микрофонов это обычно выглядит так:
- ESP32 + INMP441: AI пишет код на MicroPython или Arduino (через MQTT или последовательный порт) для чтения I²S-данных с микрофона. Данные отправляются на сервер ASI Biont через MQTT или HTTP.
- Raspberry Pi + MAX9814 (подключён к аналоговому пину через АЦП): AI подключается по SSH к малине, запускает скрипт на Python с библиотекой
sounddeviceилиpyaudio(если установлена), анализирует аудио и отправляет результаты. - Промышленный контроллер с аудиомодулем: AI использует Modbus TCP или OPC UA для передачи аудиоданных (если модуль поддерживает цифровой выход).
Все библиотеки, необходимые для работы (pyserial, paho-mqtt, aiohttp, numpy, scipy), уже предустановлены в sandbox ASI Biont. Пользователю не нужно разбираться в коде — достаточно описать задачу.
Конкретный сценарий: ESP32 + INMP441 + ASI Biont → Telegram-уведомления о превышении шума
Оборудование:
- ESP32 (например, ESP32-WROOM-32)
- Микрофон INMP441 (I²S, 3.3V)
- Пару проводов и макетная плата
Подключение INMP441 к ESP32:
| Пин INMP441 | Пин ESP32 |
|---|---|
| VDD | 3.3V |
| GND | GND |
| SCK (BCLK) | GPIO26 |
| WS (L/R) | GPIO25 |
| SD (DOUT) | GPIO32 |
| L/R (выбор канала) | GND (левый) или 3.3V (правый) |
Настройка ESP32:
1. Установите Arduino IDE и ESP32 board package.
2. Загрузите скетч, который читает I²S-данные, вычисляет RMS (среднеквадратичное значение амплитуды) и отправляет его по MQTT на брокер. Пример кода на Arduino (C++):
#include <WiFi.h>
#include <PubSubClient.h>
#include <driver/i2s.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* mqtt_server = "broker.hivemq.com";
const char* topic = "home/esp32/noise";
WiFiClient espClient;
PubSubClient client(espClient);
#define I2S_WS 25
#define I2S_SD 32
#define I2S_SCK 26
#define I2S_PORT I2S_NUM_0
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { delay(500); }
client.setServer(mqtt_server, 1883);
i2s_config_t i2s_config = {
.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX),
.sample_rate = 16000,
.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
.channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,
.communication_format = I2S_COMM_FORMAT_I2S,
.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
.dma_buf_count = 4,
.dma_buf_len = 1024
};
i2s_pin_config_t pin_config = {
.bck_io_num = I2S_SCK,
.ws_io_num = I2S_WS,
.data_out_num = I2S_PIN_NO_CHANGE,
.data_in_num = I2S_SD
};
i2s_driver_install(I2S_PORT, &i2s_config, 0, NULL);
i2s_set_pin(I2S_PORT, &pin_config);
}
void loop() {
if (!client.connected()) { client.connect("ESP32Client"); }
client.loop();
int16_t buffer[1024];
size_t bytes_read;
i2s_read(I2S_PORT, buffer, sizeof(buffer), &bytes_read, portMAX_DELAY);
// Вычисляем RMS
double sum = 0;
int samples = bytes_read / sizeof(int16_t);
for (int i = 0; i < samples; i++) {
sum += (double)buffer[i] * buffer[i];
}
double rms = sqrt(sum / samples);
// Отправляем в MQTT
char msg[8];
dtostrf(rms, 1, 2, msg);
client.publish(topic, msg);
delay(100); // 10 раз в секунду
}
После загрузки скетча ESP32 начнёт публиковать значение RMS (от 0 до ~32768) в топик home/esp32/noise.
Интеграция с ASI Biont:
Теперь пользователь открывает чат с AI-агентом и пишет:
«Подключись к MQTT-брокеру broker.hivemq.com по топику home/esp32/noise. Получай RMS с микрофона каждые 5 секунд. Если уровень шума превышает 10000, отправляй мне уведомление в Telegram с текстом "⚠️ Превышен порог шума! Текущий уровень: [значение]" и сгенерируй график изменения за последнюю минуту. Токен бота Telegram: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11, chat_id: 987654321.»
AI-агент ASI Biont выполняет следующие шаги:
1. Пишет Python-скрипт с использованием библиотек paho-mqtt (для подписки) и requests (для отправки в Telegram).
2. Запускает скрипт в sandbox (execute_python).
3. Подписывается на топик, каждые 5 секунд проверяет значение.
4. При превышении порога отправляет сообщение в Telegram и строит график с помощью matplotlib.
Пример Python-кода, который генерирует AI (выполняется в sandbox):
import paho.mqtt.client as mqtt
import requests
import matplotlib.pyplot as plt
from io import BytesIO
import numpy as np
import time
# Настройки
BROKER = "broker.hivemq.com"
TOPIC = "home/esp32/noise"
THRESHOLD = 10000
TELEGRAM_TOKEN = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
CHAT_ID = "987654321"
# Буфер для истории (60 значений = 1 минута при 5-сек интервале)
history = []
def on_message(client, userdata, msg):
global history
try:
value = float(msg.payload.decode())
history.append(value)
if len(history) > 60:
history.pop(0)
if value > THRESHOLD:
# Отправка в Telegram
text = f"⚠️ Превышен порог шума! Текущий уровень: {value:.0f}"
requests.post(f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": text})
# Построение графика
plt.figure(figsize=(6, 3))
plt.plot(history, 'r-' if value > THRESHOLD else 'b-')
plt.axhline(y=THRESHOLD, color='gray', linestyle='--', label='Порог')
plt.title("Уровень шума за последнюю минуту")
plt.xlabel("Время (сек)")
plt.ylabel("RMS")
plt.legend()
buf = BytesIO()
plt.savefig(buf, format='png')
buf.seek(0)
# Отправка фото в Telegram
requests.post(f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendPhoto",
files={"photo": buf},
data={"chat_id": CHAT_ID})
plt.close()
except Exception as e:
print(f"Ошибка: {e}")
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, 1883, 60)
client.subscribe(TOPIC)
client.loop_start()
# Держим скрипт 60 секунд (таймаут sandbox - 30 сек, но можно продлить)
time.sleep(60)
client.loop_stop()
Результат: Через несколько секунд после превышения порога пользователь получает Telegram-уведомление с графиком. Всё работает полностью автоматически.
Дополнительные сценарии
- Голосовое управление: ESP32 с INMP441 передаёт аудиопоток на сервер ASI Biont, где AI распознаёт ключевые слова (через библиотеку
transformersс моделью Whisper или Wav2Vec2) и выполняет команды: "включи свет", "выключи вентилятор", "открой шторы". - Детекция аномалий: Микрофон на производстве слушает работу станка. AI анализирует спектр звука (через FFT с помощью
numpy) и при отклонении от нормы отправляет alert в Telegram. - Умный домофон: Raspberry Pi с MAX9814 стоит у двери. AI распознаёт звонок или лай собаки и отправляет уведомление.
Почему это выгодно
- Не нужно писать код вручную: AI сам генерирует скрипт под вашу задачу. Вы просто описываете, что хотите.
- Мгновенная интеграция: Подключение занимает секунды — достаточно дать параметры (IP, порт, топик MQTT).
- Гибкость: ASI Biont поддерживает любые протоколы — MQTT, SSH, Modbus, OPC UA, HTTP. Микрофон можно подключить через ESP32, Raspberry Pi или промышленный контроллер.
- Автоматизация: AI не только собирает данные, но и анализирует их в реальном времени, строит графики и отправляет уведомления.
Как начать
- Зарегистрируйтесь на asibiont.com.
- Соберите схему с микрофоном (ESP32 + INMP441 или Raspberry Pi + MAX9814).
- Откройте чат с AI-агентом и опишите задачу: «Подключи микрофон через MQTT, слушай уровень шума и при превышении 10000 отправляй мне в Telegram».
- AI сам напишет код, выполнит его в sandbox и начнёт мониторинг.
Попробуйте прямо сейчас — убедитесь, насколько быстро и просто AI-агент ASI Biont подключает любые сенсоры и периферию к вашему умному дому или производству.
Комментарии