eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaprogram do symulacji obróbki audio ?
Ilość wypowiedzi w tym wątku: 29

  • 11. Data: 2013-07-05 21:07:41
    Temat: Re: program do symulacji obróbki audio ?
    Od: sundayman <s...@p...onet.pl>


    > W zasadzie operacja, o której mówisz, jest tożsama z filtrem
    > Savitzky'ego i Golaya o rzędzie równym 1 i długości równej 3 lub więcej.

    no patrz, nie wiedziałem, że to ma taką mądrą nazwę :)


  • 12. Data: 2013-07-05 21:09:10
    Temat: Re: program do symulacji obróbki audio ?
    Od: Luke <l...@l...net>

    Dnia 2013-07-05 19:34, Użytkownik sundayman napisał:

    > 1. out = (s1 + s2 + s3 ) /3
    > 2. out = (s2 + s3 + s4 ) /3
    > 3. out = (s3 + s4 + s5 ) /3
    > 4. out = (s4 + s5 + s6 ) /3

    1. GNU R z jednym z kilku pakietów do czytania/pisania WAV
    2. MATLAB z Signal Processing Toolbox
    3. Może Scilab?
    4. Goły język C z libsndfile

    W zasadzie operacja, o której mówisz, jest tożsama z filtrem
    Savitzky'ego i Golaya o rzędzie równym 1 i długości równej 3 lub więcej.
    R i Matlab udostępniają do tego gotowe funkcje.

    Luke



  • 13. Data: 2013-07-05 21:21:36
    Temat: Re: program do symulacji obróbki audio ?
    Od: sundayman <s...@p...onet.pl>


    > chodzi o obrazek - wygląd przebiegu przed i po uśrednieniem

    znaczy oczywiście, mając wygenerowany przetworzony plik audio, to o
    obrazek nietrudno :)

    Ale widzę, że bez pomocy, to niestety nie dam se rady :)


  • 14. Data: 2013-07-05 22:08:15
    Temat: Re: program do symulacji obróbki audio ?
    Od: Michał Smolnik <m...@g...com>

    W dniu 05.07.2013 19:34, sundayman pisze:
    > Potrzebuję zrobić następującą rzecz :
    >
    > Mam plik audio (taki tam sobie sygnał szumowy raczej, ale zróżnicowany w
    > czasie (modulowany AM powiedzmy) , o niewielkim paśmie - mniej więcej
    > 100Hz - 2kHz .
    >
    > I chciałbym zrobić symulację uśredniania tego sygnału, znaczy właściwie
    > poszczególnych próbek;

    > Potrzebne mi to do celów demonstracyjnych - żeby pokazać, jak działa
    > taka procedura (bo mam ją zaimplementowaną w pewnym urządzeniu, ale nie
    > da się łatwo tego "wyciągnąć" w postaci liczbowej...).
    >
    > Help ?

    www.processing.org

    Sam niedawno robiłem coś podobnego. Liczyłem RMS sygnału audio.

    Sama przyjemność, jest mnóstwo przykładów i bardzo dobry help.

    Pozdrawiam,
    --
    Michał


  • 15. Data: 2013-07-05 23:57:14
    Temat: Re: program do symulacji obróbki audio ?
    Od: Michał Lankosz <m...@t...pl>


    Skrypt Octave, krok po kroku:

    %[data,fs] = wavread("sample.wav");
    data = [1:1:12]
    len = length(data);
    n=3;
    y = [];
    for i=1:len-3
    mean = sum(data(i:i+n-1))./n
    y = [y, mean]
    t = [1:length(y)];
    plot(t,data(1:i),"*b", t,y,"or")
    pause
    endfor

    Znak % zamienia linię na komentarz

    Jeśli chcesz rysować od razu całość np. tak:
    http://img560.imageshack.us/img560/2783/kci.png

    to tu masz kod:

    %[data,fs] = wavread("sample.wav");
    data = [1,2,3,4,4,4,8,7,2,3,4,3,3,3,1];
    len = length(data);
    n=3;
    b = ones(n,1)./n;
    y = filter(b,1,data);
    t = [1:length(y)];
    plot(t,data,"b*-", t,y,"ro-")
    %stem(t,[data', y']);

    Odkomentuj pierwszą linię i zakomentuj drugą aby pracować na danych z
    wav. stem rysuje próbki, może bardziej przypadnie Ci do gustu, bo to w
    końcu jest sygnał spróbkowany, nie ciągły. Usuwając "-" z funkcji plot
    pozbędziesz się linii łączących. Oczywiście za długi ten sygnał nie może
    być, bo wykres stanie się nieczytelny. Można wybrać z wektora jakiś
    interesujący krótszy zakres. Częściowo pomoże narzędzie lupa. Na
    wykresie możesz wprowadzać oznaczenia osi, danych, tytuł, siatkę, kolory.

    kod wklejasz do pliku tekstowego np sundy.m i wywołujesz wpisując w
    linii komend Octave: sundy.

    --
    Michał


  • 16. Data: 2013-07-06 01:22:43
    Temat: Re: program do symulacji obróbki audio ?
    Od: sundayman <s...@p...onet.pl>

    no bardzo koledze dziękuję, zaraz spróbuję to użyć, tylko
    mam obawę, czy to się da zastosować do pliku audio, który ma np 10 sekund ?

    No bo właśnie o to chodzi - o efekt "globalny", że tak to powiem.
    Cała ta procedura istotnie zmienia "obwiednię" takiego sygnału (uśrednia
    ją bardzo przyjemnie właśnie), no i to chcę pokazać, ale
    na całym sygnale, a ten ma około 10 sekund...

    Ok, próbuję...


  • 17. Data: 2013-07-06 02:08:05
    Temat: Re: program do symulacji obróbki audio ?
    Od: sundayman <s...@p...onet.pl>

    W dniu 2013-07-05 23:57, Michał Lankosz pisze:
    >
    > Skrypt Octave, krok po kroku:

    No żesz kuśwa - rewelka !
    Sprawdziłem na pierwszym skrypcie, znaczy :

    [data,fs] = wavread("audio.wav");
    n=30;
    b = ones(n,1)./n;
    y = filter(b,1,data);
    wavwrite(y,"wynik.wav");

    ____________________________________________________
    _________________

    to jest właśnie to, o co chodzi ! Znaczy prawie... :) Ale o tym zaraz.
    Natomiast - generalnie działa super.
    Zapodałem sobie pliczek, octave go przerobiło, i wynikowy pliczek mogę
    sobie już odsłuchać, oglądać itp.


    Natomiast muszę jeszcze poprosić o dalszą pomoc :)
    Bo trochę uprościłem wstępny opis, licząc, że potem sam sobie dam z tym
    radę. No ale jak widać nie bardzo...


    Więc - faktycznie cały proces obróbki wygląda tak ;

    Najpierw sygnał audio jest prostowany (analogowo) w dwupołówkowym
    prostowniku (na OPAMPie).

    Następnie - sygnał trafia do przetwornika A/D, gdzie jest próbkowany z
    częstotliwością 1kHz, a następnie ;

    Z każdych kolejnych 10-ciu próbek (1-10, 11-20, 21-30, czyli nie "w
    kółko", jak podczas uśredniania, tylko zwyczajnie, po kolei każde 10 )
    wybierana jest największa próbka.

    I dopiero te dane podlegają opisanemu już uśrednieniu.



    Efekt samplowania w przetworniku A/D można pominąć , bo to chyba można z
    przybliżeniem zrobić odpowiednio "resamplując" oryginalny plik audio.


    Czyli potrzebne jest ostatecznie :

    1. prostowanie sygnału
    2. wybór największej próbki z kolejnych 10-ciu
    3. uśrednianie wg. wcześniejszej procedury


    Da się tak zrobić ??









  • 18. Data: 2013-07-06 02:14:23
    Temat: Re: program do symulacji obróbki audio ?
    Od: sundayman <s...@p...onet.pl>


    > Czyli potrzebne jest ostatecznie :
    >
    > 1. prostowanie sygnału
    > 2. wybór największej próbki z kolejnych 10-ciu
    > 3. uśrednianie wg. wcześniejszej procedury
    >
    >
    > Da się tak zrobić ??

    Żeby nie było, że nie próbuję, ściągnąłem helpa do octave, i popróbuję
    gdzieś tak do 5 rano :)

    Tak czy owak będę musiał się tego nauczyć (choć pewnie zajmie to trochę
    czasu), bo to bardzo przydatne narzędzie - często muszę przetwarzać
    sygnały w takie dziwne sposoby, i ten soft jest jak znalazł.
    PureData też zresztą.

    Ech, żeby tak można jak w "matrixie" załadować sobie w 10 sekund
    umiejętność obsługi :)


  • 19. Data: 2013-07-06 09:10:47
    Temat: Re: program do symulacji obróbki audio ?
    Od: Luke <l...@l...net>


    > no patrz, nie wiedziałem, że to ma taką mądrą nazwę :)
    >

    Ale wiedziałeś i żartujesz, czy nie wiedziałeś? Bo Savitzky-Golay to
    jest filtr, który uśrednia próbkę przez dopasowanie wielomianu do
    kawałka sygnału. Jeśli wielomianem jest prosta, to jest to równoznaczne
    (poza krańcami sygnału) z uśrednianiem.

    A jako że do R i Matlaba masz funkcje gotowe do tego filtru, to np.


    > library(signal)
    Loading required package: MASS

    Attaching package: 'signal'

    The following object(s) are masked from 'package:stats':

    filter, poly

    > x <- rnorm(50)
    > y <- sgolayfilt(x,1,3)
    > plot(x,type="l"); lines(y,col=2)


    Na wykresie masz sygnał losowy na czarno i uśredniony na czerwono :)

    Luke


  • 20. Data: 2013-07-06 09:13:13
    Temat: Re: program do symulacji obróbki audio ?
    Od: Michał Lankosz <m...@t...pl>

    W dniu 2013-07-06 02:08, sundayman pisze:
    > to jest właśnie to, o co chodzi ! Znaczy prawie... :)
    [...]
    > Natomiast muszę jeszcze poprosić o dalszą pomoc :)
    > Czyli potrzebne jest ostatecznie :
    >
    > 1. prostowanie sygnału
    > 2. wybór największej próbki z kolejnych 10-ciu
    > 3. uśrednianie wg. wcześniejszej procedury
    >
    > Da się tak zrobić ??
    >

    Da się, nie ma problemu. Może z dalszą pomocą w postaci kolejnych wersji
    programu przejdę na priv. Tylko nie teraz
    Na szybko kilka wskazówek, może sobie sam poradzisz:
    prostowanie sygnału:
    data1 = abs(data);
    największa próbka z 10-ciu kolejnych (pętla for, może da się ją ominąć?):
    data2 = max(data1(i:i+10));
    liczby rozdzielone dwukropkiem oznaczają przedział
    tylko że trzeba w pętli ten wektor sklejać, tzn za każdym obiegiem pętli
    doklejać kolejną wartość, coś w rodzaju:
    data3 = [];
    for i=1:10:data_length % i inkementuje się co 10!
    data2 = max(data1(i:i+10));
    data3 = [data3, data2];
    endfor
    no i teraz już ten filter.

    Dla sprawdzenia możesz w każdym miejscu wpisać plot(data3) na przykład i
    zobaczyć dany wykres. Dla dużej liczby próbek na wykresie można
    zrezygnować z kropek danych, zostawić tylko linie
    plot(t,y,"g-"); t-wektor czasu, a właściwie to numer próbki, y dane,
    g to kolor, - to rysowanie linią. "g:" narysuje Ci kropkowany wykres, a
    "g--" linią przerywaną.
    --
    Michał

strony : 1 . [ 2 ] . 3


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: