.. note:: Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook. ¡Explora más a fondo Raspberry Pi, Arduino y ESP32 con otros entusiastas! **¿Por qué unirse?** - **Soporte experto**: Resuelve problemas postventa 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 anuncios de nuevos productos y vistas previas. - **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes. - **Promociones festivas y sorteos**: Participa en sorteos y promociones de temporada. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo. .. _py_sound: Efectos de Sonido ===================== En este ejemplo, utilizaremos los efectos de sonido de PiCrawler (o, más específicamente, de Robot HAT). Consiste en tres partes: **Música**, **Sonido**, y **Texto a Voz**. .. .. image:: img/tts.png **Instalar i2samp** Antes de usar estas funciones, primero activa el altavoz para habilitarlo y que pueda emitir sonidos. Ejecuta ``i2samp.sh``, este script instalará todo lo necesario para utilizar el amplificador i2s. .. raw:: html .. code-block:: cd ~/picrawler/ sudo bash i2samp.sh Se te pedirá que confirmes varias solicitudes. Responde a todas con una **Y**. Después de aplicar los cambios al sistema Raspberry Pi, será necesario reiniciar para que surtan efecto. Después de reiniciar, ejecuta nuevamente el script ``i2samp.sh`` para probar el amplificador. Si el sonido se reproduce correctamente desde el altavoz, la configuración está completa. **Ejecutar el Código** .. raw:: html .. code-block:: cd ~/picrawler/examples sudo python3 3_sound_effect.py Cuando el programa comienza, se muestra un menú de control en la terminal. Al presionar una tecla, se activa inmediatamente la función correspondiente. * ``q``: Activa o desactiva la música de fondo. * ``1``: Reproduce varios efectos de sonido uno tras otro (modo bloqueante). * ``2``: Reproduce los mismos efectos de sonido usando threading (modo no bloqueante). * ``t``: El sistema pronuncia la palabra "Hello" usando texto a voz. El programa se ejecuta continuamente y espera la entrada del teclado. Presione Ctrl+C para detener el programa. Antes de salir, cualquier música de fondo se detiene automáticamente. **Código** .. code-block:: python from time import sleep import readchar from robot_hat import Music, TTS music = Music() tts = TTS() manual = ''' Press a key to trigger actions (no Enter needed): q: Play/Stop background music 1: Play sound effect (blocking) 2: Play sound effect (threading) t: Text to speak Ctrl^C: quit ''' def main(): print(manual) flag_bgm = False music.music_set_volume(20) tts.lang("en-US") try: while True: # Real-time key input (no Enter required) key = readchar.readkey().lower() if key == "q": flag_bgm = not flag_bgm if flag_bgm: music.music_play('./musics/sports-Ahjay_Stelino.mp3') else: music.music_stop() elif key == "1": music.sound_play('./sounds/talk1.wav') sleep(0.05) music.sound_play('./sounds/talk3.wav') sleep(0.05) music.sound_play('./sounds/sign.wav') sleep(0.5) elif key == "2": music.sound_play_threading('./sounds/talk1.wav') sleep(0.05) music.sound_play_threading('./sounds/talk3.wav') sleep(0.05) music.sound_play_threading('./sounds/sign.wav') sleep(0.5) elif key == "t": tts.say("Hello") except KeyboardInterrupt: print("\nquit") finally: # Stop music before exit to reduce error messages try: music.music_stop() except Exception: pass if __name__ == "__main__": main() **¿Cómo funciona?** Las funciones relacionadas con la música de fondo incluyen: * ``music = Music()`` : Declarar el objeto. * ``music.music_set_volume(20)`` : Configurar el volumen, el rango es de 0 a 100. * ``music.music_play('./musics/sports-Ahjay_Stelino.mp3')`` : Reproducir archivos de música, en este caso el archivo **sports-Ahjay_Stelino.mp3** en la ruta ``./musics``. * ``music.music_stop()`` : Detener la reproducción de música de fondo. .. note:: Puedes añadir diferentes efectos de sonido o música a las carpetas ``musics`` o ``sounds`` mediante :ref:`filezilla`. Las funciones relacionadas con los efectos de sonido incluyen: * ``music = Music()`` * ``music.sound_play('./sounds/talk1.wav')`` : Reproducir el archivo de efecto de sonido, en este caso el archivo **talk1.wav** en la ruta ``./sounds``. * ``music.sound_play_threading('./sounds/talk1.wav')`` : Reproducir el archivo de efecto de sonido en un modo de hilo nuevo sin suspender el hilo principal. Las funciones relacionadas con Texto a Voz incluyen: * ``tts = TTS()`` * ``tts.say(words)`` : Convertir texto a audio. * ``tts.lang("en-US")`` : Configurar el idioma. .. note:: Configura el idioma mediante el parámetro de ``lang("")`` con los siguientes códigos: .. list-table:: Idiomas :widths: 15 50 * - zh-CN - Mandarín (Chino) * - en-US - Inglés-Estados Unidos * - en-GB - Inglés-Reino Unido * - de-DE - Alemán-Deutsch * - es-ES - Español-España * - fr-FR - Francés-Le français * - it-IT - Italiano-Lingua italiana