ÍNDICE DE CONTEÚDO
Introdução
O que é a solução Smart Voice UI da NXP?
A Smart Voice UI é uma solução para reconhecimento de fala Far-field, cuja engine é executada localmente, ou seja, offline. É considerada portanto uma solução de HMI edge computing.
Por solução, podemos entender um conjunto de componentes de software, ferramentas, hardware e documentação que viabilizam o desenvolvimento de maneira agil, oferecendo todo o suporte necessário para que o desenvolvedor possa focar na lógica da resolução do problema do seu cliente e abstraia a parte de tratamento de áudio e inteligência artificial.
Falando sobre estes componentes, no lado do hardware, a solução conta com o MCU crossover i.MX RT1060x, um MCU com processador Cortex-M7 (600 MHz) e com 1 MB de SRAM. Este MCU foi especialmente desenvolvindo visando aplicações multimídia, pois possui internamente múltiplos periféricos para interface com microfones (PDM, I2S), auto-falante (MQS, I2S), display (eLCDIF) e camera (CSI). Esse suporte multimídia dispensa a necessidade de circuitos externos como codecs para interfacear dispositivos e consequentemente reduz o custo total da BOM do produto final.
Já a placa de desenvolvimento é composta por 2 placas: a Main Board e a Extension Board. A Main Board contém 16 MB de flash externa, 8MB de PSRAM externa, 2 microfones que podem ser conectados via PDM soldando um resistor de 0 Ω, switches e LEDs. Extension Board extende a funcionalidade da placa adicionando ainda 2 outras topologias de microfones usando PDM e I2S, 1 mini auto-falante e um módulo WiFi e BLE da NXP o IW416.
Imagem: Diagrama de blocos das placas inclusas no EVKB
Imagem: Vista de cima da Smart Voice UI com destaque para os microfones disponíveis.
Do lado do software a NXP oferece:
- Voice Seeker AFE (Audio Front End): O AFE é o processamento de áudio da NXP que suporta por exemplo: múltiplos microfones, beamforming, AEC (Acoustic Echo Cancellation ou cancelamento de eco) e supressão de ruído.
- VIT (Voice Intelligent Technology) Engine : O VIT é uma engine de reconhecimento de wake word e de comandos que roda localmente no MCU sem necessidade de conectividade. Além da engine, a NXP oferece uma página no site para configurar e criar um modelo com suas próprias wake words e comandos, sem necessidade de nenhuma expertise em AI. O VIT tem suporte a cerca de 9 idiomas e o português está no roadmap da solução. A solução é totalmente gratuita e livre de custos recorrentes e de licença.
Entretanto, para usar o VIT deve-se adquirir o part number RT1060V.
- Suporte ao Cyberon DSMT: Com o mesmo objetivo do VIT, o DSMT é uma solução third party que a NXP suporta no part number RT1060C. Conta com suporte de mais de 40 idiomas, com diferenciação de sotaque (por exemplo, português do Brasil e de Portugal), com diferentes nível de otimização para o modelo e permite que o desenvolver ajuste o comando para calibrar o reconhecimento dos comandos e chegar a uma performance desejável. O DSMT é uma aplicação gráfica desktop suportada no Windows.
- Framework e OOBE (Out of the Box Eperience): junto com as demo open source, o desenvolvedor também aceso a APIs que permitem capturar os eventos e estabelecer sua própria lógica.
- Toolkit: a solução pode ser customizada utilizando o MCUXpresso IDE da NXP, uma IDE baseada no Eclipse suportando edição de código, depuração e muito mais.
Do lado da documentação a solução oferece os manuais de usuários, os arquivos de desing, esquemáticos e outros, os quais clientes podem usar como referência para seus projetos e suporte no site.
Hands On
Nesse tutorial será ensinado como preparar o seu ambiente para compilar e fazer o upload do projeto para a placa Smart Voice UI. Também será mostrado como atualizar a placa com a demo mais recente.
Required Materials
Hardware Requirements
- Smart Voice UI EVKB: EdgeReady i.MX RT106V-Based Smart Voice User Interface Solution | NXP Semiconductors
- USB C cable
Software Requirements
- IDE: MCUXpresso v 11.8.0
- SDK: RT1060 EVKB v 2.14.
- Windows OS (Foi usado o Windows 10 para este tutorial)
- OBS: Tanto o MCUXpresso quanto o SDK são suportados no Linux também, porém a função (Mass Storage Device) MSD que iremos usar só é suportada no Windows pelo momento. Além disso, para os próximos tutoriais o Windows também será um requisito porque o Cyberon DSMT só está disponível para Windows.
Instalação das ferramentas
Observação:
Para realizar alguns downloads do site da NXP é necessário ter uma conta. Quando o site requisitar login, registre-se para criar sua conta e continue o laboratório.
MCUXpresso IDE
MCUXpresso é a IDE da NXP para a edição de código, compilação, depuração e outras features comuns em IDEs baseadas no Eclipse.
Para realizar a instalação:
- Acesse MCUXpresso IDE for NXP MCUs | Linux, Windows and MacOS | NXP Semiconductors | NXP Semiconductors e clique em downloads.
- Selecione a versao 11.8.0
- Concorde com os termos e selecione o instalador para o seu Sistema Operacional (que deve ser Windows conforme explicado anteriormente).
- Execute o download para instalar a IDE.
Gerando o SDK RT1060 EVKB V 2.14.0
Cada MCU tem seu próprio SDK que inclui driver, exemplos, midleware, docs e outros componentes. Para compilar a demo para o iMX. RT1060 nessa placa, iremos instalar o SDK RT1060 EBKB versao 2.14.0.
- Acesse Welcome | MCUXpresso SDK Builder (nxp.com). Essa página é uma nova página para gerar SDKs de acordo com suas preferencias. Clique em Select Development Board.
- Digite na busca RT 1060 e certifique-se de selecionar RT1060 EVKB:
- Do lado direito, selecione a versao 2.14.0 e clique em Build MCUXpresso SDK para gerar o seu SDK:
- Nessa próxima página voce pode customizar o seu SDK, incluindo o suporte a diferentes RTOSes e middlewares. Também é nessa fase que deve selecionar o Sistema Operacional da sua máquina e a toolchain ou IDE a ser utilizada. Clique em Select All para incluir todos os componentes e baixar um SDK completo.
- Role para baixo e clique em Download SDK
- Clique novamente em Download SDK, selecione o download archive para baixar o SDK em formato .zip conforme as próximas imagens e aceite os termos. Seu download deve iniciar então.
Instalando o SDK na IDE
- Para instalar o SDK na IDE é muito simples! Abra o MCUXpresso IDE e feche a janela de Boas Vindas. Selecione o arquivo .zip e arraste para a janenela de SDKs instalados. Uma janela de confirmacao pedirá a voce para confirmar, cliquem em OK:
Instalando Cyberon Dspotter Modeling Tool V2
O Dspotter Modeling Tool (DSMT) é uma ferramenta amigável de terceiros que é usada para criars modelos de voz customizados com wake-up words e comandos. Também oferece a função de ajuste do modelo de voz. Essa ferramenta atualmente está apenas disponível para Windows. Porém, vale lembrar que a NXP também oferece uma outra ferramenta chamada VIT para treinamento e geração de modelo de voz que é online, e portanto abstrai o SO.
- Acesse Cyberon DSMT Tool V2.
- Role para baixo e faca o download da versao 2.2.17.8.
- Execute o instalador.
- Após instalado, ao clicar na ferramenta, uma pagina de login será aberta requisitando email e senha:
- Para solicitar suas credenciais, envie um email para –[email protected] com as seguintes informacoes:
- Nome
- Nome da Empresa ou Universidade.
- MAC Address do seu computador.
- Aguarde suas credenciais para usar a ferramenta.
Atualizando a placa com a versão mais recente da OOBE (Out of the Box Experience)
Nessa etapa aprenderemos como atualizar a placa com a demo da OOBE. A demo da OOBE está neste repositório público do GitHub: GitHub – NXP/mcu-svui: NXP EdgeReady solution for both local and online voice control leverages the i.MX RT106V crossover MCU.
O repositório contém 3 projetos:
O bootstrap: que é a primeira aplicação a ser executada e a primeira etapa de segurança. Caso o HAB (High Assurance Booting) for habilitado, haverá verificação da assinatura do firmware de bootstrap para evitar que o bootloader de segundo estágio seja carregado sem que antes se verifique o bootstrap. Um bootstrap corrompido, torna a placa inutilizável. As placas vem com HAB desabilitado e é aconselhado apenas para produção. Para saber como habilitar e usar a verificação de imagem, consulte o User Manual.
O bootloader: que é um bootloader de segundo estágio, responsável por chamar a aplicação principal, realizar verificação de imagem também, oferecer a função de MSD (Mass Storage Device), que permite a atualização da aplicação principal via drag and drop e a função de atualização de firmware OTW (Over-The-Wire).
A demo: que é o projeto da aplicacao em si.
A imagem a seguir representa o fluxo de inicializacao do código:
Para atualizarmos todo o firmware, incluindo o bootstrap e o bootloader, existem duas possibilidades:
1. Usando a interface JTAG com J-Link debug probe. Que permitirá também fazer a depuração (e não depende do Windows).
2. Usando cabo USB tipo C com um pacote disponibilizado pela NXP chamado Ivaldi. Uma observacao: O Ivaldi tem muito mais funcionalidades do que simplesmente gravar o código. Para saber mais, consulte a documentação.
Uma vez que o bootloader está gravado, para atualizar a aplicação apenas, pode ser usado o modo MSD (Mass Storage Device – Drag an Drop) com cabo USB.
Neste tutorial, afim de simplificar e para utilizar apenas o cabo USB, iremos usar a segunda opção, com o Ivaldi, para atualizar todo o firmware. Uma vez que tivermos o bootloader gravado, podemos usar a IDE para gerar o binário e usar o MSD para atualizar apenas a aplicacao como mencionado. Portanto, para atualizar todo o firmware com Ivaldi, siga os passos a seguir:
- Faca o download do pacote Ivaldi pré-compilado. Acesse este link e depois clique em Ivaldi Updater:.
EdgeReady i.MX RT106V-Based Smart Voice User Interface Solution | NXP Semiconductors
- Extraia o pacote no diretório “C:/”.
- Desconecte a placa do cabo USB, mova o Jumper J61 para a posicao 2-3 e conecte novamente.
- Acesse o diretório C:/Ivaldi/ e execute o seguinte script: FLASH_SVUI_BOARD.bat:
- Desconecte sua placa novamente, coloque o J61 na posicao 1-2, reconecte a placa e usufrua a demo!
A demo ainda se sub-divide em 3 demos: Smart Home, Elevator e Washing Machine.
Ao iniciar, a placa pergunta qual demo voce deseja escolher. A seguir a tabela mostra os comandos para cada uma dessas sub-demos em 4 idiomas diferentes:
Observe que também há comandos para trocar a demo ou o idioma. Para testar qualquer comando, simplesmente diga “Hey NXP” e em seguida informe o comando. A demo também inclui um SHELL com comandos adicionais. Para explorá-lo, abra um terminal serial com as configurações padrões e baudrate a 115200. Digite help e descubra outras possibilidades:
Como foi mencionado anteriormente, o RT1060 suporta tanto o VIT quanto o DSMT dependendo do part number do chip. Porém o RT1060V oferece a possibilidade de testar o DSMT de maneira limitada. Para avaliar a mesma demo treinada com o DSMT, mantenha pressionado o SW3 (SW62 na placa) e aperte e solte o SW1 (SW60). O legal é que o DSMT suporta múltiplos idiomas sem precisar emitir o comando de troca de idioma. Teste usar wake up word em diferentes idiomas. Se não souber falar, use algum recurso como o Google Tradutor.
Conclusão
Nesse artigo voce aprendeu:
- O que é a solução de Smart Voice e suas principais características.
- Como instalar as ferramentas para usar a solucao da Smart Voice UI.
- Como acessar o código da Demo e gravar a versao mais recente usando apenas o cabo USB.
- Como testar e avaliar a OOBE.
- No próximo artigo voce aprenderá como customizar a demo criando do zero seu próprio modelo de voz.