Kiedy zaczyna się utwór śmiechu?


14

Jeden z moich weekendowych projektów wprowadził mnie w głębokie wody przetwarzania sygnałów. Podobnie jak w przypadku wszystkich moich projektów kodu, które wymagają trochę matematyki, cieszę się, że majsterkuję, aby znaleźć rozwiązanie pomimo braku teoretycznego uziemienia, ale w tym przypadku nie mam żadnego i chętnie poradzę na mój problem , a mianowicie: Staram się dowiedzieć, kiedy publiczność śmieje się podczas programu telewizyjnego.

Spędziłem sporo czasu czytając metody uczenia maszynowego do wykrywania śmiechu, ale zdałem sobie sprawę, że to więcej wspólnego z wykrywaniem indywidualnego śmiechu. Dwieście osób śmiejących się jednocześnie będzie miało znacznie różne właściwości akustyczne, a moją intuicją jest to, że można je odróżnić dzięki znacznie bardziej brutalnym technikom niż sieć neuronowa. Jednak mogę się całkowicie mylić! Byłbym wdzięczny za przemyślenia na ten temat.

Oto, co do tej pory próbowałem: podzieliłem pięciominutowy fragment z ostatniego odcinka Saturday Night Live na dwa sekundy. Następnie oznaczyłem te „śmiechem” lub „śmiechem”. Korzystając z ekstraktora funkcji MFCC firmy Librosa, uruchomiłem klaster K-Means na danych i uzyskałem dobre wyniki - dwa klastry bardzo dobrze odwzorowane na moich etykietach. Ale kiedy próbowałem iterować przez dłuższy plik, prognozy nie miały wpływu na wodę.

Co spróbuję teraz: Będę bardziej precyzyjny w tworzeniu tych klipów śmiechu. Zamiast ślepego podziału i sortowania, zamierzam ręcznie je wyodrębnić, aby żaden dialog nie zakłócał sygnału. Następnie podzielę je na ćwierć sekundy klipów, obliczę ich MFCC i wykorzystam do wyszkolenia SVM.

Moje pytania w tym miejscu:

  1. Czy coś z tego ma sens?

  2. Czy statystyki mogą tutaj pomóc? Przewijałem się w trybie widoku spektrogramu Audacity i widzę dość wyraźnie, gdzie dochodzi do śmiechu. W logogramie mocy mowa ma bardzo charakterystyczny „zmarszczony” wygląd. Natomiast śmiech obejmuje szerokie spektrum częstotliwości dość równomiernie, prawie jak normalny rozkład. Możliwe jest nawet wizualne odróżnienie oklasków od śmiechu dzięki bardziej ograniczonemu zestawowi częstotliwości reprezentowanych w oklaskach. To sprawia, że ​​myślę o standardowych odchyleniach. Widzę, że istnieje coś, co nazywa się testem Kołmogorowa – Smirnowa, czy to może być pomocne tutaj? Logogram mocy (Na powyższym zdjęciu widać śmiech jako ścianę pomarańczy uderzającą w 45% do środka.)

  3. Wydaje się, że spektrogram liniowy pokazuje, że śmiech jest bardziej energiczny na niższych częstotliwościach i zanika w kierunku wyższych częstotliwości - czy to oznacza, że ​​można go zakwalifikować jako różowy szum? Jeśli tak, to czy mogłoby to być przeczucie problemu? Spektrogram

Przepraszam, jeśli niewłaściwie użyłem żargonu, jestem na Wikipedii dość często i nie zdziwiłbym się, gdyby mi pomieszano.


1
Zgadzam się, że „nie potrzebuję sieci neuronowej, aby uzyskać solidny detektor śmiechu”. Zgadzam się również, że rzucasz Kołmogorowa na sygnał, biorąc pod uwagę, że jeśli masz rację, a utwór śmiechu jest (ważoną) sumą śmiechu, powinieneś uzyskać jakieś normalne cechy . Może nadal chcesz zwiększyć rozdzielczość częstotliwości. Nawiasem mówiąc, dla kogoś, kto „nie interesuje się” DSP, twój żargon jest całkiem w porządku :) niestety nie jestem facetem od dźwięku, więc prawdopodobnie nie jestem zbyt pomocny.
Marcus Müller

Jestem szczęśliwy, że pomagam. Czy masz jakieś dane do szkolenia? Jedną z najważniejszych rzeczy jest etykietowanie danych. Syf na wejściu, syf na wyjściu. Jednym z najprostszych i najskuteczniejszych podejść byłoby trenowanie GMM typu bag-of-frame i ocena prawdopodobieństwa.
jojek

Możesz najpierw sprawdzić, czy potrafisz oddzielić śmiech od ciszy, sprawdzając moc / amplitudę sygnału w danym momencie. Daje ci możliwość przekroczenia momentów, w których dzieje się „coś”. Następnie możesz spróbować przyjrzeć się rozkładowi częstotliwości. Na przykład mowa może mieć charakterystyczne ostre szczyty (nie przejmuj się, gdzie dokładnie są te szczyty, tylko że one istnieją), podczas gdy śmiech jest jednolity, jak powiedziałeś. Śledzenie tego może dać wartość decydującą o tym, czy to śmiech. (Potrzebujesz informacji o głośności, aby upewnić się, że nie masz tylko jednolitej ciszy)
user6522399,

Odpowiedzi:


0

Na podstawie obserwacji, że spektrum sygnału jest dostatecznie rozróżnialne, możesz użyć tego jako funkcji do klasyfikowania śmiechu od mowy.

Istnieje wiele sposobów spojrzenia na problem.

Podejście nr 1

W jednym przypadku możesz po prostu spojrzeć na wektor MFCC. i zastosuj to do dowolnego klasyfikatora. Ponieważ masz wiele koefektywnych w dziedzinie częstotliwości, możesz przyjrzeć się strukturze Kaskadowych klasyfikatorów z algorytmami wzmacniającymi, takimi jak Adaboost, na tej podstawie, możesz porównać klasę mowy z klasą śmiechu.

Podejście nr 2

Zdajesz sobie sprawę, że mowa jest zasadniczo sygnałem zmieniającym się w czasie. Jednym ze skutecznych sposobów jest przyjrzenie się zmienności czasowej samego sygnału. W tym celu możesz podzielić sygnały na partie próbek i spojrzeć na widmo dla tego czasu. Teraz możesz zdać sobie sprawę, że śmiech może mieć bardziej powtarzalny wzór przez określony czas, w którym mowa z natury posiada więcej informacji, a zatem zmienność widma byłaby raczej większa. Możesz zastosować to do modelu typu HMM, aby sprawdzić, czy konsekwentnie pozostajesz w tym samym stanie dla pewnego spektrum częstotliwości, czy ciągle się zmieniasz. Tutaj, nawet jeśli od czasu do czasu spektrum mowy przypomina śmiech, będzie więcej czasu.

Podejście nr 3

Wymuś zastosowanie kodowania typu LPC / CELP na sygnale i obserwuj pozostałość. Kodowanie CELP tworzy bardzo dokładny model produkcji mowy.

Z referencji tutaj: TEORIA KODOWANIA CELP

Redundancje w sygnale mowy są prawie usuwane po prognozie krótkoterminowej i prognozie długoterminowej sygnału mowy, a resztkowa pozostała w niej bardzo niewielka korelacja. Następnie wyszukiwane jest wzbudzenie, które syntetyzuje mowę, a indeks i wzmocnienie słownika są wyszukiwane ze stałego słownika. Optymalne kryterium wyboru indeksu słownika opiera się na MMSE między lokalnie syntezowaną mową a oryginalnym sygnałem mowy.

Mówiąc najprościej, po tym, jak cała mowa przewidywana z analizatora jest usuwana - pozostaje pozostałość, która jest transmitowana w celu odtworzenia dokładnego kształtu fali.

Jak to pomaga w twoim problemie? Zasadniczo, jeśli zastosujesz kodowanie CELP, mowa w sygnale jest w większości usuwana, co pozostaje resztą. W przypadku śmiechu większość sygnału może zostać zachowana, ponieważ CELP nie będzie w stanie przewidzieć takiego sygnału za pomocą modelowania dróg głosowych, gdzie jako indywidualna mowa będzie miała bardzo mało pozostałości. Możesz także przeanalizować tę pozostałość z powrotem w dziedzinie częstotliwości, aby sprawdzić, czy jest to śmiech czy mowa.


0

Większość urządzeń rozpoznających mowę wykorzystuje nie tylko współczynniki MFCC, ale także pierwszą i drugą pochodną poziomów MFCC. Zgaduję, że w tym przypadku początek byłby bardzo przydatny i pomógłby odróżnić śmiech od innych dźwięków.

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.