2009-05-08 8 views
9

Chciałbym napisać program, który będzie w stanie zapamiętać wzór dźwiękowy, taki jak gwizd pociągu, klakson (sygnał dźwiękowy) ... słuchanie dźwięku przez mikrofon ... a następnie wykonując jakąś czynność, gdy usłyszysz dźwięk. Znam małego pytona i zaprogramowałem go dawno temu w VB. Głównie jestem Oracle, facet PLSQL. Program będzie wymagał skromnego interfejsu użytkownika.Napisz program, który rozpozna dźwięk i wykona akcję

Jaka jest najlepsza kombinacja rozwiązań (język, dodatki firm trzecich itp.) W celu rozwiązania tego problemu?

+0

Jeśli chciałbym program, który może być uruchamiany na pulpicie lub uruchamiany z Internetu, czy Flash lub Silverlight będzie w drodze? –

+0

Ethan, zapoznaj się z moją odpowiedzią na aktualizację dotyczącą użycia Flasha lub Silverlight. W komentarzu było trochę za długo. Mam nadzieję, że to pomoże.. –

Odpowiedz

2

Sphinx to system rozpoznawania mowy. Może on być modyfikowany lub nawet przeszkolony do pracy w sposób, jakiego oczekujesz.

3

Domyślam się, że ścieżka najmniejszego oporu w tym przypadku polega na użyciu biblioteki rozpoznawania dźwięku innej firmy w połączeniu z językiem wysokiego poziomu (takim jak Java lub jeden z języków rodziny .NET, takich jak C# lub VB .NETTO).

Możesz rozpocząć od przeprowadzenia badań w obszarach Digital Sound Processing i Audio Recognition.

Po znalezieniu biblioteki lub frameworku, który ma możliwości, którymi jesteś zainteresowany, i powiązań w wybranym języku, zacznij z nim korzystać.

Zobacz MARF (bibliotekę Java), a może dzieło Microsoftu w tej dziedzinie witka nazw System.Speech.Recognition (który, jeśli dobrze pamiętam, został zintegrowany z nowszych systemów operacyjnych Windows)

EDIT - Pulpit vs. biec od Web

W komentarzach, które zadawałeś w związku z używaniem Flasha lub Silverlight, aby Twoje rozwiązanie mogło działać zarówno na pulpicie, jak i w Internecie.

Po pierwsze, chciałbym zaznaczyć, że zarówno Flash, jak i Silverlight faktycznie działają na komputerze klienckim. Różnica polega na tym, że działają one w kontekście przeglądarki internetowej i że użytkownik nie musi instalować aplikacji. W przeciwnym razie nie różnią się zbytnio od aplikacji komputerowej, a użytkownik oczywiście musi mieć zainstalowaną wtyczkę Flash Silverlight dla swojej przeglądarki.

Jeśli tego właśnie szukasz (tzn. Użytkownik nie musi instalować aplikacji), możesz zajrzeć do Flasha, Silverlight lub Java Web Start. Właściwie JAVA Web Start byłby prawdopodobnie dobrym kandydatem, ponieważ można wykorzystać MARF framework.

Jeśli jednak zdecydujesz się na Flash, Silverlight lub Java Web Start, istnieją pewne problemy z zabezpieczeniami, z którymi możesz mieć do czynienia, ponieważ dostęp do zasobów systemu klienckiego wymaga pewnych przywilejów dla większości "aplikacji internetowych" "zwykle nie wymagają.

1

Jeśli słuchasz konkretnego nagrania klaksonu lub gwizdka kolejowego, o którym program wie z góry, możliwe, że jeśli dźwięki są wystarczająco charakterystyczne, będziesz w stanie je wykryć i rozróżnić. niezawodnie.

Klasyfikowanie nowego dźwięku, którego wcześniej nie słyszał program (brzmiący jak klakson lub gwizd pociągu itp.) Jest znacznie trudniejszym problemem.

W obu przypadkach algorytmy identyfikacji dźwięku będą generalnie patrzeć na spektrum częstotliwości nagrywanego dźwięku (patrz łącze Miky D's na cyfrowe przetwarzanie dźwięku) i wykonywać na tych danych pewne dane, niż na zapisanym kształcie fali.

Jeśli chodzi o biblioteki językowe i strony trzecie, wybierz coś, co pozwoli Ci uzyskać nagrane dane audio z minimalnym nakładem pracy. Java wydaje się być dobra pod tym względem (patrz także algorytm uczenia maszynowego Java WEKA). Podczas gdy istnieją programy/biblioteki do analizy mowy i muzyki, nie znam żadnego z nich zaprojektowanego dla arbitralnych dźwięków, więc możesz skończyć, pisząc sam algorytm analizy.

0

Większość algorytmów, które znam, używa spectrogram (tj. Widmo vs. czas) do rozróżniania dźwięków. Jak trudny będzie ten problem, można oszacować na podstawie tego, jak różne są twoje spektrogramy.

Aspekt dźwięków, które mogą ułatwić odróżnienie ich od mowy, ma prawdopodobnie wyraźną strukturę harmoniczną (tzn. Bardziej przypomina skrzypce niż głos w łączu wikipedia). Ta struktura harmoniczna może być bardzo użyteczna w rozróżnianiu dźwięków i może być pomocna w twoim problemie. To przywodzi na myśl inne miejsce do patrzenia: jest dużo pracy w odróżnianiu ptaszków ptaków, które mają wyraźną strukturę harmoniczną, i wiele opublikowanych algorytmów, chociaż nie wiem o wolnym oprogramowaniu, które może być rozszerzone na twoje potrzeby. Mimo to przydatne może być skorzystanie z oprogramowania do analizy śpiewu ptaków, aby po prostu przyjrzeć się swoim plikom dźwiękowym. Zobacz na przykład projekt Raven, chociaż istnieje wiele innych darmowych pakietów spektrogramowych.

Powiązane problemy