Question

Comme dans cet exemple Comment pour extraire des informations de fréquence à partir d'un flux audio d'entrée (à l'aide PortAudio)? Je suis curieux de savoir portaudio et numpy ...

Je ne suis pas sûr à 100% fft, comment puis-je passer numpy un morceau et revenir trois valeurs -1,0 à 1,0 pour les basses, médiums et les aigus?

Je ne me dérange pas si cela juste pour un canal que je peux donner un sens de la partie audio de ce fait, ce sont les mathématiques qui nagent devant moi quand je les regarde:)

Était-ce utile?

La solution

En fait, vous n'utiliser une transformée de Fourier pour le faire.

Fractionnement tout signal audio en basse, médiums et les aigus se fait généralement en utilisant des filtres. Un est un dispositif de traitement de signal qui atténue certaines gammes de fréquences. Les filtres peuvent être construire numériquement ou électriquement. Par exemple, ils sont utilisés dans les systèmes de croisement audio dans les haut-parleurs.

Pour la partie basse à basse fréquence que vous utilisez un filtre passe-bas. filtres passe-bas filtrent les hautes fréquences. Ils sont également appelés filtres « coupe haute ».
Pour obtenir le mid-fréquence partie que vous utilisez un filtre passe-bande. des filtres passe-bande filtrer les basses et hautes fréquences. Ils sont aussi appelés « filtres de cloche ».
Pour obtenir la partie des aigus à haute fréquence que vous utilisez un filtre passe-haut. filtres passe-haut filtrer les basses fréquences. Ils sont également appelés filtres « coupe-bas ».

En fait, vous pouvez également utiliser seulement le passe-haut et le filtre passe-bas. Si vous soustrayez les deux signaux filtrés à partir du signal original, le résultat serait une bande passante signal filtré. Cela vous permet d'économiser un filtre.

Chaque filtre aura une fréquence de seuil. La fréquence de seuil est une fréquence particulière, à partir de laquelle le filtre doit commencer le filtrage. En fonction de l'ordre du filtre, le signal sera atténué par 6 dB / oct (1er ordre), 12 dB / oct (2ème ordre), 18 dB / oct (3ème ordre), etc. Pour votre application, un design 2ème ordre est probablement très bien.
Notez que les filtres en désordre général avec le signal d'une certaine manière et l'ordre supérieur, cela peut l'obtenir plus audible. Par ailleurs, cela est physique pure et vrai pour tout traitement de signal comprenant des transformées de Fourier.

L'utilisation de ces trois filtres est (peut être) équivalent à faire une transformée de Fourier avec seulement trois points du spectre.

Autres conseils

transformée de Fourier , mentionnée dans la réponse à la question sélectionnée pour que vous pointez, vous donne le « spectre » -. une grande collection de valeurs donnant l'intensité sonore dans chacune des différentes gammes / tranches de fréquences (exprimées, par exemple, en Hertz)

Comment traduire (par exemple) mille intensités (un par chaque tranche de 10 Hertz du spectre, par exemple) en seulement trois chiffres, comme vous le désirez, est bien sûr tout à fait une question heuristique - par exemple, vous pouvez simplement décider qui varie de fréquences correspondent à « basse » et « aigus », avec tout entre les deux étant « mid », et calculer les intensités moyennes dans chacune. Pour ce que ça vaut, je crois une convention commune pour « basse » est à 250Hz, pour « aigus » 6KHz et au-dessus (entre-être le « milieu de gamme »), par exemple cfr cette page - mais il est plutôt une convention arbitraire, donc, "choisissez votre poison" ! -)

Une fois que vous avez les niveaux relatifs vous aurez envie de les normaliser par rapport les uns aux autres et de les étendre de manière appropriée pour se situer dans la gamme souhaitée (probablement sur une échelle logarithmique parce que comment fonctionne l'ouïe humaine ; -.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top