Dzień dobry wszystkim znawcom przetwarzania dźwięku.
Robie projekt z "modyfikacji parametrów dźwięku",(właściwie chodzi o głos) do pracy magisterskiej,
No i oczywiście 100 rzeczy nie wiem, będę bardzo wdzieczny za wasza pomoc na tym forum.
Projekt jest realizowany na EZ-kicie ADSP-2181, 16-bitowy procesor Analog Davices, taktowany 33Mhz.
Na to chodzić w czasie rzeczywistym, a mój pomysł jest taki:
FFT > modyfikacje > IFFT
Jako modyfikacje chodzi tu o:
1- podbijanie lub obliżanie poszczególnych prążków częstotliwości ( taki equalizer jakby )
2- przesuniecia częstotliwości, procentowe i liniowe
kupiłem sobie taką mądrą książkę "Wprowadzenie do cyfrowego przetwarzania sygnałów" Richard G Lyons
(którą zresztą polecam wszystkim początkującym, sobie głównie
, no ale oczywiście mam sto pytań do...
Powiedzcie mi czy dobrze rozumuje, jeśli mam robić FFT potem IFFT, to wyniki części urojonych i tak sie
wyzerują, tak wynika przynajmniej ze wzorów:
------X(n) = E x(n) [ cos(2pinm/N - jsin(2pinm/M)]
x(n) = 1/N E X(n) [ cos(2pinm/N + jsin(2pinm/M)]
................................................./\ - Tak rozumuje z tego fragmentu, i z książki
no więc czy zasadne jest niewyliczenie w ogóle częsci urojonej tak w FFT i IFFT ???
Byłoby szybciej.
inne pytanie , czy ktoś ma orintacje czy ten procek to uciągnie w czasie rzeczywistym ?
Jest jeszce cały algorytm Goertzela, ale malo o im jest po polsku, i nie wiem czy nie zostać przy FFT
a czy ten algorytm Goertzela ma taką samą złożonośc obliczeniową jak FFT.
Mówi się że on jest lepszy do zastosowań czsu rzeczywistego , ale ja sobie to tak wykombinowałem:
Próbkowanie 8 KHz (mono), przychodząca próbka zgłasza przerwanie (tzn. nie ona tylko codec), i jest
ładowana do bufora wejściowego (tablica zpis/ odczyt typu kołowego ) załózmy ma on 256 słów, bo takie
FFT chce robić.
Ta sama procedura obsługi przerwania wysyła próbkę z bufora wyjściowego, (też 256 słów, też kołowy), A
w między czasie (między przerwaniami ) procek wylicza FFT na podstawie bufora wejściowego, ładuje do
tablicy przejściwej , modyfikuje i spowrotem IFFT i do bufora wyjściowego. Więc jak zdąży to zrobić w
czasie pobierania tych 256 próbek, to wszystko powinno działać, co prawda sygnał będzie opóźniony o 1 /
8000 * 256 sekundy, ale to tak może być. Czy dobrze to sobie wykombinowałem ??
Dalej nie pisze ,bo nikt nie będzie chciał takiego długiego posta czytać, zresztą inne pytania i tak
wyjdą w czasie debaty na tym forum ( i ile, mam nadzieję znajdziecie dla mnie pare chwil) pozdrawiam
Robie projekt z "modyfikacji parametrów dźwięku",(właściwie chodzi o głos) do pracy magisterskiej,
No i oczywiście 100 rzeczy nie wiem, będę bardzo wdzieczny za wasza pomoc na tym forum.
Projekt jest realizowany na EZ-kicie ADSP-2181, 16-bitowy procesor Analog Davices, taktowany 33Mhz.
Na to chodzić w czasie rzeczywistym, a mój pomysł jest taki:
FFT > modyfikacje > IFFT
Jako modyfikacje chodzi tu o:
1- podbijanie lub obliżanie poszczególnych prążków częstotliwości ( taki equalizer jakby )
2- przesuniecia częstotliwości, procentowe i liniowe
kupiłem sobie taką mądrą książkę "Wprowadzenie do cyfrowego przetwarzania sygnałów" Richard G Lyons
(którą zresztą polecam wszystkim początkującym, sobie głównie
Powiedzcie mi czy dobrze rozumuje, jeśli mam robić FFT potem IFFT, to wyniki części urojonych i tak sie
wyzerują, tak wynika przynajmniej ze wzorów:
------X(n) = E x(n) [ cos(2pinm/N - jsin(2pinm/M)]
x(n) = 1/N E X(n) [ cos(2pinm/N + jsin(2pinm/M)]
................................................./\ - Tak rozumuje z tego fragmentu, i z książki
no więc czy zasadne jest niewyliczenie w ogóle częsci urojonej tak w FFT i IFFT ???
Byłoby szybciej.
inne pytanie , czy ktoś ma orintacje czy ten procek to uciągnie w czasie rzeczywistym ?
Jest jeszce cały algorytm Goertzela, ale malo o im jest po polsku, i nie wiem czy nie zostać przy FFT
a czy ten algorytm Goertzela ma taką samą złożonośc obliczeniową jak FFT.
Mówi się że on jest lepszy do zastosowań czsu rzeczywistego , ale ja sobie to tak wykombinowałem:
Próbkowanie 8 KHz (mono), przychodząca próbka zgłasza przerwanie (tzn. nie ona tylko codec), i jest
ładowana do bufora wejściowego (tablica zpis/ odczyt typu kołowego ) załózmy ma on 256 słów, bo takie
FFT chce robić.
Ta sama procedura obsługi przerwania wysyła próbkę z bufora wyjściowego, (też 256 słów, też kołowy), A
w między czasie (między przerwaniami ) procek wylicza FFT na podstawie bufora wejściowego, ładuje do
tablicy przejściwej , modyfikuje i spowrotem IFFT i do bufora wyjściowego. Więc jak zdąży to zrobić w
czasie pobierania tych 256 próbek, to wszystko powinno działać, co prawda sygnał będzie opóźniony o 1 /
8000 * 256 sekundy, ale to tak może być. Czy dobrze to sobie wykombinowałem ??
Dalej nie pisze ,bo nikt nie będzie chciał takiego długiego posta czytać, zresztą inne pytania i tak
wyjdą w czasie debaty na tym forum ( i ile, mam nadzieję znajdziecie dla mnie pare chwil) pozdrawiam