[Link do artigo original](https://arxiv.org/abs/1711.07128)

# Hello Edge: Keyword Spotting on Microcontrollers

## 1. Introdução

O artigo começa contextualizando a crescente importância da interação por voz em dispositivos eletrônicos, impulsionada pelos avanços em deep learning. No entanto, o reconhecimento de fala contínuo baseado em nuvem é inviável para operação "sempre ligada" (always-on) devido ao alto consumo de energia, latência de rede e preocupações com privacidade.

Para mitigar esses problemas, utiliza-se o Keyword Spotting (KWS), um sistema que detecta palavras-chave predefinidas (como "Alexa" ou "Ok Google") localmente para "acordar" o dispositivo para um reconhecimento de fala mais complexo. Como o KWS deve estar sempre ativo, ele precisa operar com baixíssimo consumo de energia, mantendo alta precisão e baixa latência.

## 2. Contexto

A seção 2 do artigo estabelece os fundamentos dos sistemas de detecção de palavras-chave (KWS) e as limitações do hardware alvo (microcontroladores).

### 2.1 Funcionamento do Sistema KWS

Um sistema típico de KWS é composto por um extrator de características e um classificador baseado em rede neural, o sinal de voz de entrada é dividido em quadros sobrepostos, dos quais são extraídas características (como MFCCs) para traduzir o sinal do domínio do tempo para coeficientes espectrais no domínio da frequência.

Essa matriz de características alimenta um classificador que gera probabilidades para as classes de saída (as palavras-chave). Tecnologias tradicionais usavam Modelos Ocultos de Markov (HMMs), mas eram difíceis de treinar. Redes neurais profundas (DNNs, CNNs, RNNs) superaram os HMMs em precisão ou latência, embora cada arquitetura tenha seus próprios pontos fortes e fracos na modelagem de correlações espectrais e temporais.

O artigo se diferencia de pesquisas anteriores por focar explicitamente nas restrições de hardware (como o limite de operações por inferência), em vez de apenas tentar reduzir o tamanho do modelo.

### 2.2 Funcionamento do Sistema KWS

Um microcontrolador típico possui um núcleo de processador, um bloco de SRAM on-chip e memória flash embarcada.

Eles são projetados para baixo custo e eficiência energética, não para alto desempenho computacional, e possuem recursos muito limitados (por exemplo, SRAM variando de 8 KB a 320 KB e frequências de 16 MHz a 216 MHz em núcleos Arm Cortex-M).

O tamanho da SRAM limita diretamente a memória que o software (e o modelo de rede neural) pode usar, e a capacidade de processamento limita o número total de operações possíveis por inferência em tempo real.


Alguns microcontroladores modernos possuem instruções DSP (como SIMD e MAC) que podem ajudar a acelerar cargas de trabalho de redes neurais.

#### Tabela 1: Plataformas de desenvolvimento típicas de microcontroladores baseados em Arm Cortex-M

| Plataforma Arm Mbed™ | Processador | Frequência | SRAM | Flash |
| :--- | :--- | :--- | :--- | :--- |
| Mbed LPC11U24 | Cortex-M0 | 48 MHz | 8 KB | 32 KB |
| Nordic nRF51-DK | Cortex-M0 | 16 MHz | 32 KB | 256 KB |
| Mbed LPC1768 | Cortex-M3 | 96 MHz | 32 KB | 512 KB |
| Nucleo F103RB | Cortex-M3 | 72 MHz | 20 KB | 128 KB |
| Nucleo L476RG | Cortex-M4 | 80 MHz | 128 KB | 1 MB |
| Nucleo F411RE | Cortex-M4 | 100 MHz | 128 KB | 512 KB |
| FRDM-K64F | Cortex-M4 | 120 MHz | 256 KB | 1 MB |
| Nucleo F746ZG | Cortex-M7 | 216 MHz | 320 KB | 1 MB |

Fonte: Adaptado de Zhang et al.

## 3. Arquiteturas de Redes Neurais para KWS

Esta seção apresenta uma visão geral das diferentes arquiteturas de redes neurais avaliadas no estudo, indo desde modelos padrão até a proposta otimizada para microcontroladores.

* **Deep Neural Network (DNN):** É um modelo padrão feed-forward composto por uma pilha de camadas totalmente conectadas (fully-connected) seguidas por funções de ativação não lineares (geralmente ReLU). A entrada é uma matriz de características achatada (flattened).
* **Convolutional Neural Network (CNN):**  Projetada para superar a limitação das DNNs em modelar correlações locais temporais e espectrais. As CNNs tratam as características de entrada como uma "imagem", aplicando convoluções 2D sobre ela.
* **Recurrent Neural Network (RNN):**  Explora não apenas a relação temporal entre os sinais de entrada, mas também captura dependências de longo prazo usando mecanismos de "gating" (como células LSTM ou GRU). Como os pesos são reutilizados em todas as etapas de tempo, os modelos RNN tendem a ter menos parâmetros que as CNNs.
* **Convolutional Recurrent Neural Network (CRNN):** Um híbrido que aproveita as vantagens de ambos: usa camadas convolucionais para correlação local e camadas recorrentes para dependências temporais globais. O modelo geralmente começa com convolução, seguido por RNN (como GRU bidirecional) e uma camada densa final.
* **Depthwise Separable CNN (DS-CNN):** A arquitetura proposta como alternativa eficiente às convoluções padrão. Ela decompõe a convolução 3D em duas etapas: uma convolução 2D separada para cada canal (depthwise) seguida por uma convolução 1x1 (pointwise) para combinar as saídas. Isso reduz significativamente o número de parâmetros e operações, permitindo redes mais profundas em dispositivos com recursos limitados.

## 4. Experimentos e Resultados

Essa parte detalha a metodologia de avaliação e os resultados comparativos das arquiteturas de redes neurais.

### 4.1. Configuração Experimental
Os modelos foram treinados usando o *dataset* **Google Speech Commands**, contendo 65 mil clipes de áudio de 1 segundo.
O objetivo era classificar 12 categorias: 10 palavras-chave ("Yes", "No", "Up", "Down", "Left", "Right", "On", "Off", "Stop", "Go"), "silêncio" e "desconhecido".

### 4.2. Definição de Restrições de Hardware
Para simular ambientes reais de microcontroladores, os autores definiram três classes de restrições de recursos, baseadas em *hardware* típico disponível no mercado.

**Tabela 2: Classes de Restrição de Recursos para Modelos KWS**

| Classe | Limite de Memória | Limite de Operações/Inferência |
| :--- | :--- | :--- |
| Pequena (S) | 80 KB | 6 MOps |
| Média (M) | 200 KB | 20 MOps |
| Grande (L) | 500 KB | 80 MOps |

*(Assumindo 10 inferências por segundo e pesos de 8-bit)*

### 4.3. Resultados da Exploração de Arquitetura
Diversas arquiteturas foram otimizadas para se adequarem a essas classes.O modelo proposto, **DS-CNN** (Depthwise Separable CNN), obteve a melhor precisão em todas as categorias de restrição.

**Tabela 3: Precisão dos Melhores Modelos por Classe de Restrição**

| Modelo Neural | Classe S (80KB, 6MOps) | Classe M (200KB, 20MOps) | Classe L (500KB, 80MOps) |
| :--- | :--- | :--- | :--- |
| DNN | 84.6% | 86.4% | 86.7% |
| CNN | 91.6% | 92.2% | 92.7% |
| LSTM (Basic) | 92.0% | 93.0% | 93.4% |
| CRNN | 94.0% | 94.4% | 95.0% |
| **DS-CNN** | **94.4%** | **94.9%** | **95.4%** |



### 4.4. Quantização de Redes Neurais
O estudo validou que a conversão de modelos de ponto flutuante (32-bit) para ponto fixo (8-bit) é viável para economizar memória (redução de 4x) sem perda significativa de precisão.

**Tabela 4: Comparação de Precisão (32-bit vs 8-bit)**

| Modelo | Precisão (32-bit float) | Precisão (8-bit quantized) |
| :--- | :--- | :--- |
| DNN | 86.66% | 87.60% |
| Basic LSTM | 93.41% | 93.51% |
| CRNN | 95.00% | 95.03% |


### 4.5. Implantação em Microcontrolador
Para prova de conceito, um sistema KWS foi implantado em uma placa de desenvolvimento **STM32F746G-DISCO** (Cortex-M7). O aplicativo completo ocupou aproximadamente 70 KB de memória e executou cada inferência em cerca de 12 ms.

## 5. Experimentos e Resultados

* **Otimização de Hardware:** Arquiteturas de rede neural otimizadas para *hardware* são cruciais para obter eficiência em microcontroladores com restrição de memória e computação.
* **Comparação de Arquiteturas:** O estudo comparou diversas arquiteturas de KWS da literatura em termos de precisão, memória e operações, visando a implantação em microcontroladores.
* **Quantização Eficaz:** Foi demonstrado que modelos KWS de 32-bit podem ser quantizados para 8-bit sem perda de precisão, facilitando a implantação.
* **Novo Modelo (DS-CNN):** A introdução do modelo DS-CNN, inspirado no MobileNet, mostrou-se superior, atingindo as melhores precisões (94.4%, 94.9%, 95.4%) em todas as faixas de restrição de *hardware* testadas, demonstrando excelente escalabilidade.
* **Disponibilidade:** O código e os modelos pré-treinados foram disponibilizados.