Algorytmy określania klucza próbki audio

Jestem zainteresowany określeniem klucza muzycznego próbki audio. W jaki sposób algorytm miałby (lub mógłby) próbować zbliżyć klucz muzycznej próbki audio?

Antares Autotune i Melodyne to dwa programy, które robią tego typu rzeczy.

Czy ktos moze podac jakies wyjasnienie laika jak to bedzie dzialac? Matematycznie wydedukować klucz utworu, analizując widmo częstotliwości dla progresji akordów itp.

This topic interests ja też!

Edit-genialne źródła i bogactwo informacji, które można znaleźć od wszystkich, którzy przyczynili się do tego pytania .

Szczególnie od: the_mandrill i Daniel Brückner.

Author: Amro, 2010-06-29

8 answers

Warto mieć świadomość, że jest to bardzo trudny problem i jeśli nie masz doświadczenia w przetwarzaniu sygnału (lub zainteresowania poznawaniem go), masz przed sobą bardzo frustrujący czas. Jeśli spodziewasz się rzucić kilka FFT na problem, to nie zajdziesz zbyt daleko. Mam nadzieję, że masz zainteresowanie, ponieważ jest to naprawdę fascynujący obszar.

Początkowo istnieje problem rozpoznawania wysokości dźwięku, który jest dość łatwy do zrobienia dla prostych monofonicznych instrumentów (np. głos) za pomocą metody takiej jak autokorelacja lub spektrum sumy harmonicznej (np. zob. link Pawła R). Jednak często okaże się, że daje to złe wyniki: często dostaniesz połowę lub dwukrotnie boisko, że oczekiwano. Nazywa się to pitch period doubling lub octave errors i występuje głównie dlatego, że FFT lub autokorelacja ma założenie, że dane mają stałą charakterystykę w czasie. Jeśli masz instrument grany przez człowieka zawsze będzie jakaś odmiana.

Niektórzy podchodzą do problemu rozpoznawania klucza jako kwestii najpierw rozpoznania skoku, a następnie znalezienia klucza z sekwencji rzutów. To jest niesamowicie trudne, jeśli masz coś innego niż monofoniczny ciąg dźwięków. Jeśli masz monofoniczną sekwencję dźwięków, to nadal nie jest to jednoznaczna metoda określania klucza: jak radzisz sobie np. z nutami chromatycznymi, czy ustalam, czy to major, czy minor. Musisz więc użyć metody podobnej do algorytmu wyszukiwania klucza Krumhansla .

Więc, biorąc pod uwagę złożoność tego podejścia, alternatywą jest spojrzenie na wszystkie nuty odtwarzane w tym samym czasie. Jeśli masz akordy lub więcej niż jeden instrument, to będziesz miał bogatą widmową zupę wielu sinusoidów grających naraz. Każda pojedyncza nuta składa się z wielu harmonicznych a częstotliwości podstawowej, więc A (przy 440Hz) będzie 440, 880, 1320... Ponadto, jeśli grasz na E (zobacz ten diagram dla wysokości dźwięku) to jest 659,25 Hz, czyli prawie półtora raza więcej niż A (w rzeczywistości 1,498). Oznacza to, że każda trzecia harmoniczna A pokrywa się z każdą drugą harmoniczną E. Dlatego akordy brzmią przyjemnie, ponieważ współdzielą harmoniczne. (na marginesie, cały powód, że zachodnia harmonia działa jest ze względu na dziwactwo losu, że dwunasty korzeń 2 do moc 7 to prawie 1,5)

Jeśli spojrzysz poza ten interwał piątego na dur, moll i inne akordy, znajdziesz inne proporcje. Myślę, że wiele kluczowych technik wyszukiwania wyliczy te współczynniki, a następnie wypełni histogram dla każdego piku widmowego w sygnale. Tak więc w przypadku wykrycia akordu A5 spodziewałbyś się znaleźć szczyty na 440, 880, 659, 1320, 1760, 1977. Dla B5 będzie to 494, 988, 741 itd. Więc stwórz histogram częstotliwości i dla każdego sinusoidalnego piku w sygnale (np. z widma mocy FFT) zwiększ wpis histogramu. Następnie dla każdego klucza A-G Przelicz pojemniki w histogramie i te z największą liczbą wpisów najprawdopodobniej będą Twoim kluczem.

To tylko bardzo proste podejście, ale może wystarczyć, aby znaleźć klucz strummed lub trwały akord. 20ms) i analizować każdy z nich, aby zbudować bardziej solidne oszacowanie.

EDIT:
Jeśli chcesz poeksperymentować to proponuję pobieranie pakietu Octave lub CLAM, który ułatwia wizualizację danych audio i uruchamianie FFT i innych operacji.

Inne przydatne linki:

  • Moja praca doktorska na temat niektórych aspektów rozpoznawania dźwięku -- matematyka jest trochę ciężka, ale Rozdział 2 jest (mam nadzieję) dość przystępnym wprowadzeniem do różnych podejść modelowania dźwięku muzycznego [39]}
  • http://en.wikipedia.org/wiki/Auditory_scene_analysis -- Analiza sceny słuchowej bregmana, która choć nie mówi o muzyce, ma kilka fascynujących odkryć na temat tego, jak postrzegamy sceny złożone [39]}
  • Dan Ellis napisał kilka świetnych prac w tej i podobnych dziedzinach.]}
  • Keith Martin ma kilka ciekawych podejść.]}
 55
Author: the_mandrill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-29 20:59:34

Przez ponad dwa lata pracowałem nad problemem przepisywania polifonicznych nagrań CD na partytury. Problem jest notorycznie trudny. Pierwsze prace naukowe związane z tym problemem pochodzą z lat 40. i do dziś nie ma solidnych rozwiązań dla ogólnego przypadku.

Wszystkie podstawowe założenia, które zwykle czytasz, nie są dokładnie poprawne i większość z nich jest na tyle zła, że stają się bezużyteczne dla wszystkiego, ale bardzo prostych scenariuszy.

The częstotliwości podtekstów są , a nie wielokrotnościami częstotliwości podstawowej - istnieją nieliniowe efekty tak, że wysokie częściowe oddalają się od oczekiwanej częstotliwości - a nie tylko kilka herców; nie jest niczym niezwykłym znalezienie 7 częściowej tam, gdzie oczekiwano 6.

Transformacje Fouriera robią Nie dobrze się bawią w analizę dźwięku, ponieważ częstotliwości, którymi się interesuje, są rozmieszczone logarytmicznie, podczas gdy transformacja Fouriera daje liniowo rozmieszczone częstotliwości. Przy niskich częstotliwościach potrzebujesz wysokiej rozdzielczości częstotliwości, aby oddzielić sąsiednie boiska - ale to daje złą rozdzielczość czasu i tracisz możliwość oddzielnych nut granych w krótkim odstępie czasu.

Nagranie audio (prawdopodobnie) Nie zawiera wszystkie informacje potrzebne do odtworzenia partytury. Duża część naszego postrzegania muzyki dzieje się w naszych uszach i mózgu. Dlatego jednymi z najbardziej udanych systemów są systemy eksperckie z dużymi repozytoriami wiedzy na temat struktura (zachodniej) muzyki, która polega tylko na niewielkiej części przetwarzania sygnału, aby wydobyć informacje z nagrania audio.

Kiedy wrócę do domu, przejrzę gazety, które przeczytałem i wybieram 20 lub 30 najbardziej istotnych i dodam je tutaj. Naprawdę sugeruję, aby je przeczytać, zanim zdecydujesz się coś wdrożyć - jak stwierdzono wcześniej, większość typowych założeń jest nieco niepoprawna i naprawdę nie chcesz odkrywać na nowo tych wszystkich rzeczy znalezionych i analizowanych przez ponad 50 lat roku podczas wdrażania i testowania.

To trudny problem, ale i zabawa. Naprawdę chciałbym usłyszeć, co próbowałeś i jak dobrze to działało.


Na razie możesz przyjrzeć się stałej transformacji Q, rozkładowi Cepstrum i Wignera (- Ville). Istnieją również dobre prace na temat tego, jak wyodrębnić częstotliwość ze przesunięć w fazie krótkiego czasu widma Fouriera-pozwala to na użycie bardzo krótkich rozmiarów okien (dla wysokiej rozdzielczości czasowej), ponieważ częstotliwość może być wyznaczana z precyzją kilka 1000 razy większa niż rozdzielczość częstotliwości podstawowej transformacji Fouriera.

Wszystkie te transformacje pasują do problemu przetwarzania dźwięku znacznie lepiej niż zwykłe transformacje Fouriera. Aby poprawić wyniki podstawowych przekształceń, przyjrzyj się koncepcji ponownej alokacji energii.

 17
Author: Daniel Brückner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-29 18:08:59

Możesz użyć transformaty Fouriera do obliczenia widma częstotliwości z próbki audio. Z tego wyjścia można użyć wartości częstotliwości dla poszczególnych nut , aby przekształcić to w listę nut słyszanych podczas próby. Wybór najsilniejszych dźwięków słyszanych na próbkę w stosunku do serii próbek powinien dać przyzwoitą mapę różnych użytych nut, które można porównać do różnych skal muzycznych , aby uzyskać listę możliwych skal, które zawierają ta kombinacja nut.

Aby pomóc zdecydować, która skala jest używana, zanotuj (nie zamierzony kalambur) najczęściej słyszanych nut. W muzyce zachodniej rdzeniem skali jest najczęściej słyszana nuta, po której następuje piąta, a następnie czwarta. Można również szukać wzorców, takich jak wspólne akordy, arpeggios , or progressions .

Rozmiar próbki prawdopodobnie będzie tutaj ważny. Idealnie, każda próbka będzie pojedynczą nutą (aby nie dostać dwa akordy w jednej próbce). Jeśli filtrujesz i koncentrujesz się na niskich częstotliwościach, możesz użyć skoków głośności ("kliknięć") normalnie związanych z instrumentami perkusyjnymi, aby określić tempo utworu i" zablokować " algorytm do rytmu muzyki. Zacznij od próbek o długości do połowy i dostosuj stamtąd. Przygotuj się na wyrzucenie niektórych próbek, które nie mają zbyt wielu przydatnych danych (takich jak próbka pobrana w środku zjeżdżalni).

 6
Author: bta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-29 15:36:14

O ile mogę powiedzieć z tego artykułu, różne klawisze mają swoje wspólne częstotliwości, więc prawdopodobnie analizuje próbkę audio, aby wykryć, jakie są najczęstsze nuty i akordy. W końcu możesz mieć wiele klawiszy, które mają tę samą konfigurację ostrych i płaskich, z tą różnicą, że klawisz zaczyna się, a tym samym akordy, które takie klawisze, więc wydaje się, jak często pojawiają się znaczące nuty i akordy, byłoby jedynym realnym sposobem, w jaki można się domyślić, że coś w tym stylu. Nie sądzę, aby można było uzyskać laikowi Wyjaśnienie rzeczywistych formuł matematycznych bez pomijania wielu informacji.

Należy pamiętać, że pochodzi to od kogoś, kto nie ma absolutnie żadnego doświadczenia w tej dziedzinie, z jego pierwszym narażeniem jest artykuł połączony w tej odpowiedzi.

 5
Author: JAB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-29 15:16:21

To skomplikowany temat, ale prosty algorytm wyznaczania pojedynczego klucza (pojedynczej nuty) wyglądałby tak:

Wykonaj transformację Fouriera na powiedzmy 4096 próbkach (dokładny rozmiar zależy od wymagań rozdzielczości) Na części próbki, która zawiera notatkę. Określ szczyt mocy w widmie-jest to częstotliwość nuty.

Robi się coraz ciaśniej, jeśli masz akord, różne "instrumenty/efekty" lub nie homofoniczny wzorzec muzyczny.

 3
Author: MRalwasser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-29 15:21:42

Najpierw potrzebny jest algorytm detekcji pitch (np. autokorelacja).

Możesz użyć algorytmu detekcji skoku, aby wyodrębnić skok w wielu krótkich oknach czasowych. Następnie musisz sprawdzić, do którego klucza muzycznego najlepiej pasują samplowane Dźwięki.

 1
Author: Paul R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-29 18:43:45

Jeśli chcesz sklasyfikować kilka piosenek teraz, to crowd-source problem z czymś w rodzaju Mechanical Turk .

 1
Author: Nathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-29 21:06:13

Analiza klucza to nie to samo, co analiza boisk. Niestety całe pojęcie tonacji jest nieco niejednoznaczne, różne definicje zazwyczaj mają tendencję do dzielenia się tylko pojęciem Toniki, tj. centralnego dźwięku/akordu. Nawet jeśli istniał dobry system automatycznej transkrypcji, nie ma wiarygodnego algorytmu wyznaczania klucza.

 1
Author: Musicologist,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-22 18:03:34