Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Python et Raspberry Pi
  3. Multimédia et audio sur le Raspberry Pi
Extrait - Python et Raspberry Pi Apprenez à développer sur votre nano-ordinateur (3e édition)
Extraits du livre
Python et Raspberry Pi Apprenez à développer sur votre nano-ordinateur (3e édition)
1 avis
Revenir à la page d'achat du livre

Multimédia et audio sur le Raspberry Pi

Dessiner avec Pillow

Comment ne pas aborder l’un des points essentiels de la gestion du Raspberry Pi, à savoir, programmer l’audio et l’image de son Raspberry Pi ? Pour pouvoir arriver à nos fins, Python propose plusieurs bibliothèques. En matière de gestion d’image, la plus populaire s’appelle PIL, acronyme signifiant Python Imaging Library. PIL permet de manipuler facilement des images (redimensionnement, rotation, etc.) et même d’en créer facilement en utilisant les fonctions offertes par cette bibliothèque. Cependant, le projet est tombé en désuétude en 2011 pour être repris en main par un groupe de volontaires, le rebaptisant par la même occasion Pillow. La bibliothèque a été depuis grandement améliorée avec notamment le support de Python 3.x.

1. Créer et manipuler des images

Le premier exemple servira de base pour la suite. La bibliothèque Pillow contient de nombreuses fonctions pour manipuler mais aussi créer des images qui incluent du texte.

Ce premier exemple met en pratique la création d’une image avec un fond bleu assorti du traditionnel Hello world (Chapitre_7/pillow_1.py) ...

Contrôler les entrées et sorties audio avec pyalsaaudio

ALSA (Advanced Linux Sound Architecture) est la bibliothèque par défaut sous Linux pour enregistrer et jouer des sons depuis un contrôleur audio. Pour des raisons de compatibilités, de performances et aussi historiques, la bibliothèque ALSA est écrite en langage C. De fait, ALSA étant quasiment la bibliothèque sous Linux en ce qui concerne le son, des contributeurs ont écrit les bindings nécessaires pour exploiter ALSA directement en Python afin de faciliter l’écriture de scripts et de programmes pour les développeurs ne connaissant pas le langage C. Le fruit de cet effort s’appelle pyalsaaudio.

Avant d’aller plus loin dans ce projet et notamment la partie expliquant comment enregistrer du son, il est important de s’équiper d’un microphone capable d’être branché sur port USB (Universal Serial Bus). Initialement, le Raspberry Pi n’est pas équipé pour enregistrer du son mais seulement en jouer et retranscrire ce son par la sortie jack 3.5 mm.

Les enregistrements audio de ce chapitre ont été effectués avec un microphone USB Logitech. Cependant, n’importe quel microphone disponible dans le commerce devrait être reconnu par le Raspberry Pi.

Après avoir branché le microphone sur un port USB du Raspberry Pi, il suffit de vérifier que le microphone est effectivement connecté grâce à la commande lsusb. Celle-ci liste tous les périphériques USB connectés au Raspberry Pi :

pi@raspberrypi:~ $ lsusb 
Bus 001 Device 018: ID 145f:0176 Trust Isla Keyboard 
Bus 001 Device 017: ID 046d:c05a Logitech, Inc. M90/M100 Optical  
Mouse 
Bus 001 Device 016: ID 05e3:0608 Genesys Logic, Inc. USB-2.0  
4-Port HUB  
Bus 001 Device 019: ID 046d:0825 Logitech, Inc. Logitech USB  
Microphone 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.  
SMSC9512/9514 Fast Ethernet Adapter 
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.  
LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub  
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 

La commande alsamixer liste les cartes son au sein d’une interface console ncurses et présente les...

Projet #1 : un enregistreur/lecteur audio

Le but de ce projet est de coder un lecteur/enregistreur audio basé sur tkinter et Pillow pour l’aspect visuel et pyalsaaudio pour accéder à l’interface audio du Raspberry Pi. Pour agrémenter l’aspect visuel de cet enregistreur, les icônes sont dessinées directement avec Pillow, ce qui constitue l’introduction de ce projet.

Comme expliqué en première partie de ce chapitre, Pillow est une formidable bibliothèque permettant de dessiner des formes géométriques. Traditionnellement, un enregistrement audio dispose de trois boutons facilement reconnaissables reliés à trois actions : la lecture, l’arrêt et l’enregistrement représentés respectivement par un triangle noir, un carré noir et un cercle rouge. Pillow peut facilement répondre à ce besoin et créer les images souhaitées. En reprenant le code de la première partie du chapitre, la génération du bouton Jouer s’effectue de cette manière (Chapitre_7/enregistreur/boutons.py) :

1 #!/usr/bin/env python3 
2 from PIL import ImageDraw 
3 from PIL import ImageOps 
4 from PIL import Image 
5 import os 
6 
7 
8 def main(): 
9     if not os.path.exists("resources"): 
10         os.mkdir("resources") 
11 
12     img = Image.new("RGBA", (100, 100)) 
13     draw = ImageDraw.Draw(img) 
14     draw.ellipse((25, 25, 75, 75), fill="red") 
15     img = img.resize((25, 25)) 
16     img.save("resources/enreg.png") 
17 
18     img = Image.new("RGBA", (100, 100)) 
19     draw = ImageDraw.Draw(img) 
20     draw.polygon([(25, 50), (75, 25), (75, 75)], fill="black") 
21     img = ImageOps.mirror(img) 
22     img = img.resize((25, 25)) 
23     img.save("resources/lire.png") 
24 
25     img = Image.new("RGBA", (100, 100)) 
26     draw = ImageDraw.Draw(img) 
27     draw.polygon([(25, 25), (75, 25), (75, 75), (25, 75)], fill="black") 
28     img = img.resize((25...

Conclusion

Le multimédia est une fonctionnalité importante du Raspberry Pi. Les projets abordés dans ce chapitre expliquent comment manipuler l’image et l’audio avec Python sur cette plateforme.