Question

Est-il possible avec FFT pour trouver une occurrence d'un petit échantillon wav intérieur d'un wav plus, si on sait que cet échantillon exact existe quelque part dans le wav (mais il peut être mélangé avec d'autres sons)?

modifier

(après avoir reçu deux réponses): Et si j'ai une bibliothèque de tous les sons connus qui peuvent être dans le WAV plus grand et souhaite trouver les occurrences de chacun d'entre eux dans ce WAV? En d'autres termes, je sais tous son possible qui peut être mélangé dans le grand wav, et que vous souhaitez rechercher les occurrences d'entre eux?

Était-ce utile?

La solution

Je suppose par exacte que vous ne signifie pas que la valeur de l'échantillon exact. Si elle était valeur échantillon exact, il serait une simple question de rechercher les valeurs d'échantillon, ce qui est rapide et efficace.

Si vous êtes à la recherche pour les bits de son qui contribuent, la meilleure approche est d'utiliser un processus mathématique appelé « convolution ». En gros, prenez l'échantillon que vous essayez de trouver dans le grand échantillon, placer efficacement à côté du grand échantillon, et en corrélation. Pour ce faire, pour chaque position de l'échantillon. Vous de cette obtenir une courbe qui ont des pointes distinctes là où l'échantillon est. Son tout à fait, mais de calculs des ordinateurs ont obtenu assez vite, il est donc possible.

Mais - ceci suppose que l'échantillon provenait de la même enregistrement pour les deux cas. Miking un son de tambour, même le même son du tambour, à partir de deux endroits différents, ne produira pas une très bonne corrélation.

L'espoir qui aide.

Autres conseils

Cela dépend exactement ce que vous essayez de trouver et ce que vous essayez de le trouver dans.

  • Si vous êtes à la recherche d'un échantillon qui est exactement la même que celle d'un morceau d'un fichier WAV plus grand, bit pour bit, vous pouvez rechercher les valeurs directement.
  • Si c'est exactement le même son, mais pas d'échantillon précis (correspondant à un clip d'un MP3 à un WAV de la même chanson, par exemple), vous pouvez facilement trouver à l'aide de corrélation croisée. La corrélation croisée peut être accéléré de manière significative à l'aide d'une méthode FFT au lieu d'une méthode « naïve » qui multiplie de façon explicite et résume les échantillons.
  • Si vous êtes à la recherche d'un court échantillon qui a été mélangé avec d'autres sons, il pourrait encore être possible d'utiliser corrélation croisée, mais cela dépend si les autres sons affectent le match. Pour piano numérique avec des échantillons simples et sans effets, directement dans un enregistreur numérique, cela pourrait fonctionner.
  • Si le son a été par tout type de filtrage, inversion de polarité, ou déphasage, cependant, ce ne sera pas très bien, puisque seront changés les formes d'onde. Donc, si le piano a été joué par haut-parleurs, puis enregistré avec micros, ce n'est pas une solution viable.

Ce qui pourrait fonctionner mieux dans ce cas est de créer un spectrogramme de l'enregistrement à l'aide Fourier de courte durée de transformation (STFT), et un spectrogramme de la chose que vous êtes recherche, puis faire une corrélation croisée sage-temps des deux images. Le spectrogramme est une image 2D de l'amplitude des spectres des sons au fil du temps, que vous pouvez ensuite correspondre. (Ceci est probablement une façon détournée de faire quelque chose, il y a des algorithmes plus spécialisés pour, mais je ne sais pas ce qu'il serait appelé.);)

Pouvez-vous télécharger des clips audio quelque part?

Si vous connaissez la nature exacte de l'échantillon (longueur en bits, etc.), il est très possible. Si elle modifie de quelque façon que vous allez avoir beaucoup de travail à faire d'abord.

En raison de la façon dont les fichiers WAV sont codés (séquentiellement par voie - si vous obtenez le premier lot de bits pour la première piste, le premier lot de bits pour la deuxième piste, puis le second lot de bits de la première piste )

Cela peut évidemment répéter pour autant de pistes. Si vous connaissez le fichier WAV que vous recherchez est codé spécifiquement dans l'une de ces pistes, vous pouvez isoler chaque piste et effectuer des opérations sur eux.

Il est évident que si votre échantillon diffère par la vitesse, le tempo, la hauteur, etc., alors il va avoir une signature peu différente de sorte que vous devrez normaliser les pistes.

Pas exactement comme vous l'avez défini, si elle est mélangée avec d'autres sons, et est ici la raison; considérer l'effet d'une onde mélangée avec précision son inverse; le résultat est une réponse plate. Le mélange d'ondes peut avoir une fonction monotone, qui est, pour masquer efficacement une onde à une autre d'une manière que la première est unretrievable.

Cela dit, il y a probablement une façon de caractériser la « signature » d'une vague telle qu'elle est susceptible d'être présent dans un fichier d'onde composite résultant, mais cette signature dépend de la longueur du fichier wave et à certains mesure ce type de combinaisons étaient censés faire sur elle.

Votre question a probablement quelque chose à voir avec de déterminer si des échantillons d'un travail existent dans une autre, composite, travail. En général, oui, TFR sont utiles pour la détermination d'une « signature » pour une onde donnée, et être en mesure d'extraire cette « signature » d'une autre vague; ils sont bons pour certaines choses (comme décalage de fréquence, il montre juste comme un déplacement sur la FFT), mais pas si grand pour d'autres choses (différentes modulation de fréquence, pour une, la compression de la bande passante élevée (ou inégale) de l'original signal). Pour d'autres termes: TFR sont un bon moyen de détecter l'utilisation « naïve » des échantillons, mais un resampler déterminé peut modifier l'échantillon initial pour le rendre difficile à détecter par FFT s'il sait que c'est la technique de détection utilisée

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