Instrukcja poświęcona jest podstawowym parametrom plików dźwiękowych. Poznamy sposoby ich obserwacji i przekształceń. Mała uwaga zajmujemy się tutaj redukcją informacji, dlatego w treści tej instrukcji nie znajdą się informacje na temat zwiększania częstotliwości próbkowania i rozdzielczości bitowej sygnału, ale obie operacje są możliwe do wykonania, ale z różnymi sukcesami.

Pliki do zajęć:

Zadania

  1. Do Zaimplementowania:

    1. Funkcję symulującą zmianę rozdzielczości bitowej dowolnych danych, na dowolną inną ilość bitów (minimalny zakres, w jakim powinno to działać to od 2 do 32 bitów), wykorzystującą wzory matematyczne i zaokrąglenia, a nie metodą dopasowywania do wzorca (0,1 pkt).
    2. Funkcje decymującą o dowolny interwał n będący liczbą całkowitą (proszę nie mylić tego z ilością bitów) (0,1 pkt),
    3. Funkcję wykonującą interpolację sygnału z domyślnej wartości próbkowania na nową oraz pozwalającej wybrać rodzaj interpolacji (0,1 pkt).
  2. Na podstawie poprawnie działającego kodu oraz dołączonych plików zbadać:

    1. Wykorzystując funkcję do automatycznego rysowania wykresów z pierwszych zajęć, proszę wygenerować wykresy dla 4 plików sin_ po wszystkich modyfikacjach. Dla każdego z nich powinniście mieć fragment sygnału w czasie zawierający kilka okresów funkcji z pliku oraz połówkę widma w skali dB. W zależności od pliku będzie to inny czas. Podpowiedź czas w zależności od pliku źródłowego będzie prawdopodobnie zawierał się w przedziale \(1-100\) ms. Pamiętajcie, żeby pokazać całą połowę widma, a nie jej fragment. Lista modyfikacji do przebadania:
      • sygnał zapisany na: 4,8,16,24 -bitach
      • decymacja z krokiem 2,4,6,10,24
      • interpolacja sygnału (liniowa i nieliniowa) do wartości częstotliwości próbkowania: 2000 Hz,4000 Hz, 8000 Hz,11999 Hz, 16000 Hz, 16953 Hz, 24000 Hz, 41000 Hz Tak wykresów będzie bardzo dużo, ale nie opisujcie ich pojedynczo tylko całościowo. Najlepiej opisywać je grupami (albo po modyfikacji, albo pliku). W kilku przypadkach testowania zmiany częstotliwości próbkowania zdarzą się przypadki, gdy kod nie będzie w stanie wyświetlić nam widma. Należy, wtedy sprawdzić jak wygląda sygnał w czasie i powiązać ten problem z pewnym twierdzeniem omawianym na wykładach. Żeby pozbyć się błędu przy konwersji do skali decybelowej, można dodać do widma przed przeliczeniem bardzo małą wartość np. np.finfo(np.float32).eps (0,4 pkt).
    2. W drugiej części zadania proszę zbadać wpływ kwantyzacji i różnych metod zmiany częstotliwości próbkowania na odbiór plików, czyli co słychać czego nie słychać itd. W tym celu proszę wybrać po co najmniej jednym pliku z każdej kategorii śpiewu low, medium i high i przeprowadzić odsłuchy (będą 3 pliki). Proszę przebadać dla nich poniższe modyfikacje:
      • sygnał zapisany na: 4,8 -bitach
      • decymacja z krokiem 4,6,10,24
      • interpolacja sygnału (liniowa i nieliniowa) do wartości częstotliwości próbkowania: 4000 Hz, 8000 Hz,11999 Hz, 16000 Hz, 16953 Hz Wyniki zamieścić w tabeli lub liście obserwacji. (0,3 pkt).

    Proszę nie mieszać redukcji ilości bitów ze zmianą częstotliwości próbkowania. Na końcu sprawozdania proszę napisać jakieś podsumowanie/wnioski z eksperymentu.

Przypomnienie

  • Proszę przetestować i wygenerować wykresy dla wszystkich plików sin_. Natomiast odsłuchy wykonać dla przynajmniej po jednym pliku z każdej grupy sing_.
  • Proszę pamiętać, że zmiana częstotliwości próbkowania powinna być zmieniona jako parametr w wykresach widma oraz podczas odtwarzania i/lub zapisu.

Do oddania

  • kod źródłowy (jeden plik .py)
  • sprawozdanie z obserwacjami i wynikami (format PDF)