Nota

Hola, ¡bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook! Sumérgete aún más en el mundo de Raspberry Pi, Arduino y ESP32 con otros apasionados.

¿Por qué unirse?

  • Soporte de Expertos: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Avances Exclusivos: Obtén acceso anticipado a los anuncios de nuevos productos y a vistas previas.

  • Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones y Sorteos Festivos: Participa en sorteos y promociones especiales durante las festividades.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [here] y únete hoy mismo.

16. STT con Vosk (Offline)

Vosk es un motor de reconocimiento de voz a texto (STT) ligero que admite muchos idiomas y funciona completamente sin conexión en Raspberry Pi. Solo necesitas acceso a internet una vez para descargar un modelo de idioma. Después de eso, todo funciona sin conexión a la red.

En esta lección, vamos a:

  • Verificar el micrófono en la Raspberry Pi.

  • Instalar y probar Vosk con un modelo de idioma seleccionado.

Antes de Comenzar

Asegúrate de haber completado:

1. Verifica Tu Micrófono

Antes de usar el reconocimiento de voz, asegúrate de que tu micrófono USB funcione correctamente.

  1. Lista los dispositivos de grabación disponibles:

    arecord -l
    

    Busca una línea como card 1: ... device 0.

  2. Graba una muestra corta (reemplaza 1,0 con los números que encontraste):

    arecord -D plughw:1,0 -f S16_LE -r 16000 -d 3 test.wav
    
    • Ejemplo: si tu dispositivo es card 2, device 0, usa:

    arecord -D plughw:2,0 -f S16_LE -r 16000 -d 3 test.wav
    
  3. Reproduce la grabación para confirmar:

    aplay test.wav
    
  4. Ajusta el volumen del micrófono si es necesario:

    alsamixer
    
    • Presiona F6 para seleccionar tu micrófono USB.

    • Busca el canal Mic o Capture.

    • Asegúrate de que no esté silenciado ([MM] significa silencio; presiona M para activar → debería mostrar [OO]).

    • Usa las flechas ↑ / ↓ para cambiar el volumen de grabación.

2. Probar Vosk

Pasos para probarlo:

  1. Crea un nuevo archivo:

    cd ~/pidog/examples
    sudo nano test_stt_vosk.py
    
  2. Copia el código de ejemplo dentro. Presiona Ctrl+X, luego Y y Enter para guardar y salir.

    from pidog.stt import Vosk
    
    vosk = Vosk(language="en-us")
    
    print(vosk.available_languages)
    
    while True:
        print("Say something")
        result = vosk.listen(stream=False)
        print(result)
    
  3. Ejecuta el programa:

    sudo python3 test_stt_vosk.py
    
  4. La primera vez que ejecutes este código con un nuevo idioma, Vosk descargará automáticamente el modelo de idioma (por defecto descargará la versión pequeña). Al mismo tiempo, imprimirá la lista de idiomas compatibles. Luego verás:

    vosk-model-small-en-us-0.15.zip: 100%|███████████████████| 39.3M/39.3M [00:05<00:00, 7.85MB/s]
    ['ar', 'ar-tn', 'ca', 'cn', 'cs', 'de', 'en-gb', 'en-in', 'en-us', 'eo', 'es', 'fa', 'fr', 'gu', 'hi', 'it', 'ja', 'ko', 'kz', 'nl', 'pl', 'pt', 'ru', 'sv', 'te', 'tg', 'tr', 'ua', 'uz', 'vn']
    Say something
    

    Esto significa:

    • El archivo del modelo (vosk-model-small-en-us-0.15) se ha descargado.

    • Se ha impreso la lista de idiomas admitidos.

    • El sistema ahora está escuchando: habla por el micrófono de Pidog y el texto reconocido aparecerá en la terminal.

    Consejos:

    • Mantén el micrófono a unos 15–30 cm de distancia.

    • Elige un modelo que coincida con tu idioma y acento.

Modo Streaming (opcional)

También puedes transmitir voz de forma continua para ver resultados parciales mientras hablas:

from pidog.stt import Vosk

vosk = Vosk(language="en-us")

while True:
    print("Say something")
    for result in vosk.listen(stream=True):
        if result["done"]:
            print(f"final:   {result['final']}")
        else:
            print(f"partial: {result['partial']}", end="\r", flush=True)

Solución de Problemas

  • No such file or directory (al ejecutar `arecord`)

    Es posible que hayas usado un número de tarjeta/dispositivo incorrecto. Ejecuta:

    arecord -l
    

    y reemplaza 1,0 con los números que aparezcan para tu micrófono USB.

  • El archivo grabado no tiene sonido

    Abre el mezclador y verifica el volumen del micrófono:

    alsamixer
    
    • Presiona F6 para seleccionar tu micrófono USB.

    • Asegúrate de que Mic/Capture no esté silenciado ([OO] en lugar de [MM]).

    • Aumenta el volumen con ↑.

  • Vosk no reconoce la voz

    • Asegúrate de que el código de idioma coincida con tu modelo (por ejemplo, en-us para inglés, zh-cn para chino).

    • Mantén el micrófono a 15–30 cm y evita el ruido de fondo.

    • Habla con claridad y despacio.

  • Alta latencia / reconocimiento lento

    • La descarga automática por defecto es un modelo pequeño (más rápido, pero menos preciso).

    • Si sigue siendo lento, cierra otros programas para liberar CPU.