Введение
Представьте: вы говорите «включи свет» — и лампочка загорается. Или «запиши лекцию» — и AI начинает транскрибировать аудио в текст, сохраняя файл в облако. Это не фантастика, а реальная интеграция микрофона MAX9814 или INMP441 с AI-агентом ASI Biont. Микрофоны на базе MEMS (INMP441) и электретные с предусилителем (MAX9814) — одни из самых популярных для DIY-проектов: они дёшевы (от $2), просты в подключении к ESP32 и дают качественный звук для распознавания команд.
ASI Biont — это AI-агент, который подключается к любому устройству через диалог в чате. Вы просто описываете задачу: «подключи микрофон на ESP8266 к AI, слушай команды и отправляй в Telegram», — и AI сам пишет код, настраивает MQTT или SSH и запускает интеграцию. Никаких панелей управления, кнопок «добавить устройство» — только чат.
В этой статье я покажу, как подключить микрофон MAX9814 к ESP32 и AI-агенту, настроить голосовое управление с распознаванием команд через Telegram, и автоматизировать сбор аудиоданных. Вы узнаете:
- какие схемы подключения работают надёжно
- как AI подключается к ESP32 по MQTT и SSH
- как реализовать сценарий «сказал — сделал» без программирования вручную
Способ подключения: MQTT + SSH
Для микрофона на ESP32 используем комбинацию двух способов:
-
MQTT — для передачи аудиофрагментов и команд. ESP32 публикует WAV-данные в топик
audio/commands, а AI подписывается на него черезpaho-mqtt. При получении фрагмента AI запускает распознавание (черезspeech_recognitionили OpenAI Whisper API) и публикует команду обратно в топикaudio/response. -
SSH — для настройки и обновления скрипта на ESP32. AI подключается к ESP32 по SSH (если на нём MicroPython с FTP/SSH-сервером) или через WebREPL, загружает новую версию прошивки.
Почему именно MQTT? Это лёгкий протокол, который ESP32 поддерживает «из коробки» через библиотеку umqtt.simple. Он не требует постоянного соединения — устройство может спать между командами. А AI в облаке ASI Biont (на Railway) легко подписывается на топики через paho-mqtt.
Схема подключения MAX9814 к ESP32
| Пин MAX9814 | Пин ESP32 | Описание |
|---|---|---|
| VDD | 3.3V | Питание (3.3V, не 5V!) |
| GND | GND | Земля |
| OUT | GPIO34 | Аналоговый выход (ADC) |
| GAIN | GND | Усиление 60 дБ (по умолчанию) |
| AR | 3.3V | Режим AGC (авторегулировка усиления) |
Важно: MAX9814 работает от 2.7V до 5.5V, но при 5V на выходе может быть 2Vpp — ESP32 с 3.3V логикой может не переварить. Лучше запитать от 3.3V.
INMP441 (цифровой MEMS) подключается по I²S:
| Пин INMP441 | Пин ESP32 |
|---|---|
| VDD | 3.3V |
| GND | GND |
| L/R | GND |
| DOUT | GPIO25 |
| BCLK | GPIO26 |
| WS | GPIO27 |
Я рекомендую INMP441 для нового проекта — он даёт чистый цифровой сигнал, не требует АЦП, и меньше шумит.
Пример: голосовое управление светом через Telegram
Шаг 1. Прошивка ESP32
Загружаем на ESP32 скрипт на MicroPython. Он читает микрофон, при обнаружении громкого звука (голос) захватывает 3 секунды аудио и отправляет в MQTT-топик.
import machine
import ustruct
import time
import network
from umqtt.simple import MQTTClient
# Настройки Wi-Fi и MQTT
SSID = "your_ssid"
PASSWORD = "your_password"
MQTT_BROKER = "test.mosquitto.org"
CLIENT_ID = "esp32_mic_001"
# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(0.5)
# MQTT клиент
client = MQTTClient(CLIENT_ID, MQTT_BROKER)
client.connect()
# ADC для MAX9814 на GPIO34
adc = machine.ADC(machine.Pin(34))
adc.atten(machine.ADC.ATTN_11DB) # 0-3.3V
def record_audio(duration_ms=3000):
samples = []
start = time.ticks_ms()
while time.ticks_diff(time.ticks_ms(), start) < duration_ms:
samples.append(adc.read())
return bytes(samples) # 8-bit raw
# Основной цикл
while True:
# Ждём громкий звук (порог 2000 из 4095)
if adc.read() > 2000:
audio_data = record_audio(3000)
client.publish(b"audio/commands", audio_data)
# Ждём ответ от AI
time.sleep(5)
time.sleep(0.1)
Шаг 2. AI подключается к MQTT и распознаёт команды
В чате с ASI Biont пишем:
Подключись к MQTT-брокеру test.mosquitto.org, подпишись на топик audio/commands. Когда получишь аудиофрагмент, распознай речь через OpenAI Whisper API, определи команду («включи свет», «выключи свет», «включи вентилятор») и опубликуй результат в топик audio/response. Логируй все действия в файл.
AI генерирует Python-скрипт и выполняет его в sandbox:
import paho.mqtt.client as mqtt
import requests
import json
import base64
BROKER = "test.mosquitto.org"
TOPIC_IN = "audio/commands"
TOPIC_OUT = "audio/response"
# OpenAI Whisper API (ключ из переменной окружения)
OPENAI_KEY = os.environ.get("OPENAI_API_KEY")
def on_message(client, userdata, msg):
audio_bytes = msg.payload
# Отправляем в Whisper
b64 = base64.b64encode(audio_bytes).decode()
resp = requests.post(
"https://api.openai.com/v1/audio/transcriptions",
headers={"Authorization": f"Bearer {OPENAI_KEY}"},
files={"file": ("audio.wav", audio_bytes, "audio/wav")},
data={"model": "whisper-1"}
)
text = resp.json()["text"]
print(f"Распознано: {text}")
# Определяем команду
if "свет" in text.lower():
if "включи" in text:
command = "LIGHT_ON"
elif "выключи" in text:
command = "LIGHT_OFF"
else:
command = "UNKNOWN"
else:
command = "UNKNOWN"
# Публикуем ответ
client.publish(TOPIC_OUT, command)
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, 1883, 60)
client.subscribe(TOPIC_IN)
client.loop_forever()
Шаг 3. ESP32 получает команду и управляет реле
На ESP32 добавляем подписку на audio/response:
def callback(topic, msg):
if msg == b"LIGHT_ON":
relay.value(1)
print("Свет включён")
elif msg == b"LIGHT_OFF":
relay.value(0)
print("Свет выключен")
client.set_callback(callback)
client.subscribe(b"audio/response")
while True:
client.check_msg()
time.sleep(0.1)
Подводные камни
- Шумы MAX9814. При усилении 60 дБ микрофон ловит всё, включая фоновый гул. Решение: используйте AGC (подтяните AR к 3.3V) или поставьте конденсатор 10 мкФ между VDD и GND.
- Задержка Whisper. Распознавание через облако занимает 1-3 секунды. Для реального времени лучше использовать локальную модель (Vosk), но она требует больше памяти.
- Качество аудио. MAX9814 выдаёт аналоговый сигнал — на ESP32 АЦП нелинейный. INMP441 даёт чистый цифровой звук без искажений.
Альтернативный сценарий: автоматическая запись лекций
Вы говорите AI: «Подключайся к микрофону на ESP32 через MQTT, записывай аудиофрагменты длительностью 30 секунд, транскрибируй их в текст с помощью Whisper и сохраняй в Google Docs». AI сам напишет код, который:
- подписывается на топик audio/stream
- каждые 30 секунд отправляет фрагмент в Whisper
- через Google Docs API создаёт новый документ и добавляет туда распознанный текст
Всё в одном диалоге — без написания единой строки кода вручную.
Почему это выгодно?
- Скорость. Интеграция занимает 10 минут вместо 2 часов ручного кодинга.
- Гибкость. AI подключается к любому устройству — не только ESP32, но и Raspberry Pi, PLC, GPS-трекер.
- Масштабирование. Добавили второй микрофон? Просто скажите AI: «Подключи ещё один ESP32 с микрофоном на тот же MQTT-брокер». AI сам настроит.
Заключение
Интеграция микрофона MAX9814 или INMP441 с AI-агентом ASI Biont открывает мир голосового управления для DIY-проектов, умного дома и промышленности. Вам не нужно быть экспертом в MQTT или Python — достаточно описать задачу в чате, и AI сделает всё за секунды.
Попробуйте прямо сейчас: зайдите на asibiont.com, создайте API-ключ, скачайте bridge.py, подключите микрофон к ESP32, и скажите AI: «Подключи микрофон и слушай команды». Убедитесь сами — это работает.
Комментарии