Skip to main content

Desplegando un Asistente de Voz Inteligente Offline de Extremo a Extremo

Descripción General

Este proyecto demuestra un asistente de voz inteligente completamente local diseñado para oficinas inteligentes y espacios inteligentes. Utiliza el array de micrófonos ReSpeaker XVF3800 para captura de voz de alta calidad, combinado con speech-to-text (STT) en el dispositivo para transcripción precisa. Un modelo de lenguaje grande (LLM) local procesa las consultas del usuario de manera inteligente sin depender de la nube, asegurando privacidad y baja latencia. Text-to-speech (TTS) genera respuestas de voz naturales, permitiendo interacción en tiempo real. El sistema es ideal para entornos como oficinas, centros comerciales, quioscos y salas de reuniones donde el control de voz seguro y offline es esencial.

Hardware Requerido

ReSpeaker XVF3800 Jetson AGX Orin 32GB H01 Kit

Preparar los Dispositivos

ReSpeaker XVF3800 – Instalación de Firmware USB

Asegúrate de que el Array de Micrófonos USB ReSpeaker XVF3800 esté actualizado con el firmware más reciente antes de usarlo.

  • Sigue la guía oficial de actualización de firmware:

Este paso asegura entrada de audio USB estable y compatibilidad con pipelines de procesamiento de voz posteriores.


NVIDIA Jetson AGX Orin – Configuración Inicial

Si tu Jetson AGX Orin aún no está configurado, flashéalo con la versión apropiada de JetPack.

  • Guía de configuración oficial:

Después de flashear y arrancar en Ubuntu, actualiza el sistema e instala los componentes de JetPack:

sudo apt update
sudo apt install nvidia-jetpack

Configuración del Entorno CUDA

Verificar la Versión de CUDA Instalada

Verifica qué directorios de CUDA están disponibles:

ls /usr/local

Deberías ver una carpeta como cuda, cuda-12.x, o similar.


Agregar Rutas de CUDA Permanentemente

Edita tu archivo de configuración de shell:

nano ~/.bashrc

Agrega las siguientes líneas al final (reemplaza con tu versión real de CUDA):

# CUDA paths
export PATH=/usr/local/cuda-(your_version)/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-(your_version)/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Aplica los cambios:

source ~/.bashrc

Verificar la Instalación de CUDA

Confirma que CUDA esté correctamente instalado y accesible:

nvcc --version

Si se muestra la versión de CUDA, el soporte de GPU está listo.


Instalar Whisper con Soporte de GPU

Clonar el Repositorio de Whisper

Whisper se construye desde el código fuente para habilitar la aceleración CUDA.

Instala las dependencias requeridas:

sudo apt-get install libsdl2-dev

Construir Whisper con CUDA Habilitado

Desde el directorio whisper.cpp, ejecuta:

cmake -B build -DGGML_CUDA=1 -DWHISPER_SDL2=ON
cmake --build build -j --config Release

Esto compila Whisper con aceleración de GPU y soporte SDL.


Descargar el Modelo de Whisper

Descarga el modelo de Whisper desde Hugging Face:

  • Modelo:

    • ggml-base-q8_0.bin

Coloca el modelo descargado dentro del directorio models/:

whisper.cpp/models/

Ejecutar el Servidor de Whisper

Inicia el servidor de Whisper con soporte de GPU:

cd whisper.cpp
./build/bin/whisper-server \
-m models/ggml-base.en.bin \
--host 0.0.0.0 \
--port 8080 \
--gpu

Esto lanza un servidor de speech-to-text en tiempo real accesible a través de la red.


Instalar Ollama para Inferencia de LLM Local

Ollama oficialmente soporta dispositivos NVIDIA Jetson y proporciona ejecución de LLM local acelerada por CUDA.

Instala Ollama usando el instalador oficial:

curl -fsSL https://ollama.com/install.sh | sh

Ejecuta el modelo Gemma 3:

ollama run gemma3:4b

Asistente de IA de Voz Inteligente – Guía de Inicio Rápido

Resumen de Arquitectura

  1. Detección de Palabra de Activación – Escucha continuamente una frase de activación predefinida.
  2. Speech-to-Text (STT) – Convierte el habla del usuario en texto usando un motor de reconocimiento de voz local.
  3. LLM potenciado por RAG – Recupera contexto relevante de una base de datos vectorial y genera respuestas inteligentes usando un LLM local.
  4. Text-to-Speech (TTS) – Convierte la respuesta generada en habla de sonido natural.

Todo el procesamiento se realiza localmente para asegurar baja latencia, privacidad de datos y capacidad offline.

Repositorio del proyecto:

Clona el repositorio

git clone https://github.com/KasunThushara/LocalVoiceAssistant.git

Inicio Rápido

Instalar Dependencias

Asegúrate de que Python y las dependencias del sistema requeridas estén instaladas, luego ejecuta:

pip install -r requirements.txt

Descargar un Modelo de Text-to-Speech (TTS)

Este proyecto usa modelos Piper TTS. A continuación se muestra un ejemplo usando una voz masculina en inglés (Amy):

# Example: female voice (amy)
wget -O models/en_US-amy-low.onnx \
https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/amy/low/en_US-amy-low.onnx

wget -O models/en_US-amy-low.onnx.json \
https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/amy/low/en_US-amy-low.onnx.json

Puedes reemplazar esto con cualquier modelo de voz Piper compatible según sea necesario.


Descargar Modelo de Embedding (Configuración Única)

El modelo de embedding es requerido para construir la base de datos vectorial usada por el pipeline RAG.

python download_sentence_tf.py

Este paso solo necesita ejecutarse una vez.


Construir la Base de Datos Vectorial

Crea o reconstruye la base de datos vectorial usada para recuperación contextual:

python test_scripts/rebuild_vector.py

Este proceso indexa tus documentos y los prepara para búsqueda semántica rápida.


Ejecutar la Aplicación

Inicia el Asistente de IA de Voz Inteligente:

python app.py

Una vez en funcionamiento, el sistema escuchará la palabra de activación y responderá a consultas de voz en tiempo real.


Referencias

Soporte Técnico y Discusión del Producto

¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para atender diferentes preferencias y necesidades.

Loading Comments...