2011-02-03 15 views
5

Mam trochę problemów z programowaniem i konwersją. Projektuję sztuczną inteligencję, aby rozpoznać dźwięki grane przez instrumenty i muszę wyodrębnić nieprzetworzone dane dźwiękowe z pliku wave. Moim celem jest wykonanie operacji FFT w porcjach czasu w pliku do użycia przez sztuczną inteligencję. Do tego potrzebuję listy amplitudy pliku audio, ale nie mogę znaleźć techniki konwersji, która będzie działać. Pliki zaczynają się jako MP3, a następnie konwertuję je do pliku WAV, ale zawsze mam skompresowany plik, który wypluwa bełkot, gdy próbuję go odczytać. Czy ktoś wie, w jaki sposób mogę przekonwertować plik WAV na coś, co byłoby kompatybilne z modułem falowym Pythona, czy nawet coś, co bezpośrednio przekształciłoby dane w listę amplitudy?Wyodrębnianie listy amplitudy z pliku * .wav do użycia w Pythonie

+0

BTW, używam macbook pro z PyDev dla Eclipse, więc podczas gdy konwertery okien nie są całkowicie wykluczone, są bardzo niewygodne. – AlexL

Odpowiedz

3

Domyślny moduł falowy Python nie jest bardzo dokładny. Możesz wypróbować wersję zawartą w scipy jako alternatywę.

Check out: Reading *.wav files in Python

Jeśli masz zamiar robić żadnych liczbowych dźwiganie ciężarów z dźwiękiem, może scipy być najlepszym rozwiązaniem w każdym razie.

2

Wierzę, że Python potrafi czytać pliki .dat. Można użyć SoX włączyć mp3 lub wavs lub cokolwiek do plików .dat, które są po prostu lista tekst „CZAS - lewy AMP - Prawo AMP”

Kod jest po prostu Sox soundfile.mp3 soundfile.dat

http://sox.sourceforge.net/

Sox jest linią poleceń - uruchamiam ją z Terminal na moim macu, ale wszystko, co rozumie polecenia Basha lub Linuxa, powinno działać w zależności od używanego procesora.

Nadzieję, że pomaga!

Możesz również chcieć spojrzeć na Pure Data, ma kilka ładnych transformacji FFT wbudowanych w intuicyjny graficzny język programowania.