Ustalenie, jak podobny jest dźwięk do ludzkiej mowy


12

Szukając odpowiedzi na ten problem, znalazłem tę tablicę, więc postanowiłem opublikować moje pytanie z przepełnienia stosu.


Poszukuję metody określania podobieństwa między segmentem audio a głosem ludzkim, który jest wyrażany liczbowo.

Sporo szukałem, ale to, co do tej pory znalazłem (szczegółowo poniżej), nie pasuje do tego, czego potrzebuję:

  • Jedną z metod jest użycie oprogramowania do rozpoznawania mowy w celu uzyskania słów z segmentu audio. Jednak ta metoda nie jest w stanie wymyślić, jak „podobny” jest dźwięk do ludzkiej mowy; często może powiedzieć, czy w audio są słowa, ale jeśli nie ma określonych słów, nie może powiedzieć, że audio ma takie słowa.
    Przykłady: CMU Sphinx , Dragonfly , SHoUT

  • Bardziej obiecująca metoda nazywana jest wykrywaniem aktywności głosowej (VAD). Ma to jednak zwykle takie same problemy: algorytmy / programy wykorzystujące VAD zwracają zwykle informację, czy próg aktywności został osiągnięty, i nie ma wartości „podobieństwa” przed lub po takim progu. Alternatywnie wielu szuka po prostu objętości, a nie podobieństwa do ludzkiej mowy.
    Przykłady: Speex , Listener , FreeSWITCH


Jakieś pomysły?


1
Z twojego pytania nie wynika, czy Twoim problemem jest A / weź nagranie audio i powiedz, czy zawiera ludzką mowę, czy nie (przykład zastosowania: wykryj i usuń rozmowę DJ-ską z nagrania audycji radiowej); lub B / weź głos i powiedz, jak to brzmi jak referencyjny segment audio. W przypadku, gdy jest to B, na podstawie jakich kryteriów chcesz zmierzyć podobieństwo. Na kontur melodii? (np .: dopasowanie śpiewanego głosu do piosenki). Na zajęciach rytmicznych i klastrowych? (np .: dopasowanie beatboxingu / onomatopei do pętli perkusyjnej). Na barwie? (dopasowanie głosu do efektu dźwiękowego). Opowiedz nam swoją aplikację.
pikenety

Przepraszamy, mój problem jest opisany w A. Chcę ustalić, czy segment audio jest ludzką mową.
Jeff Gortmaker

1
Pracowałem nad pokrewnym problemem - próbowałem ustalić, kiedy dźwięki chrapania / oddechu zostały „zanieczyszczone” przez mowę lub muzykę. Jest to frustrująco trudne, jeśli chodzi o niezawodność i bez uciekania się do „zaawansowanych” algorytmów rozpoznawania mowy (jeśli w rzeczywistości by nawet działały). Moim jedynym spostrzeżeniem byłoby, że mowa ma nieregularny rytm, podczas gdy muzyka jest (zwykle) regularna. Warto to sprawdzić i być może „płaskość spektralna” (wciąż oceniam jej zalety dla moich celów).
Daniel R Hicks

(Włosy bardziej szczegółowo: uważam, że znormalizowane standardowe odchylenie płaskości widmowej obliczone na podstawie FFT dźwięku wydaje się odzwierciedlać jakość dźwięku.)
Daniel R Hicks

Odpowiedzi:


6

Tego rodzaju problem zazwyczaj rozwiązuje się za pomocą technik uczenia maszynowego.

Podziel sygnał na sekwencję ramek 20ms lub 50ms. Wyodrębnij funkcje z każdej ramki. MFCC są na ogół dobre dla tego rodzaju aplikacji, chociaż istnieją funkcje bardziej specyficzne dla wykrywania głosu (energia modulacji 4 Hz - czyli mniej więcej szybkość mówienia; szybkość przekraczania zera).

Następnie, używając zestawu szkoleniowego audio, który ręcznie oznaczyłeś jako mowę / nie mowę, wytrenuj klasyfikator (modele mieszanki Gaussa, SVM ...) na temat funkcji ramek.

Umożliwi to klasyfikację nieoznakowanych ramek w klasy mowy / niemowy. Ostatni krok polega na wygładzeniu decyzji (ramka sklasyfikowana jako niemowa otoczona setkami ramek mowy prawdopodobnie będzie błędem klasyfikacji), na przykład przy użyciu HMM lub po prostu filtra mediany.

Kilka referencji:

Solidna klasyfikacja mowy / muzyki w dokumentach audio (Pinquier i in.) Dyskryminacja mowy / muzyki w aplikacjach multimedialnych (El-Maleh i in.) Porównanie funkcji dyskryminacji mowy / muzyki (Carey i in.)

Zauważ, że opisywane przez nich cechy i techniki klasyfikacji są również istotne dla 1-klasowego problemu wykrywania mowy (zamiast dyskryminacji mowy w porównaniu z czymś innym). W takim przypadku możesz użyć technik modelowania klasy 1, takich jak SVM klasy 1, lub po prostu wziąć wynik prawdopodobieństwa z GMM wyszkolonego na danych mowy jako miarę „mowy”.

Jeśli, z drugiej strony, twoim problemem jest naprawdę rozróżnianie mowy od czegoś innego (powiedzmy muzyki), możesz również bardzo dobrze zastosować podejście bez nadzoru, które koncentruje się na wykrywaniu granic między podobną treścią audio, a nie na identyfikowaniu samej treści.


Dzięki, to pomaga tonie! Jaka jest korzyść z rozbicia sygnału na małe okna? Ponieważ wyjście, którego szukam, to wartość liczbowa opisująca cały segment audio, czy lepiej byłoby wyodrębnić funkcje dla całego sygnału, a nie tylko konkretnych okien?
Jeff Gortmaker

Obliczanie cech (szczególnie spektralnych lub cepstralnych) na bardzo długich oknach uśredniałoby lub anulowało niektóre właściwości wyróżniające mowę. Możesz to zweryfikować samodzielnie, mieszając ze sobą wiele krótkich fragmentów mowy - trudno będzie rozpoznać wynik jako mowę. Dlatego lepiej jest dokonać klasyfikacji na małych segmentach; i, w twoim przypadku, zsumuj wyniki (na przykład obliczyć średnią ocenę prawdopodobieństwa podaną przez GMM lub obliczyć% ramek sklasyfikowanych jako mowa przez binarny klasyfikator).
pikenety

Mówiąc ściślej, pamiętaj, że wymiar czasowy jest „zawalony”, gdy spojrzysz na spektrum. Na przykład widmo mocy tonu 500 Hz, po którym następuje z czasem ton 1 kHz, jest podobne do widma mocy tych dwóch tonów odtwarzanych jednocześnie; więc spektrum mocy, w długim oknie, sygnału, który bardzo się zmienia, może nie wyglądać zbyt reprezentatywnie dla zawartości sygnału.
pikenety
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.