logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.
REKLAMA
  • #1 5117915
    bartekkaz
    Poziom 10  
    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!
  • REKLAMA
  • #2 5123886
    shg
    Poziom 35  
    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.
  • REKLAMA
  • #3 5125564
    bartekkaz
    Poziom 10  
    dzięki za pomoc. tak, jest to projekt na zaliczenie z CPS, chętnie zerknąłbym w kod takiego programu. ;)
  • REKLAMA
  • #4 5129051
    shg
    Poziom 35  
    Ź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...
    Załączniki:
  • #5 5479050
    bartekkaz
    Poziom 10  
    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!
REKLAMA