|
Sistema Embarcado LockWise
Sistema de fechadura inteligente com autenticação por voz, controle MQTT e aplicativo móvel
|
#include "audio_common.h"#include "audio_element.h"#include "audio_hal.h"#include "audio_pipeline.h"#include "audio_stream.h"#include "board.h"#include "config.h"#include "driver/gpio.h"#include "esp_crt_bundle.h"#include "esp_heap_caps.h"#include "esp_http_client.h"#include "esp_log.h"#include "esp_timer.h"#include "freertos/queue.h"#include "freertos/semphr.h"#include "freertos/task.h"#include "i2s_stream.h"#include "lock.h"#include "math.h"#include "mqtt.h"#include "raw_stream.h"#include "system_utils.h"#include <string.h>#include <sys/time.h>#include <time.h>Macros | |
| #define | AUDIO_SAMPLE_RATE 44100 |
| Taxa de amostragem do áudio em Hz. | |
| #define | AUDIO_BITS 16 |
| Número de bits por amostra de áudio. | |
| #define | AUDIO_CHANNELS 1 |
| Número de canais de áudio (mono) | |
| #define | VAD_FRAME_MS 30 |
| Duração do frame VAD em ms. | |
| #define | VAD_SAMPLES ((AUDIO_SAMPLE_RATE * VAD_FRAME_MS) / 1000.) |
| Número de amostras por frame VAD. | |
| #define | VAD_TRIGGER_FRAMES 6 |
| Número de frames consecutivos para acionar VAD. | |
| #define | VAD_COOLDOWN_MS 2000 |
| Tempo de cooldown após acionamento VAD em ms. | |
| #define | BYTES_PER_SEC (AUDIO_SAMPLE_RATE * AUDIO_CHANNELS * (AUDIO_BITS / 8)) |
| Bytes por segundo de áudio. | |
Funções | |
| static void | audio_init_pipeline (void) |
| Inicializa o pipeline de áudio ESP-ADF. | |
| static void | vad_task (void *arg) |
| Tarefa de detecção de atividade de voz (VAD). | |
| static void | http_stream_task (void *arg) |
| Tarefa de streaming HTTP de áudio. | |
| void | audio_stream_task (void *pvParameters) |
| Tarefa principal de controle do streaming de áudio. | |
| void | audio_stream_init (void) |
| Inicializa a tarefa de streaming de áudio. | |
| void | audio_stream_send_cmd (audio_stream_cmd_t cmd) |
| Envia um comando para a tarefa de streaming de áudio. | |
Variáveis | |
| TaskHandle_t | idle_blink_task |
| Handle da tarefa de piscar idle (acessível de audio_stream.c) | |
| audio_board_handle_t | g_board_handle |
| Handle global da placa de áudio ESP-ADF. | |
| static const char * | TAG = "\033[1mLOCKWISE:\033[92mAUDIO\033[0m\033[92m" |
| static QueueHandle_t | audio_stream_queue |
| Fila para comandos de streaming de áudio. | |
| static audio_pipeline_handle_t | pipeline |
| Handle do pipeline de áudio ESP-ADF. | |
| static audio_element_handle_t | i2s |
| Elemento I2S do pipeline de áudio. | |
| static audio_element_handle_t | raw |
| Elemento raw do pipeline de áudio. | |
| static volatile bool | streaming_enabled = false |
| Flag indicando se o streaming está habilitado. | |
| static volatile bool | recording_active = false |
| Flag indicando se a gravação está ativa. | |
| static SemaphoreHandle_t | stream_gate |
| Semáforo para controle de gate do streaming. | |
| static size_t | pcm_bytes_sent = 0 |
| Contador de bytes PCM enviados. | |
| static int64_t | last_stream_us = 0 |
| Timestamp do último streaming em microssegundos (não usado) | |
| static TaskHandle_t | fast_blink_task = NULL |
| Handle da tarefa de piscar rápido do LED. | |
| #define AUDIO_BITS 16 |
Número de bits por amostra de áudio.
| #define AUDIO_CHANNELS 1 |
Número de canais de áudio (mono)
| #define AUDIO_SAMPLE_RATE 44100 |
Taxa de amostragem do áudio em Hz.
| #define BYTES_PER_SEC (AUDIO_SAMPLE_RATE * AUDIO_CHANNELS * (AUDIO_BITS / 8)) |
Bytes por segundo de áudio.
| #define VAD_COOLDOWN_MS 2000 |
Tempo de cooldown após acionamento VAD em ms.
| #define VAD_FRAME_MS 30 |
Duração do frame VAD em ms.
| #define VAD_SAMPLES ((AUDIO_SAMPLE_RATE * VAD_FRAME_MS) / 1000.) |
Número de amostras por frame VAD.
| #define VAD_TRIGGER_FRAMES 6 |
Número de frames consecutivos para acionar VAD.
|
static |
Inicializa o pipeline de áudio ESP-ADF.
Configura os elementos I2S e raw, registra-os no pipeline e inicia o pipeline.
| void audio_stream_init | ( | void | ) |
Inicializa a tarefa de streaming de áudio.
Esta função configura o pipeline de áudio, inicializa as tarefas de VAD (Voice Activity Detection) e streaming HTTP, além de criar as filas e semáforos necessários para o gerenciamento do áudio.
| void audio_stream_send_cmd | ( | audio_stream_cmd_t | cmd | ) |
Envia um comando para a tarefa de streaming de áudio.
| cmd | Comando a ser enviado (AUDIO_STREAM_START ou AUDIO_STREAM_STOP). |
| void audio_stream_task | ( | void * | pvParameters | ) |
Tarefa principal de controle do streaming de áudio.
| pvParameters | Parâmetros da tarefa (não usado). |
Processa comandos da fila para iniciar ou parar streaming de áudio.
|
static |
Tarefa de streaming HTTP de áudio.
| arg | Parâmetros da tarefa (não usado). |
Grava áudio por um tempo configurado, envia via HTTP POST para o back-end e processa a resposta.
|
static |
Tarefa de detecção de atividade de voz (VAD).
| arg | Parâmetros da tarefa (não usado). |
Executa detecção contínua de voz baseada em RMS, acionando streaming quando voz é detectada.
|
static |
Fila para comandos de streaming de áudio.
|
static |
Handle da tarefa de piscar rápido do LED.
|
extern |
Handle global da placa de áudio ESP-ADF.
|
static |
Elemento I2S do pipeline de áudio.
|
extern |
Handle da tarefa de piscar idle (acessível de audio_stream.c)
|
static |
Timestamp do último streaming em microssegundos (não usado)
|
static |
Contador de bytes PCM enviados.
|
static |
Handle do pipeline de áudio ESP-ADF.
|
static |
Elemento raw do pipeline de áudio.
|
static |
Flag indicando se a gravação está ativa.
|
static |
Semáforo para controle de gate do streaming.
|
static |
Flag indicando se o streaming está habilitado.
|
static |