Wątek zablokowany 2017-04-06 18:33 przez furious programming.

Porównanie dwóch nagrań dźwiękowych

0

Witam
Czy jakaś biblioteka audio oferuje porównanie danych audio pod względem zgodności ze sobą? Dla przykładu mam dwa nagrania tej samej audycji radiowej, ale na innym sprzęcie w dwóch innych lokalizacjach. Czy algorytm mógłby mi wskazać że te dane są ze sobą równoważne chociaż szumy i dźwięki byłyby w każdym troszkę inne.

0

poczytaj o FFT, możliwe że Cię to zadowoli ;)

0

A jakaś biblioteka, która wykorzystuje ten algorytm?

0

Funkcja koherencji może da radę. http://en.wikipedia.org/wiki/Coherence_(signal_processing)

0

w sumie możliwe, że zwykły splot sygnałów też da rade, ale lepiej to sprawdzić, czyli:
http://pl.wikipedia.org/wiki/Splot_%28analiza_matematyczna%29#Splot_dyskretny

albo po ludzku:
przesuwasz sobie sygnały względem siebie (tak jakbyś wypisał próbki w równych odstępach na bardzo długich kartkach pod sobą) o każde możliwe przesunięcie (u Ciebie powinno w sumie starczyć +/- 20%)
dla każdego z przesunięć mnożysz wszystkie próbki znajdujące się pod sobą, następnie sumujesz wszystkie iloczyny. Dla każdego z przesunięć powinna Ci wyjść jakaś liczba. W miejscach gdzie sygnały są bardzo podobne dostaniesz dużo większe wartości.

dla miejsca w którym jest największe podobieństwo możesz sobie odjąć sygnały od siebie, różnice podnieść do kwadratu w każdej próbce, wszystko zsumować, policzyć z tego pierwiastek. Jeśli oba sygnały miałeś zapisane jako wartości od 0-1 to powinieneś dostać z grubsza procentowe podobieństwo (wartość od 0-1)

0

licząc splot jeden z sygnałów jest odwracany w czasie, to raczej nie to
opisałeś kroskorelację (korelacja wzajemna), (to że licząc korelację 2*splatamy furjerując to inna sprawa)
powie coś o podobieństwie i pozwoli wyrównać sygnały w czasie
(można by pokusić się nawet o wyrównanie o czas mniejszy od okresu próbkowania)
nie można też zapomnieć o wyrównaniu "głośności"
koherencja - czy np. mowa jest procesem stacjonarnym?

0

A może są dostępne jakieś gotowe biblioteki do tego?

0

A może są dostępne jakieś gotowe biblioteki do tego?

A może nie?
Spytaj google.

Generalnie problem jest całkiem prosty... Bierzemy sobie kolejne 'kawałki' nagrania wyliczamy różnicę między dwoma wartościami. Tak samo dla wszystkich wartości, a na koniec liczymy średnią. jeśli przekroczy ileśtam to nie jest inaczej jest. A żeby wykryć przesunięcie to trzebaby było dokonywać analizy na mniejszych kawałkach i jeśli się nie zgadza to sobie przesuwać i znowu próbować...

1 użytkowników online, w tym zalogowanych: 0, gości: 1