Bibliothèque Python pour jouer à fréquence fixe de son
J'ai un moustique problème dans ma maison. Ce ne serait pas concernent généralement un des programmeurs de la communauté; Cependant, j'ai vu quelques dispositifs qui demande à dissuader ces vilaines créatures par la lecture d'un 17Khz ton. Je voudrais faire cela à l'aide de mon ordinateur portable.
Une méthode serait la création d'un MP3 avec un un unique, fixe la fréquence de la tonalité (Cela peut facilement fait par l'audace), en l'ouvrant avec une bibliothèque python et de jouer à plusieurs reprises.
La deuxième serait de jouer un son à l'aide de l'ordinateur, haut-parleur intégré. Je suis à la recherche de quelque chose de semblable à QBasic Son:
SOUND 17000, 100
Est-il une bibliothèque python pour qui?
- Soyez prudent avec les formats MP3, qu'il obtient sa compression de supprimer les fréquences de moins en moins audible pour l'homme, et le seuil d'audition est généralement à 20 khz, non loin de votre 17kHz. Si votre fréquence fixe de ton, lorsqu'elle est transformée en un MP3, peut jouer un autre jeu de fréquences, ou atténuer celui que vous êtes après. Vous êtes un homme, ne devrait probablement pas être en mesure de faire la différence. Mais les moustiques peuvent...
- Merci beaucoup. Je voudrais utiliser un court (~3 secondes) fichier WAV devrais-je choisir cette solution.
- Ainsi fait-il travailler pour les moustiques???
- connexes: Comment jouer un son à fréquence fixe à l'aide de Python
Vous devez vous connecter pour publier un commentaire.
PyAudiere est une simple croix-plate-forme de solution pour le problème:
pyaudiere.org est allé. Le site binaire et les installateurs pour Python 2 (debian, windows) sont disponibles via la wayback machine par exemple, voici le code source
pyaudiere-0.2.tar.gz
.À l'appui de Python 2 et 3 sur Linux, Windows, OSX,
pyaudio
module pourrait être utilisée à la place:Exemple:
C'est une modification (à l'appui de Python 3) de la version de cette AskUbuntu répondre.
samples = (int(s(t) * 0x7f + 0x80) for t in xrange(n_samples)) for buf in izip(*[samples]*sample_rate): # write several samples at a time stream.write(bytes(bytearray(buf)))
avecsamples = (int(s(t) * 0x7f + 0x80) for t in range(n_samples)) stream.write(bytes(bytearray(samples)))
Le module winsound est fourni avec Python, il n'y a pas de bibliothèques externes à installer, et il doit faire ce que vous voulez (et pas grand chose d'autre).
C'est très simple et facile, mais n'est disponible que pour Windows.
Mais:
Une réponse complète à cette question doivent prendre note que bien que cette méthode va produire un son, il ne va pas dissuader les moustiques. Il a déjà été testé: voir ici et ici
Je suis en train de mettre mon code ici il permet à un programmeur de gagner en clarté sur la façon dont fonctionne le code
explication se trouve dans le code lui-même
Vous pouvez utiliser le Binding Python de la SDL (Simple Direct De La Bibliothèque Multimédia).