121 votes

Jouer de l'audio avec du python

Comment puis-je jouer de l'audio (ce serait comme un son 1sec) à partir d'un script python?

Ce serait mieux si elle était indépendante de la plate-forme, mais elle doit d’abord fonctionner sur un Mac.

Je sais que je pourrais simplement exécuter la commande 'afplay file.mp3' depuis python, mais est-il possible de le faire en python brut? Je serais également mieux s'il ne s'appuyait pas sur des bibliothèques externes.

47voto

TML Points 6469

Votre meilleur pari est probablement d'utiliser pygame / SDL . C'est une bibliothèque externe, mais elle est très bien supportée sur toutes les plateformes.

18voto

Jeremy Ruten Points 59989

Vous pouvez trouver des informations sur l'audio Python ici: http://wiki.python.org/moin/Audio/

Il ne semble pas qu'il puisse lire les fichiers .mp3 sans bibliothèques externes. Vous pouvez convertir votre fichier .mp3 en un format .wav ou autre, ou utiliser une bibliothèque telle que PyMedia .

15voto

Jiaaro Points 14379

Dans pydub récemment, nous avons opté pour l'utilisation de ffplay (via sous-processus) à partir de la suite de ffmpeg d'outils, qui utilise en interne la SDL.

Il travaille pour nos fins – essentiellement de la rendre plus facile à tester les résultats de pydub code en mode interactif – mais il a ses inconvénients, comme provoquant un nouveau programme à apparaître dans le dock sur mac.

J'ai lié la mise en œuvre ci-dessus, mais une version simplifiée suivante:

import subprocess

def play(audio_file_path):
    subprocess.call(["ffplay", "-nodisp", "-autoexit", audio_file_path])

L' -nodisp drapeau s'arrête ffplay de montrer une nouvelle fenêtre, et l' -autoexit drapeau causes ffplay pour quitter et retourner un code d'état lorsque le fichier audio est fini de jouer

6voto

Grzegorz Gacek Points 51

Si vous avez besoin d'une bibliothèque audio portable Python, essayez PyAudio . Il a certainement un port mac.

En ce qui concerne les fichiers mp3: c'est certainement faisable en Python "brut", seulement je crains que vous n'ayez à tout coder vous-même :). Si vous pouvez vous permettre une bibliothèque externe, j’ai trouvé un exemple PyAudio - PyLame ici.

5voto

technomalogical Points 1859

Pyglet a la capacité de lire de l'audio via une bibliothèque externe appelée AVbin . Pyglet est un wrapper ctypes entourant les appels système natifs sur chaque plate-forme prise en charge. Malheureusement, je ne pense pas que quoi que ce soit dans la bibliothèque standard puisse lire de l'audio.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X