reSpeaker Flex Control Despertador de Voz y NLU con Pico-voice
Introducción
Picovoice es una empresa especializada en IA de voz en el dispositivo, que proporciona un stack completo de tecnologías como detección de palabra de activación, conversión de voz a texto y reconocimiento de intención que se ejecutan localmente en dispositivos embebidos y de borde sin depender de la nube. Sus soluciones están diseñadas para baja latencia, privacidad y despliegue multiplataforma, lo que las hace adecuadas para sistemas IoT y robóticos.
Porcupine es el motor de detección de palabra de activación ligero y muy preciso de Picovoice, creado usando redes neuronales profundas y optimizado para sistemas embebidos. Permite aplicaciones siempre en escucha manteniendo un bajo costo computacional y puede ejecutarse en plataformas como microcontroladores, Raspberry Pi, dispositivos móviles y escritorio.
Picovoice Rhino es un motor de voz a intención que convierte directamente los comandos hablados en intenciones estructuradas sin requerir un paso separado de voz a texto. Utiliza un enfoque de aprendizaje profundo de un solo paso, combinando reconocimiento de voz y comprensión del lenguaje natural para mejorar la precisión y reducir la latencia.
¿Qué son NLP, NLU y STT?
El Procesamiento de Lenguaje Natural (NLP) es el campo amplio que permite a las máquinas procesar el lenguaje humano, mientras que la Comprensión de Lenguaje Natural (NLU) es un subconjunto que se centra específicamente en extraer el significado o la intención de ese lenguaje. La Conversión de Voz a Texto (STT) transforma el audio hablado en texto, que luego normalmente se pasa a NLU para entender la intención del usuario. Picovoice Rhino adopta un enfoque diferente al omitir STT y convertir directamente la voz en intención (voz a intención), mejorando la eficiencia y la precisión.
La detección de palabra clave (palabra de activación) (por ejemplo, “Hola dispositivo”) es el primer paso que activa el sistema, y tras la activación se utiliza ya sea la canalización STT → NLU o voz-a-intención (Rhino) para comprender y ejecutar el comando.
Objetivo
Esta demostración muestra cómo la detección de palabra de activación usando Picovoice Porcupine funciona junto con Picovoice Rhino para un procesamiento de voz a intención eficiente en una Raspberry Pi. El sistema primero escucha una palabra clave para activarse y, una vez disparado, convierte directamente los comandos hablados en intenciones accionables sin depender de un procesamiento pesado en la nube. Este enfoque está muy optimizado para dispositivos embebidos de pocos recursos, lo que lo hace ideal para aplicaciones de robótica e IA en el borde. Permite una interacción por voz en tiempo real y baja latencia, garantizando un rendimiento rápido y fiable incluso en hardware limitado.
Hardware necesario

Detección de palabra de activación
Una palabra de activación en sistemas embebidos robóticos permite el procesamiento basado en eventos, lo que permite que el dispositivo permanezca en un estado de escucha de bajo consumo y solo active el procesamiento pesado de voz cuando sea necesario. Esto reduce significativamente el consumo de CPU, memoria y energía en hardware con recursos limitados como microcontroladores y dispositivos de borde. También actúa como un mecanismo de compuerta en la canalización de audio, filtrando el ruido irrelevante y evitando activaciones innecesarias del reconocimiento de voz y la lógica de control. Desde una perspectiva de privacidad, la detección de palabra de activación garantiza que el audio solo se capture o transmita después de que se detecte una intención explícita del usuario, manteniendo la mayor parte del procesamiento de datos en el dispositivo. Además, mejora la interacción humano-robot al proporcionar un disparador natural para el compromiso, ayudando al sistema a distinguir entre conversación ambiental y comandos dirigidos.
El uso de una palabra de activación junto con un sistema avanzado de arreglo de micrófonos como reSpeaker Flex permite una interacción por voz eficiente y fiable en sistemas encarnados. La palabra de activación garantiza que el sistema solo active el procesamiento completo de voz cuando sea necesario, reduciendo el consumo de energía y el uso de CPU en hardware embebido. El arreglo de micrófonos mejora esto proporcionando formación de haces, supresión de ruido y detección de dirección en el arreglo de micrófonos circular, permitiendo un reconocimiento preciso de la palabra de activación incluso en entornos ruidosos. Esta combinación minimiza falsos disparos y mejora la capacidad de respuesta general del sistema. También favorece una mejor interacción humano-robot al garantizar que el dispositivo responda solo cuando se le habla explícitamente y pueda centrarse en el orador correcto.
Cómo usar la palabra de activación con Pico-voice
Regístrate en Picovoice y obtendrás una Access Key

Opción A: Palabras clave integradas
Porcupine proporciona varias opciones integradas de palabras de activación como AMERICANO, BLUEBERRY, BUMBLEBEE, GRAPEFRUIT, GRASSHOPPER, PICOVOICE, PORCUPINE, TERMINATOR y JARVIS, que pueden usarse directamente con una access key válida. Con la access key, estas palabras clave pueden integrarse fácilmente en tu aplicación sin entrenar un modelo personalizado.
En esta configuración, utilizamos una Raspberry Pi 5 como dispositivo host, y la detección de la palabra de activación se ejecutará localmente en el dispositivo. El sistema de micrófonos basado en XMOS está flasheado con firmware de audio USB, lo que permite que el sistema operativo lo reconozca como un dispositivo de entrada de audio estándar.
Para comenzar, es necesario instalar en el entorno las bibliotecas y dependencias requeridas de Porcupine.
pip install pvporcupine
Después de la instalación, se puede usar un código de ejemplo para inicializar el grabador de audio, cargar la palabra clave seleccionada y escuchar continuamente la palabra de activación. Una vez que se detecta la palabra clave, el sistema puede activar acciones adicionales como grabar o procesar 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()
Opción B: Palabras clave personalizadas
Ve a la Picovoice Console y abre la página de palabra de activación personalizada. Selecciona tu idioma preferido y define una palabra de activación, por ejemplo “hi flex”. Puedes probar la palabra de activación en la consola para verificar su rendimiento de detección.

Una vez satisfecho, haz clic en Train para generar el modelo. Luego selecciona tu plataforma de destino—aquí elegimos Raspberry Pi. Finalmente, descarga el archivo .ppn generado, que se utilizará en tu aplicación para la detección de palabra de activación personalizada.

Código de ejemplo
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()
De voz a intención
Picovoice Rhino es un motor de voz a intención que convierte directamente los comandos hablados en intenciones estructuradas sin requerir un paso separado de voz a texto. Utiliza un enfoque de aprendizaje profundo de un solo paso, combinando reconocimiento de voz y comprensión del lenguaje natural para mejorar la precisión y reducir la latencia. Rhino está optimizado para el procesamiento en tiempo real en el dispositivo, lo que significa que funciona sin conexión, con cero retraso de red y mantiene todos los datos de voz en privado. Es altamente eficiente y está diseñado para sistemas embebidos e IoT como Raspberry Pi y microcontroladores. Además, Rhino permite a los desarrolladores definir contextos personalizados con intenciones y slots, lo que permite que los sistemas comprendan comandos específicos de dominio y activen acciones directamente desde la entrada de voz.
Crear un contexto
Un contexto define el conjunto de comandos hablados, intenciones y slots para un dominio específico; aquí creamos un contexto “Bumblebee” para controlar ReSpeaker Flex usando comandos de voz. Ve a la consola Rhino Speech-to-Intent en Picovoice y crea un nuevo contexto llamado Bumblebee usando la plantilla “Empty”.

Crear intenciones
En el nivel superior, un contexto es una colección de intenciones que representan acciones del usuario dentro de un dominio. Por ejemplo, crea una intención llamada “Gesture” en el contexto HiFlex para representar comandos de voz relacionados con gestos.

Añadir expresiones a una intención
Un usuario puede expresar la misma intención de múltiples maneras, y cada variación se llama expresión. Para la intención Gesture, añade expresiones como “wave your head” y “shake your antenna”, ya que ambas se asignan al mismo grupo de acción.

Usar slots para capturar variables
Utiliza slots para capturar las partes variables dentro de las expresiones del usuario. En este caso, palabras como “wave” y “shake” representan un estado cambiante dentro del comando, por lo que pueden modelarse como una variable. Crea un slot llamado “commands” en el contexto de Rhino para capturar estas variaciones de forma dinámica.


Modifica las expresiones existentes para incluir el slot recién creado. Al añadir un slot, utiliza el símbolo $ para indicar un slot, luego selecciona el tipo de slot deseado desde el menú desplegable de autocompletado y asígnale un nombre.

Si estás listo, primero prueba haciendo clic en test

Vamos a descargar el modelo
Una vez que el diseño del contexto esté completo, haz clic en el icono de descarga en la esquina superior derecha, selecciona la plataforma de destino y haz clic en “Download.” La Picovoice Console entrenará automáticamente el modelo Rhino para esa plataforma, lo que suele tardar unos 5–10 segundos.

Código de ejemplo
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()
Soporte técnico y debate sobre el producto
Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diferentes tipos de soporte para garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a distintas preferencias y necesidades.