Nota
Hola, ¡bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas.
¿Por qué unirte?
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.
Preestrenos exclusivos: Obtén acceso anticipado a nuevos anuncios de productos y avances exclusivos.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.
Promociones festivas y sorteos: Participa en sorteos y promociones especiales durante las festividades.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [here] y únete hoy mismo.
14. Coche con Indicaciones de Voz usando Espeak y Pico2Wave
En esta lección usaremos dos motores de texto a voz (TTS) integrados en Raspberry Pi — Espeak y Pico2Wave — para hacer que el PiCar-X hable.
Estos dos motores son sencillos y funcionan sin conexión, pero suenan bastante diferentes:
Espeak: muy ligero y rápido, pero con voz robótica. Puedes ajustar la velocidad, el tono y el volumen.
Pico2Wave: produce una voz más suave y natural que Espeak, pero con menos opciones de configuración.
Escucharás la diferencia en calidad de voz y funcionalidades, y luego construirás un “coche con indicaciones de voz” que anuncia sus acciones antes de moverse.
Antes de Empezar
Asegúrate de haber completado:
Instalar Todos los Módulos (Importante) — Instala los módulos
robot-hat,vilib,picar-xy luego ejecuta el scripti2samp.sh.
1. Probar Espeak
Espeak es un motor TTS ligero incluido en Raspberry Pi OS. Su voz suena robótica, pero es altamente configurable: puedes ajustar el volumen, el tono, la velocidad y más.
Pasos para probarlo:
Crea un nuevo archivo con el comando:
cd ~/picar-x/example sudo nano test_tts_espeak.py
Luego copia el código de ejemplo en él. Pulsa
Ctrl+X, luegoYy finalmenteEnterpara guardar y salir.from picarx.tts import Espeak tts = Espeak() # Optional voice tuning # tts.set_amp(100) # 0 to 200 # tts.set_speed(150) # 80 to 260 # tts.set_gap(5) # 0 to 200 # tts.set_pitch(50) # 0 to 99 # Quick hello (sanity check) tts.say("Hello! I'm Espeak TTS.")
Ejecuta el programa con:
sudo python3 test_tts_espeak.py
Deberías escuchar al PiCar-X decir: “Hello! I’m Espeak TTS.”
Descomenta las líneas de ajuste de voz en el código para experimentar cómo
amp,speed,gapypitchafectan al sonido.
2. Probar Pico2Wave
Pico2Wave produce una voz más natural y humana que Espeak. Es más sencillo de usar pero menos flexible: solo puedes cambiar el idioma, no el tono ni la velocidad.
Pasos para probarlo:
Crea un nuevo archivo con el comando:
cd ~/picar-x/example sudo nano test_tts_pico2wave.py
Luego copia el código de ejemplo en él. Pulsa
Ctrl+X, luegoYy finalmenteEnterpara guardar y salir.from picarx.tts import Pico2Wave tts = Pico2Wave() tts.set_lang('en-US') # en-US, en-GB, de-DE, es-ES, fr-FR, it-IT # Saludo rápido (prueba básica) tts.say("Hello! I'm Pico2Wave TTS.")
Ejecuta el programa con:
sudo python3 test_tts_pico2wave.py
Deberías escuchar al PiCar-X decir: “Hello! I’m Pico2Wave TTS.”
Prueba cambiando el idioma (por ejemplo,
es-ESpara español) y escucha la diferencia.
3. Coche con Indicaciones de Voz
Ahora combinemos Pico2Wave o Espeak con el código de conducción de PiCar-X para crear un “coche con indicaciones de voz”: antes de cada acción, el coche anunciará lo que está a punto de hacer.
Ejecutar el Código
cd ~/picar-x/example
sudo python3 14.voice_promt_car.py
Ejecuta este código y verás que tu PiCar-X avanza, retrocede y gira, anunciando cada movimiento antes de hacerlo. Esto hace que tu coche sea más seguro, amigable e interactivo.
Código
from picarx import Picarx
from picarx.tts import Espeak
import time
# If you want to try Pico2Wave instead of Espeak, uncomment below:
# from picarx.tts import Pico2Wave
# tts = Pico2Wave()
# tts.set_lang('en-US') # Options: en-US, en-GB, de-DE, es-ES, fr-FR, it-IT
px = Picarx()
tts = Espeak()
# Quick hello (test)
tts.say("Hello! I'm PiCar-X.")
def main():
try:
# Forward
tts.say("Moving forward")
px.forward(30)
time.sleep(2)
px.stop()
# Backward
tts.say("Moving backward")
px.backward(30)
time.sleep(2)
px.stop()
# Turn left
tts.say("Turning left")
px.set_dir_servo_angle(-20)
px.forward(30)
time.sleep(2)
px.stop()
px.set_dir_servo_angle(0)
# Turn right
tts.say("Turning right")
px.set_dir_servo_angle(20)
px.forward(30)
time.sleep(2)
px.stop()
px.set_dir_servo_angle(0)
except KeyboardInterrupt:
# Stop if interrupted
px.stop()
finally:
# Reset to safe state
px.stop()
px.set_dir_servo_angle(0)
if __name__ == "__main__":
main()
Solución de Problemas
Sin sonido al ejecutar Espeak o Pico2Wave
Verifica que tus altavoces/auriculares estén conectados y que el volumen no esté silenciado.
Ejecuta una prueba rápida en la terminal:
espeak "Hello world" pico2wave -w test.wav "Hello world" && aplay test.wav
Si no escuchas nada, el problema está en la salida de audio, no en tu código Python.
La voz de Espeak suena demasiado rápida o robótica
Prueba ajustando los parámetros en tu código:
tts.set_speed(120) # más lento tts.set_pitch(60) # diferente tono
Permiso denegado al ejecutar el código
Prueba ejecutar con
sudo:sudo python3 test_tts_espeak.py
Comparación: Espeak vs Pico2Wave
Característica |
Espeak |
Pico2Wave |
|---|---|---|
Calidad de voz |
Robótica, sintética |
Más natural, parecida a la humana |
Idiomas |
Inglés por defecto |
Menos, pero comunes |
Ajustable |
Sí (velocidad, tono, etc.) |
No (solo idioma) |
Rendimiento |
Muy rápido y ligero |
Un poco más lento y pesado |