Pular para o conteúdo principal

reSpeaker XVF3800 Controlar Wakeword e NLU com Pico-voice

Introdução

Picovoice é uma empresa especializada em IA de voz embarcada, oferecendo um stack completo de tecnologias como detecção de palavra de ativação, conversão de fala em texto e reconhecimento de intenção que rodam localmente em dispositivos embarcados e de borda sem depender da nuvem. Suas soluções são projetadas para baixa latência, privacidade e implantação multiplataforma, tornando-as adequadas para sistemas de IoT e robótica.

Porcupine é o mecanismo de detecção de palavra de ativação leve e altamente preciso da Picovoice, construído usando redes neurais profundas e otimizado para sistemas embarcados. Ele permite aplicações sempre em escuta mantendo baixo custo computacional e pode rodar em plataformas como microcontroladores, Raspberry Pi, dispositivos móveis e desktops.

Picovoice Rhino é um mecanismo de fala‑para‑intenção que converte comandos falados diretamente em intenções estruturadas sem exigir uma etapa separada de fala‑para‑texto. Ele usa uma abordagem de aprendizado profundo em etapa única, combinando reconhecimento de fala e compreensão de linguagem natural para melhorar a precisão e reduzir a latência.

O que são NLP, NLU e STT?

Processamento de Linguagem Natural (NLP) é o campo amplo que permite que máquinas processem a linguagem humana, enquanto Compreensão de Linguagem Natural (NLU) é um subconjunto que foca especificamente em extrair o significado ou a intenção dessa linguagem. Fala‑para‑Texto (STT) converte áudio falado em texto, que então é normalmente passado para o NLU para entender a intenção do usuário. O Picovoice Rhino adota uma abordagem diferente ao pular o STT e converter diretamente a fala em intenção (fala‑para‑intenção), melhorando a eficiência e a precisão.

A detecção de palavra‑chave (palavra de ativação) (por exemplo, “Ei dispositivo”) é o primeiro passo que ativa o sistema e, após a ativação, ou o pipeline STT → NLU ou fala‑para‑intenção (Rhino) é usado para entender e executar o comando.

Objetivo

Esta demonstração mostra como a detecção de palavra de ativação usando o Picovoice Porcupine funciona em conjunto com o Picovoice Rhino para um processamento eficiente de fala‑para‑intenção em um Raspberry Pi. O sistema primeiro escuta uma palavra‑chave para ativar e, uma vez acionado, converte diretamente comandos falados em intenções acionáveis sem depender de processamento pesado na nuvem. Essa abordagem é altamente otimizada para dispositivos embarcados de poucos recursos, tornando‑a ideal para aplicações de robótica e IA de borda. Ela possibilita interação por voz em tempo real e baixa latência, garantindo desempenho rápido e confiável mesmo em hardware limitado.

Hardware necessário

pir

Detecção de palavra de ativação

Uma palavra de ativação em sistemas robóticos embarcados possibilita processamento orientado a eventos, permitindo que o dispositivo permaneça em um estado de escuta de baixo consumo e só ative o processamento pesado de fala quando necessário. Isso reduz significativamente o consumo de CPU, memória e energia em hardware com recursos limitados, como microcontroladores e dispositivos de borda. Ela também atua como um mecanismo de controle no pipeline de áudio, filtrando ruído irrelevante e evitando ativações desnecessárias da lógica de reconhecimento de fala e controle. Do ponto de vista de privacidade, a detecção de palavra de ativação garante que o áudio só seja capturado ou transmitido após a detecção de uma intenção explícita do usuário, mantendo a maior parte do processamento de dados no dispositivo. Além disso, melhora a interação humano‑robô ao fornecer um gatilho natural para engajamento, ajudando o sistema a distinguir entre conversas de ambiente e comandos direcionados.

Usar uma palavra de ativação junto com um sistema avançado de matriz de microfones como o reSpeaker XVF3800 possibilita uma interação por voz eficiente e confiável em sistemas incorporados. A palavra de ativação garante que o sistema só ative o processamento completo de fala quando necessário, reduzindo o consumo de energia e o uso de CPU em hardware embarcado. A matriz de microfones aprimora isso ao fornecer formação de feixe, supressão de ruído e detecção de direção em matriz de microfones circular, permitindo reconhecimento preciso da palavra de ativação mesmo em ambientes ruidosos. Essa combinação minimiza disparos falsos e melhora a capacidade de resposta geral do sistema. Ela também oferece melhor interação humano‑robô ao garantir que o dispositivo responda apenas quando for explicitamente acionado e possa focar no locutor correto.

Como usar palavra de ativação com Pico-voice

Cadastre‑se no Picovoice e você receberá uma Access Key

pir

Opção A : Palavras‑chave integradas

O Porcupine fornece várias opções de palavras de ativação integradas, como AMERICANO, BLUEBERRY, BUMBLEBEE, GRAPEFRUIT, GRASSHOPPER, PICOVOICE, PORCUPINE, TERMINATOR e JARVIS, que podem ser usadas diretamente com uma chave de acesso válida. Com a chave de acesso, essas palavras‑chave podem ser facilmente integradas à sua aplicação sem treinar um modelo personalizado.

Nesta configuração, estamos usando um Raspberry Pi 5 como dispositivo host, e a detecção de palavra de ativação será executada localmente no dispositivo. O sistema de microfone baseado em XMOS é gravado com o firmware de áudio USB, permitindo que ele seja reconhecido como um dispositivo de entrada de áudio padrão pelo sistema operacional.

Para começar, é necessário instalar no ambiente as bibliotecas e dependências exigidas pelo Porcupine.

pip install pvporcupine

Após a instalação, um código de exemplo pode ser usado para inicializar o gravador de áudio, carregar a palavra‑chave selecionada e escutar continuamente a palavra de ativação. Quando a palavra‑chave for detectada, o sistema poderá acionar ações adicionais, como gravar ou processar comandos de voz.

import pvporcupine
from pvrecorder import PvRecorder

access_key = "YOUR_ACCESS_KEY"

porcupine = pvporcupine.create(
access_key=access_key,
keywords=["porcupine"]
)

recorder = PvRecorder(device_index=-1, frame_length=porcupine.frame_length)
recorder.start()

print("Listening...")

while True:
pcm = recorder.read()
result = porcupine.process(pcm)
if result >= 0:
print("Wake word detected!")

porcupine.delete()
recorder.stop()
recorder.delete()

Opção B: Palavras‑chave personalizadas

Acesse o Picovoice Console e abra a página de palavra de ativação personalizada. Selecione o idioma de sua preferência e defina uma palavra de ativação, por exemplo “hi flex”. Você pode testar a palavra de ativação no console para verificar o desempenho de detecção.

pir

Quando estiver satisfeito, clique em Train para gerar o modelo. Em seguida, selecione sua plataforma de destino — aqui escolhemos Raspberry Pi. Por fim, baixe o arquivo .ppn gerado, que será usado na sua aplicação para detecção de palavra de ativação personalizada.

pir

Código de exemplo


import pvporcupine
from pvrecorder import PvRecorder

access_key = "YOUR_ACCESS_KEY"

porcupine = pvporcupine.create(
access_key=access_key,
keyword_paths=["/home/pi/porcupine_env/hi-flex_en_raspberry-pi_v4_0_0.ppn"]
)

recorder = PvRecorder(device_index=-1, frame_length=porcupine.frame_length)
recorder.start()

print("Listening...")

while True:
pcm = recorder.read()
result = porcupine.process(pcm)
if result >= 0:
print("Wake word detected!")

porcupine.delete()
recorder.stop()
recorder.delete()

Fala para intenção

Picovoice Rhino é um mecanismo de fala‑para‑intenção que converte comandos falados diretamente em intenções estruturadas sem exigir uma etapa separada de fala‑para‑texto. Ele usa uma abordagem de aprendizado profundo em etapa única, combinando reconhecimento de fala e compreensão de linguagem natural para melhorar a precisão e reduzir a latência. O Rhino é otimizado para processamento em tempo real no dispositivo, o que significa que ele funciona offline com zero atraso de rede e mantém todos os dados de voz privados. Ele é altamente eficiente e projetado para sistemas embarcados e de IoT como Raspberry Pi e microcontroladores. Além disso, o Rhino permite que desenvolvedores definam contextos personalizados com intenções e slots, possibilitando que sistemas entendam comandos específicos de domínio e acionem ações diretamente a partir da entrada de voz.

Criar um contexto

Um contexto define o conjunto de comandos falados, intenções e slots para um domínio específico; aqui, criamos um contexto “Bumblebee” para controlar o ReSpeaker Flex usando comandos de voz. Acesse o console Rhino Speech‑to‑Intent no Picovoice e crie um novo contexto chamado Bumblebee usando o template “Empty”.

pir

Criar intenções

No nível superior, um contexto é uma coleção de intenções que representam ações do usuário dentro de um domínio. Por exemplo, crie uma intenção chamada “Gesture” no contexto HiFlex para representar comandos de voz relacionados a gestos.

pir

Adicionando expressões a uma intenção

Um usuário pode expressar a mesma intenção de várias maneiras, e cada variação é chamada de expressão. Para a intenção Gesture, adicione expressões como “wave your head” e “shake your antenna”, pois ambas correspondem ao mesmo grupo de ações.

pir

Use slots para capturar variáveis

Use slots para capturar partes variáveis nas falas dos usuários. Neste caso, palavras como “wave” e “shake” representam um estado mutável dentro do comando, portanto podem ser modeladas como uma variável. Crie um slot chamado “commands” no contexto do Rhino para capturar essas variações dinamicamente.

pir

pir

Modifique as expressões existentes para incluir o slot recém-criado. Ao adicionar um slot, use o símbolo $ para indicar um slot, depois selecione o tipo de slot desejado no menu suspenso de preenchimento automático e atribua a ele um nome.

pir

Se você estiver pronto, teste primeiro clicando em test

pir

Vamos baixar o modelo

Quando o design do contexto estiver concluído, clique no ícone de download no canto superior direito, selecione a plataforma de destino e clique em “Download.” O Picovoice Console irá treinar automaticamente o modelo Rhino para essa plataforma, o que normalmente leva cerca de 5–10 segundos.

pir

Código de Exemplo

import pvporcupine
import pvrhino
from pvrecorder import PvRecorder

access_key = "ACCESS KEY"

rhino = pvrhino.create(
access_key=access_key,
context_path="/home/pi/porcupine_env/Bumblebee_en_raspberry-pi_v4_0_0.rhn",
)

recorder = PvRecorder(device_index=-1, frame_length=rhino.frame_length)
recorder.start()

print("Listening...")

while True:
pcm = recorder.read()
is_finalized = rhino.process(pcm)

if is_finalized:
inference = rhino.get_inference()
if inference.is_understood:
print("Intent:", inference.intent)
print("Slots:", inference.slots)
else:
print("Didn't understand")

rhino.reset()


Suporte Técnico & Discussão de Produto

Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...