Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

efekt "kidnaper"

bartekkaz 08 Maj 2008 09:06 1487 4
  • #1 08 Maj 2008 09:06
    bartekkaz
    Poziom 9  

    witam, mam problem ponieważ muszę napisać program realizujący tzw. efekt kidnappera, czyli nagranie głosu w formacie WAVE przerobic tak żeby nie można było rozpoznać mówcy. Nie wiem jak się do tego zabrać bo moja wiedza z zakresu DSP jest zerowa :/ Czy mógłby mi ktoś pomóc?? wszelkie pomysły materiały a może fragmenty kodu (:D) bedą ogromną pomocą. Dzięki!

    0 4
  • #2 09 Maj 2008 20:06
    shg
    Specjalista techniki cyfrowej

    Szukać:
    Pitch shifter - zmienia częstotliwość podstawową głosu razem harmonicznymi (czyli wszystko, łącznie z formantami). Z tej racji stosuje się go do "przestrajania" brzemienia instrumentów.
    Powiedzmy, że wszystko brzmi jak z przyspieszonej/spowolnionej taśmy, ale w normalnym tempie, głos nienaturalny, raczej tego szukasz.
    Vocoder - zamiast głosu "podstawia" jakiś dowolny dźwięk (na przykład instrument), formanty zostają jak były. Również dość skutecznie maskuje głos.

    Połączenie powyższych - przesuwa częstotliwość podstawową, ale formanty zostają na miejscu, to Cię raczej nie interesuje, bo głos tak przetworzony brzmi tak, jakby osoba mówiąca/śpiewająca zmieniła tylko ton (zostają zachowane indywidualne cechy głosu). Używa się tego do "dostrojenia" wykonawców muzyki popularnej.

    Pitch shifter o w miarę przyzwoitej jakości jest najprostszy do zrealizowania.

    Jakiś projekt na zaliczenie?, bo są do tego gotowe programy.

    0
  • #3 10 Maj 2008 12:13
    bartekkaz
    Poziom 9  

    dzięki za pomoc. tak, jest to projekt na zaliczenie z CPS, chętnie zerknąłbym w kod takiego programu. ;)

    0
  • #4 11 Maj 2008 14:34
    shg
    Specjalista techniki cyfrowej

    Źródła programu SoX (taki konsolowy program do obróbki dźwięku), do ściągnięcia tu:
    http://prdownloads.sourceforge.net/sox/sox-14.0.1.tar.gz?download
    Strona projektu:
    http://sox.sourceforge.net/

    Plik pitch.c w katalogu src.
    Jest tam właśnie taki najprostszy pitch-shifter działający w domenie czasu. Zasada działania - nakładanie na siebie okien wyciętych z oryginalnego sygnału, z tym że "gęściej", lub "rzadziej" niż w oryginale.
    Jest też kilka różnych wariantów interpolacji.
    Nie wiem tylko dlaczego ta wersja nie działa - w SoX, w wersji win32 wiesza się, ale jest jeszcze efekt "key" (kod w pliku tempo.c, key.c to tylko wrapper). Ten efekt działa na tej samej zasadzie, ale okna nie są nakładane w "sztywnych", z góry narzuconych odstępach, tylko wyszukiwane są miejsca, które powodują najmniejsze zniekształcenia. Konkretniej, to położenie okienek dobierane jest tak, żeby przebiegi w sąsiednich okienkach pasowały do siebie.
    Opis algorytmu:
    http://etro.vub.ac.be/Research/DSSP/publications/int_conf/ICASSP-1993.pdf

    W załączniku ilustracje dźwiękowe. Plik oryginalny i z przeskalowanym widmem o -25% i +50% za pomocą algorytmu WSOLA i oraz za pomocą najprostszego nakładania okienek trójkątnych z interpolacją liniową.
    W drugim przypadku wyraźnie słyszalny jest efekt niedopasowania położenia okienka do charakterystyki sygnału, Da się lepiej, ale to było robione na mikrokontrolerze, gdzie moc obliczeniowa jest dość mocno ograniczona. Rewelacji jednak spodziewać się nie należy. Zresztą jeżeli chodzi o zniekształcenie mowy, to może i nawet lepiej...

    0
    Załączniki:
  • #5 27 Sie 2008 10:06
    bartekkaz
    Poziom 9  

    Witam ponownie. Poczytałem trochę o problemie i generalnie potrzebuje (jak wspomniał kolega wyżej) zastosować PITCH SHIFTING. Czy mógłby mi ktoś pomóc i podać kod, (gdyż nie chce stosować bibliotek) funkcji realizującej ten efekt? Bardzo proszę o pomoc, sam nie wiem jak się do tego zabrać. Piszę w czystym C, nie wiem jak zastosować ten filtr pojedynczą funkcją ANSI C. Pomocy!

    0