Nota

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 [aquí] y únete hoy mismo.

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.

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.

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

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

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.

Nota

Puedes añadir diferentes efectos de sonido o música a las carpetas musics o sounds mediante Software 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.

Nota

Configura el idioma mediante el parámetro de lang("") con los siguientes códigos:

Idiomas

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