2017-08-27 3 views
-1

Je suis en train d'essayer de créer une application avec python qui affiche la valeur exacte de la fréquence dominante actuelle de l'audio à partir de l'entrée micro.Juste comme indiqué dans cette image prise d'une application tuner de guitarecomment connaître la fréquence de l'audio du microphone

enter image description here

je viens marqué de rouge la partie que je dois savoir comment programmer. J'ai besoin de l'exécuter dans un PC afin de savoir comment accéder au port microphone et comment connaître la fréquence.

+0

Donc, vous n'avez essentiellement rien? Avez-vous au moins essayé de faire quelque chose? –

+1

SO n'est pas un forum de conseils. Qu'avez-vous essayé jusqu'à présent? S'il vous plaît montrer votre code. – Soviut

+0

@JamesZ yah j'ai essayé de rrcord et ensuite prendre transformée de fourier.now j'ai besoin est de le faire en temps réel – dani

Répondre

0

Trouvez un moyen d'enregistrer votre audio à partir du port micro, puis exécutez une transformée de Fourier pour regarder le spectre. Trouvez la fréquence qui a le plus d'énergie et tracez cela sur le compteur.

+1

Vous savez que cela ne devrait pas promouvoir des questions comme ça. – Y0da

+0

Merci nimish je l'ai déjà fait ce que vous suggérez iam cherchant un code qui affiche la fréquence en temps réel .u peut comprendre si vous essayez l'app.thank à l'avance – dani

1

Je ne fournirai pas de code puisque vous n'avez rien montré de votre côté. Mais voici des étapes de haut niveau et des conseils pour le faire.

1) Utilisez `pyaudio blocking wire stream pour lire l'entrée du microphone sous la forme de morceaux [morceaux].

2) Pour chaque tronçon, appliquez fft et obtenez la fréquence pour tous les tronçons et ajoutez-les à une matrice/liste.
Il y a une discussion utile here et here Donc, si vous avez les paramètres suivants comme par (1)

RATE = 44100 
chunk = 1024 
RECORD_SECONDS = 1 

Vous aurez 44 bacs, chaque bacs fournissant une fréquence après FFT transformations.

3) Vous pouvez sélectionner la fréquence maximale max(frequency_list) que vous obtenez à partir de (2) par seconde, le nombre de secondes que vous souhaitez enregistrer.

4) Ecrire le chunks back to stream

5) Vous avez maintenant la fréquence par seconde jusqu'à ce que le temps la durée de votre enregistrement en temps réel que vous pouvez jouer avec.