.. note::
Bonjour, bienvenue dans la communauté des passionnés de Raspberry Pi, Arduino et ESP32 sur Facebook ! Explorez plus en profondeur l'univers de Raspberry Pi, Arduino et ESP32 avec d'autres passionnés.
**Pourquoi rejoindre ?**
- **Support d'experts** : Résolvez les problèmes post-vente et les défis techniques avec l'aide de notre communauté et de notre équipe.
- **Apprendre et partager** : Échangez des astuces et des tutoriels pour améliorer vos compétences.
- **Aperçus exclusifs** : Bénéficiez d'un accès anticipé aux annonces de nouveaux produits et d'aperçus exclusifs.
- **Réductions spéciales** : Profitez de remises exclusives sur nos produits les plus récents.
- **Promotions festives et concours** : Participez à des concours et à des promotions spéciales.
👉 Prêt à explorer et à créer avec nous ? Cliquez sur [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui !
.. _py_sound:
3. Effet Sonore
=====================
Dans cet exemple, nous utilisons les effets sonores de PiCrawler (plus précisément, ceux du Robot HAT). Cela se compose de trois parties : **Musique**, **Son**, et **Texte à la parole**.
.. .. image:: img/tts.png
**Installer i2samp**
Avant d'utiliser ces fonctions, commencez par activer le haut-parleur pour qu'il soit activé et puisse émettre des sons.
Exécutez ``i2samp.sh``, ce script installera tout ce qui est nécessaire pour utiliser l'amplificateur i2s.
.. raw:: html
.. code-block::
cd ~/picrawler/
sudo bash i2samp.sh
Plusieurs invites apparaîtront vous demandant de confirmer l'action. Répondez à toutes les invites par **Y**. Après avoir effectué les modifications sur le système Raspberry Pi, un redémarrage sera nécessaire pour que ces changements prennent effet.
Après le redémarrage, exécutez à nouveau le script ``i2samp.sh`` pour tester l'amplificateur. Si un son est émis par le haut-parleur, la configuration est terminée.
**Exécuter le Code**
.. raw:: html
.. code-block::
cd ~/picrawler/examples
sudo python3 3_sound_effect.py
Lorsque le programme démarre, un menu de contrôle s’affiche dans le terminal.
Appuyer sur une touche déclenche immédiatement la fonction correspondante.
* ``q`` : Active ou désactive la musique de fond.
* ``1`` : Joue plusieurs effets sonores l’un après l’autre (mode bloquant).
* ``2`` : Joue les mêmes effets sonores en utilisant le multithreading (mode non bloquant).
* ``t`` : Le système prononce le mot « Hello » en utilisant la synthèse vocale.
Le programme fonctionne en continu et attend une entrée clavier.
Appuyez sur Ctrl+C pour arrêter le programme.
Avant de quitter, toute musique de fond est arrêtée automatiquement.
**Code**
.. 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()
**Comment ça fonctionne ?**
Les fonctions liées à la musique de fond comprennent :
* ``music = Music()`` : Déclare l'objet.
* ``music.music_set_volume(20)`` : Définit le volume, avec une plage de 0 à 100.
* ``music.music_play(./musics/sports-Ahjay_Stelino.mp3)`` : Joue le fichier musical, ici le fichier **sports-Ahjay_Stelino.mp3** situé sous le chemin ``./musics``.
* ``music.music_stop()`` : Arrête la musique de fond.
.. note::
Vous pouvez ajouter différents effets sonores ou musiques dans les dossiers ``musics`` ou ``sounds`` via :ref:`filezilla`.
Les fonctions liées aux effets sonores comprennent :
* ``music = Music()``
* ``music.sound_play('./sounds/talk1.wav')`` : Joue le fichier d'effet sonore, ici le fichier **talk1.wav** situé sous le chemin ``./musics``.
* ``music.sound_play_threading('./sounds/talk1.wav')`` : Joue le fichier d'effet sonore en mode fil d'exécution, sans suspendre le fil principal.
Les fonctions liées au texte à la parole comprennent :
* ``tts = TTS()``
* ``tts.say(words)`` : Lecture audio du texte.
* ``tts.lang("en-US")`` : Définit la langue.
.. note::
Vous pouvez définir la langue en ajustant les paramètres de ``lang("")`` avec les caractères suivants.
.. list-table:: Language
:widths: 15 50
* - zh-CN
- Mandarin (Chinois)
* - en-US
- Anglais - États-Unis
* - en-GB
- Anglais - Royaume-Uni
* - de-DE
- Allemand - Allemagne
* - es-ES
- Espagnol - Espagne
* - fr-FR
- Français - France
* - it-IT
- Italien - Italie