Python fréquence de détection
Ok, ce que j'essaie de faire est une sorte de logiciel de traitement audio qui permet de détecter répandue une fréquence si la fréquence est joué assez longtemps (quelques ms) je sais que j'ai eu une correspondance positive. je sais que j'aurais besoin de l'utilisation de la FFT ou quelque chose simiral mais dans ce domaine des mathématiques, je suce, j'ai fait des recherches sur internet mais n'ai pas trouvé un code qui ne peut faire que cela.
le but im essayant de accieve est de me faire un protocole personnalisé pour envoyer des données creux de son, besoin de très faible débit par seconde (5-10bps) mais je suis également très limitée sur le transmiting fin de sorte que la réception de logiciel devra être en mesure personnalisé (cant utilisation d'un matériel/logiciel modem) aussi je veux que ce soit un logiciel uniquement (pas de matériel supplémentaire à l'exception de la carte son)
merci beaucoup pour l'aide.
- Cela peut être utile (assurez-vous de lire les réponses): keyongtech.com/5003865-frequency-analysis-without-numpy
Vous devez vous connecter pour publier un commentaire.
La aubio les bibliothèques ont été emballés avec SWIG et peut donc être utilisé par Python. Parmi leurs nombreuses fonctionnalités incluent plusieurs méthodes pour la détection de hauteur, estimation, y compris la YIN algorithme et quelques harmoniques peigne algorithmes.
Toutefois, si vous souhaitez quelque chose de plus simple, j'ai écrit du code pour la hauteur de l'estimation il y a quelques temps et vous pouvez prendre ou à laisser. Il ne sera pas aussi précis que d'utiliser les algorithmes de aubio, mais il pourrait être assez bon pour vos besoins. En gros, j'ai juste pris la FFT à la fois les données d'une fenêtre (une fenêtre de Blackman dans ce cas), carré de la FFT valeurs, a trouvé la poubelle qui avait la plus haute valeur, et utilisé une interpolation quadratique autour du pic à l'aide du journal de la valeur de max et de ses deux voisins de valeurs pour trouver la fréquence fondamentale. L'interpolation quadratique j'ai pris du papier que j'ai trouvé.
Il fonctionne assez bien sur des tonalités de test, mais il ne sera pas aussi robuste ou aussi précis que les autres méthodes mentionnées ci-dessus. La précision peut être améliorée en augmentant la taille de bloc (ou réduit par la diminuer). Le gros morceau de la taille doit être un multiple de 2 à faire pleinement usage de la FFT. Aussi, je ne suis que la détermination de la hauteur fondamentale pour chaque morceau ne se chevauchent pas. J'ai utilisé PyAudio de jouer le son par le biais lors de l'écriture d'une estimation du pitch.
Code Source:
Si vous allez utiliser FSK (frequency shift keying) pour l'encodage des données, vous êtes probablement mieux d'utiliser le L'algorithme de Goertzel de sorte que vous pouvez vérifier seulement la fréquence que vous souhaitez, au lieu d'un plein DFT/FFT.
Vous pouvez trouver le spectre de fréquence des fenêtres coulissantes sur votre son de ici puis vérifiez la présence de la prévalence de la bande de fréquence via trouver l'aire sous le spectre de fréquence de la courbe de la bande de ici.
Alors que je n'ai pas essayé de traitement audio avec Python avant, vous pourriez peut-être construire quelque chose de basé sur SciPy (ou de ses sous-projet NumPy), un cadre pour l'efficacité scientifique/technique de calcul numérique? Vous pouvez commencer par regarder scipy.fftpack pour votre FFT.