Je cherche une bibliothèque Python bien entretenue qui me permette de lire des fichiers audio sur mon Raspberry Pi en utilisant la sortie audio standard.
Jusqu'à présent, j'en ai essayé plusieurs, mais aucun ne semble fonctionner. Bien que pyglet fonctionne sur mon ordinateur normal, il provoque une erreur sur le Raspberry Pi. Existe-t-il une bibliothèque Python qui s'est révélée facile à utiliser?
Réponses:
Je recommande le très populaire Pygame. Je me trompe peut-être, mais je crois qu'il est pré-installé sur le Pi. Vous pouvez utiliser le module de musique du mixeur Pygame pour lire des fichiers audio. J'ai inclus un exemple de code ci-dessous.
En supposant que nous ayons un fichier audio appelé
myFile.wav
.REMARQUE: si cela échoue, accédez au terminal et mettez à jour votre système avec
et essayez à nouveau.
la source
espeak
très bien, mais pas ça.J'avais besoin d'un script pour jouer une chanson de trente secondes en arrière-plan tout en répondant aux commentaires des autres utilisateurs. Je voulais alors que ça termine la chanson sur un événement.
Je ne suppose pas que ce soit particulièrement élégant, mais j’ai ouvert un tuyau vers un processus MPlayer en arrière-plan.
Ensuite, lorsque j'ai voulu mettre fin au processus MPlayer, j'ai simplement écrit "q" pour quitter le canal.
Consultez la documentation de MPlayer pour connaître toutes sortes de commandes que vous pouvez passer de cette manière pour contrôler la lecture.
J'espère que c'est un peu utile!
la source
Une autre option consiste à l’utiliser
mpg321
et à l’appeler à partir de la ligne de commande.Puis en Python:
Pygame est certainement plus robuste, mais cela dépend, je suppose, de vos besoins.
la source
Je recommanderais pyglet plutôt que pygame si vous n'avez pas besoin de graphisme. À mon avis, il est plus simple, plus élégant et mieux entretenu. Là encore, je suppose que cela pourrait être une question de goût.
la source
Pygame vous offre un moyen simple et agréable de charger et de lire des sons sur différents canaux.
la source
Vous pouvez utiliser plusieurs lecteurs externes via des pipes. Cependant, vous constaterez presque toujours une perte de vitesse. Il y a aussi un problème avec le contrôle de lecture.
Je vous recommande pyaudio, ça marche bien.
Si vous souhaitez également lire des fichiers compressés, je serai aussi libre de vous indiquer mon module decoder.py. Vous pouvez le trouver sur PyPI.
Il utilise également des sous-processus, mais appelle des décodeurs au lieu de joueurs. Ils n'utilisent pas beaucoup de temps processeur et certains savent comment utiliser l'accélération matérielle. Vous pouvez ensuite utiliser pyaudio ou quelque chose pour sortir les données audio brutes. Si vous le souhaitez, vous pouvez même utiliser pygame en utilisant pygame.sndarray. De cette façon, vous pouvez lire plus de formats que ce que pygame ne prend en charge.
J'ai essayé decoder.py dans un environnement d'interface graphique PyQT, avec pyaudio et également en utilisant aplay en tant que lecteur externe. C'était sur Raspberry Pi B.
Les résultats ont été assez satisfaisants dans les deux cas.
La simplicité peut être remise en question.
decoder.py lui-même est très simple, mais vous devez le combiner avec d'autres bibliothèques et cela augmente les lignes de code.
Il y a un exemple sur la façon de lire les fichiers inclus avec decoder.py.
la source
J'utilise OSMC (Debian) et le son est diffusé via les haut-parleurs de mon téléviseur, connectés via HDMI. https://youtu.be/p2ljmTE67gs
Ma méthode était basée sur la solution ci-dessus publiée par @xxmbabanexx ainsi qu'ici . Fondamentalement, je devais ajouter
dtparam=audio=on
à/boot/config.txt
la source