Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
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
  3. Multimédia
Extrait - Python Libérez le potentiel de votre Raspberry Pi
Extraits du livre
Python Libérez le potentiel de votre Raspberry Pi
2 avis
Revenir à la page d'achat du livre

Multimédia

Acquérir un signal audio

D’une manière générale, la manipulation de données audio au niveau des entrées-sorties, sur les systèmes Linux, se fait à l’aide de la librairie ALSA (Advanced Linux Sound Architecture). Raspbian, basé sur le noyau Linux, ne déroge pas à la règle.

ALSA est une bibliothèque très complète de manipulation de sons. Elle ne contient pas seulement des librairies utilisables pour réaliser son propre code. Elle contient également des binaires complets auxquels il est possible d’accéder à l’aide de librairies ou qu’il est possible d’appeler directement par le biais du système d’exploitation, via la console par exemple.

Comme beaucoup de librairies composant le noyau, ALSA a été dans un premier temps pensée pour le développeur C ou C++. Cependant, très rapidement, l’équipe de développement a mis à disposition une librairie pour le langage Python. Ce module se nomme pyalsaaudio.

Pour l’installer, il suffit d’utiliser le gestionnaire de paquets pip :


pip3 install pyalsaaudio
 

Nous pouvons vérifier le bon fonctionnement de la librairie en réalisant l’importation de celle-ci dans une console IPython :


pi@raspberrypi:~/Documents/Redaction/PythonRaspberry/Chap5/script$ ipython 
Python 3.5.3 (default, Jan 19 2017, 14:11:04)  
Type 'copyright', 'credits' or 'license' for more information  
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.  
 
In [1]: import alsaaudio
 

S’il n’y a pas de message d’erreur, alors le module pyalsaaudio fonctionne.

Un second élément indispensable pour réaliser l’enregistrement de données audio est la présence d’un micro. À ce sujet, deux remarques : le Raspberry Pi 3 ne possède pas de micro interne. De plus, la fiche jack au format 3,5 mm ne permet de réaliser que des sorties et ne permet donc pas de réaliser l’acquisition de sons. Il est donc nécessaire d’avoir à disposition un micro USB. La quasi-totalité des micros USB sont compatibles avec ALSA. Le modèle utilisé ici est le Blue Yeti.

Une fois le micro connecté...

Compresser un signal audio

Le format que nous avons utilisé n’est pas compressé. Pour effectuer des enregistrements plus longs, il est intéressant de passer par une compression des données, au format MP3 par exemple.

Il existe différentes options, nous utiliserons la plus simple qui s’appuie sur la librairie PyDub.

Pour l’installer, il faut utiliser le gestionnaire pip :


pip install pydub
 

Il faut également installer la librairie suivante :


apt-get install ffmpeg
 

L’utilisation de cette librairie est très simple :


 
from pydub import AudioSegment 
 
 
def convert_to_mp3(fichier_in, fichier_out): 
    sound = AudioSegment.from_file(fichier_in) 
    sound.export(fichier_out, format="mp3", bitrate="128k")
 

Le principe est de donner le nom du fichier .wav à convertir ainsi que le nom du fichier de sortie. Dans un but de capitalisation, nous utilisons une fonction.

Testons-la dans le code suivant :


from pydub import AudioSegment 
 
 
def convert_to_mp3(fichier_in, fichier_out): 
    sound = AudioSegment.from_file(fichier_in) 
    sound.export(fichier_out, format="mp3", bitrate="128k") 
 
 
if __name__ == '__main__': 
    f_in = "test.wav" 
    f_out = "test.mp3" 
 
    convert_to_mp3(f_in...

Image et vidéo

1. Interfacer la caméra officielle

L’autre élément multimédia géré en natif par le Raspberry Pi est la caméra. Outre la caméra officielle de type USB, entre autres.

Pour cet ouvrage, le choix s’est porté sur la caméra officielle dont le nom de code est : v2 Pi NoIR. Les caractéristiques de cette caméra sont :

  • capteur Sony IMX219

  • résolution de 8 mégapixels

  • caméra infrarouge qui permet de filmer la nuit

C’est une version classique de la caméra dite RGB (rouge, vert, bleu), c’est-à-dire une caméra couleur classique. Il existe également des clones de la caméra officielle se branchant sur le même connecteur.

Cette caméra se branche sur le port caméra du Raspberry Pi à l’aide d’une nappe de connexion. L’image suivante montre l’installation de la caméra sur le Raspberry Pi :

images/07LF06.png

Cette installation réalisée, il est nécessaire de configurer le système Raspbian pour activer la caméra. 

Pour cela, il faut initialiser l’application de configuration de Raspbian en tapant la commande raspi-config dans une console.

Il est alors nécessaire de choisir le cinquième item nommé : Interfacing Options. Pour sélectionner cet item, il faut utiliser les flèches du clavier et appuyer sur <ENTER> pour valider :

images/07LF01.png

Ensuite, il faut sélectionner l’item Camera :

images/07LF02.png

Il s’agit ensuite d’activer la caméra :

images/07LF03.png

Une fois l’activation réalisée, un message indiquant la réussite de cette opération s’affiche :

images/07LF04.png

Enfin, l’utilitaire de configuration raspi-config indique qu’un redémarrage du Raspberry Pi est nécessaire :

images/07LF05.png

Une fois le redémarrage opéré, il faut installer la librairie nécessaire à la manipulation de la caméra avec Python, à l’aide d’Aptitude :


sudo apt-get install python3-picamera
 

Afin de vérifier le bon fonctionnement de la configuration, utilisons la console IPython pour importer et instancier l’objet qui va permettre de manipuler la caméra :


In [1]: import picamera 
In [2]: camera = picamera.PiCamera()
 

Si aucune erreur n’apparaît...

Conclusion

Ce chapitre a mis l’accent sur l’utilisation des sources multimédias du Raspberry Pi. L’entrée et la sortie de données audio ont été réalisées grâce à ALSA. La modalité image a été présentée au travers des possibilités de la caméra officielle Pi NoIR.

L’usage du flux vidéo et la capture d’images ont été présentés tour à tour. Une introduction à la manipulation d’images à l’aide de la librairie scikit-image et de NumPy a été faite.

Toutes les notions abordées ont permis de réaliser une application simple de détection de présence que vous pourrez améliorer.