Comment puis-je lire de l'audio (ce serait comme un son d'une seconde) à partir d'un script Python?
Ce serait mieux s'il était indépendant de la plate-forme, mais il doit d'abord fonctionner sur un Mac.
Je sais que je pourrais simplement exécuter la afplay file.mp3
commande à partir de Python, mais est-il possible de le faire en Python brut? Je serais également mieux s'il ne reposait pas sur des bibliothèques externes.
Réponses:
Vous pouvez trouver des informations sur l'audio Python ici: http://wiki.python.org/moin/Audio/
Il ne semble pas pouvoir lire des fichiers .mp3 sans bibliothèques externes. Vous pouvez soit convertir votre fichier .mp3 au format .wav ou autre, soit utiliser une bibliothèque telle que PyMedia .
la source
.wav
fichier?Votre meilleur pari est probablement d'utiliser pygame / SDL . C'est une bibliothèque externe, mais elle offre un excellent support sur toutes les plates-formes.
Vous pouvez trouver une documentation plus spécifique sur la prise en charge du mixeur audio dans la documentation de pygame.mixer.music
la source
time.sleep(5)
à la fin et cela a fonctionné. Python 3.6 sur Windows 8.1Jetez un œil à Simpleaudio , qui est une bibliothèque relativement récente et légère à cet effet:
Ensuite:
Assurez-vous d'utiliser des fichiers PCM 16 bits non compressés.
la source
Essayez playound qui est un module de fonction unique, multi-plateforme, Pure Python, sans dépendances pour la lecture de sons.
Installer via pip:
Une fois que vous avez installé, vous pouvez l'utiliser comme ceci:
la source
playsound
. Je viens de tester quelques solutions ici, et celle-ci a fonctionné le plus facilement pour moi. Malheureusement, lapygame
solution n'a pas fonctionné pour moi, lors d'un bref test.Dans pydub, nous avons récemment choisi d'utiliser ffplay (via un sous-processus) de la suite d'outils ffmpeg, qui utilise en interne SDL.
Cela fonctionne pour nos besoins - principalement en facilitant le test des résultats du code pydub en mode interactif - mais il a ses inconvénients, comme faire apparaître un nouveau programme dans le dock sur mac.
J'ai lié l'implémentation ci-dessus, mais une version simplifiée suit:
L'
-nodisp
indicateur empêche ffplay d'afficher une nouvelle fenêtre, et l'-autoexit
indicateur fait quitter ffplay et renvoie un code d'état lorsque la lecture du fichier audio est terminée.edit : pydub utilise maintenant pyaudio pour la lecture lorsqu'il est installé et revient à ffplay pour éviter les inconvénients que j'ai mentionnés. Le lien ci-dessus montre également cette mise en œuvre.
la source
Désolé pour la réponse tardive, mais je pense que c'est un bon endroit pour annoncer ma bibliothèque ...
AFAIK, la bibliothèque standard ne possède qu'un seul module de lecture audio: ossaudiodev . Malheureusement, cela ne fonctionne que sur Linux et FreeBSD.
MISE À JOUR: Il y a aussi winsound , mais évidemment c'est aussi spécifique à la plate-forme.
Pour quelque chose de plus indépendant de la plate-forme, vous devrez utiliser une bibliothèque externe.
Ma recommandation est le module sounddevice (mais attention, je suis l'auteur).
Le package comprend la bibliothèque PortAudio pré-compilée pour Mac OS X et Windows, et peut être facilement installé avec:
Il peut lire le son des tableaux NumPy, mais il peut également utiliser des tampons Python simples (si NumPy n'est pas disponible).
Pour lire un tableau NumPy, c'est tout ce dont vous avez besoin (en supposant que les données audio ont une fréquence d'échantillonnage de 44100 Hz):
Pour plus de détails, consultez la documentation .
Il ne peut pas lire / écrire des fichiers audio, vous aurez besoin d'une bibliothèque séparée pour cela.
la source
Vous pouvez voir ceci: http://www.speech.kth.se/snack/
la source
La réponse d'Aaron semble être environ 10 fois plus compliquée que nécessaire. Faites-le simplement si vous n'avez besoin que d'une réponse qui fonctionne sous OS X:
Une chose ... cela revient immédiatement. Vous pouvez donc également le faire si vous souhaitez que l'appel soit bloqué jusqu'à la fin de la lecture du son.
Edit: J'ai pris cette fonction et l'ai combinée avec des variantes pour Windows et Linux. Le résultat est un module multi-plateforme purement python sans dépendances appelé playound . Je l'ai téléchargé sur pypi.
Puis exécutez-le comme ceci:
Les fichiers MP3 fonctionnent également sous OS X. WAV devrait fonctionner sur toutes les plates-formes. Je ne sais pas quelles autres combinaisons de plate-forme / format de fichier fonctionnent ou ne fonctionnent pas - je ne les ai pas encore essayées.
la source
playsound
module que j'ai écrit? Je ne l'ai pas testé sur quelque chose de plus récent que Python 2.7.11 ... Je peux certainement chercher à résoudre ceC'est la meilleure et la plus facile à trouver. Il prend en charge Linux / pulseaudio, Mac / coreaudio et Windows / WASAPI.
Voir https://github.com/bastibe/PySoundFile et https://github.com/bastibe/SoundCard pour des tonnes d'autres fonctionnalités super utiles.
la source
Il est possible de lire de l'audio sous OS X sans aucune bibliothèque tierce en utilisant un analogue du code suivant. Les données audio brutes peuvent être entrées avec wave_wave.writeframes. Ce code extrait 4 secondes d'audio du fichier d'entrée.
la source
Essayez PySoundCard qui utilise PortAudio pour la lecture, disponible sur de nombreuses plates-formes. De plus, il reconnaît les appareils audio "professionnels" avec de nombreux canaux.
Voici un petit exemple du Readme:
la source
Aussi sur OSX - depuis SO , en utilisant la commande afplay d'OSX :
MISE À JOUR: Tout cela ne fait que spécifier comment faire ce que l'OP voulait éviter de faire en premier lieu. Je suppose que j'ai posté ceci ici parce que ce que OP voulait éviter était l'information que je recherchais. Oups.
la source
Pypi a une liste de modules pour python dans la musique. Mon préféré serait jython car il a plus de ressources et de bibliothèques pour la musique. Comme exemple de code pour jouer une seule note du manuel :
la source
Mac OS j'ai essayé beaucoup de codes mais cela fonctionne sur moi
la source
Installez le
playsound
package en utilisant:Usage:
la source
la source
Pour lire un son de notification à l'aide de python, appelez un lecteur de musique, tel que vlc. VLC m'a invité à utiliser sa version en ligne de commande, cvlc, à la place.
Il nécessite que vlc soit préinstallé sur l'appareil. Testé sous Linux (Ubuntu 16.04 LTS); Exécution de Python 3.5.
la source
Essayez sounddevice
Si vous n'avez pas le module, entrez
pip install sounddevice
dans votre terminal.Ensuite, dans votre script Python préféré (j'utilise Juypter), entrez
sd.play(audio, sr)
jouera ce que vous voulez via PythonLa meilleure façon d'obtenir l'audio et l'échantillonnage que vous souhaitez est d'utiliser le module librosa. Entrez ceci dans le terminal si vous n'avez pas le module librosa.
Quel que soit le fichier wav que vous souhaitez lire, assurez-vous simplement qu'il se trouve dans le même répertoire que votre script Python. Cela devrait vous permettre de lire le fichier wav souhaité via Python
A bientôt, Charlie
PS
Une fois que l'audio est un objet de données "librosa", Python le voit comme un tableau numpy. À titre expérimental, essayez de jouer un long (essayez 20 000 points de données) d'un tableau numérique aléatoire. Python devrait le jouer comme du bruit blanc. Le module sounddevice lit également des tableaux et des listes numpy.
la source
Dans un notebook Colab, vous pouvez faire:
la source
J'ai récemment fait en sorte que mon lecteur de musique prenne en charge tous les fichiers audio localement. Je l'ai fait en trouvant un moyen d'utiliser le module python vlc ainsi que les fichiers dll VLC. Vous pouvez le vérifier: https://github.com/elibroftw/music-caster/blob/master/audio_player.py
la source
Si vous êtes sous OSX, vous pouvez utiliser le module "os" ou "sous-processus" etc. pour appeler la commande "play" OSX. Depuis le shell OSX, il ressemble à
jouer "bah.wav"
Il commence à jouer dans environ une demi-seconde sur ma machine.
la source
Simplement, vous pouvez le faire avec l'aide de cvlc - je l'ai fait de cette façon:
/home/maulo/selfProject/task.mp3. C'est l'emplacement de mon fichier mp3. avec l'aide de "--play-and-exit", vous pourrez rejouer le son sans terminer le processus vlc.
la source