Skip to main content

Posts

Showing posts from April, 2018

Dithering (часть 3)

Это будет третья и завершающая часть из серии постов про dithering, да и тема, наверняка, уже порядком надоела ;) Шум для dithering'а, о котором я говорил в предыдущих постах был либо белый, либо топорно приглушенный в нижних частотах. Технология noise shaping, о которой можно прочитать в статье S.P. Lipshitz, J. Vanderkooy and R.A. Wannamaker. 1991. Minimally audible noise shaping. J. Audio Eng. Soc. 39, 836-852. — это работа скальпеля, а не топора. Дело в том, что человек воспринимает разные частоты неодинаково. Существуют экспериментальные кривые зависимости мощности тона от частоты, которые построены так, что человек воспринимает эти тоны с одинаковой "громкостью". Вот пример такой кривой (спасибо, Википедия ;-) Как видно, на частотах около 4 и 12 кГц у человека есть локальные "пики" восприимчивости, когда тон должен быть тише, чем тоны с соседними частотами, чтобы восприниматься субъективно с той же громкостью. Схема dithering'а выглядит так (в

Dithering (часть 2)

В начале поста хочу рассказать о некоторой неточности, совершенной мной в предыдущем посте. А именно, "треугольно" распределенный шум берут в диапазоне $[-2\Delta, 2\Delta]$ (при этом мощность его будет $W = 2\Delta^{2}/3$). Придумали его не для того, чтобы звучать тише, а чтобы сделать первый и второй условные моменты функции ошибки $E[\epsilon^{m}|x] = \int_{-\infty}^{\infty} \epsilon^{m}p_{\epsilon|x}(\epsilon, x) d\epsilon$ независимыми от $x$. Привожу цитату из статьи  Quantization and Dither: A Theoretical Survey авторов Stanley P.Lipshitz, Robert A. Wannamaker и John Vanderkooy: Now consider a triangular-pdf dither of 2-LSB peak-to-peak amplitude resulting from the sum of two independent rectangular-pdf noises $v_{1}$ and $v_{2}$, each of 1-LSB peak-to-peak amplitude (...) (...) so this dither renders both the first and second moments of the total error independent of $x$. The second moment of the total error is a constant $\Delta^{2}/4$ for all inputs, (...) Ну

На что влияет размер (глубина) семпла?

В этом посте я разберу ещё одну характеристику представления аудио на компьютере — размер или глубину семпла. В теореме Шеннона, с которой мы ознакомились в первом посте, сказано, что семплы нужно брать с определенной частотой, чтобы восстановить исходный сигнал. Однако, в ней ничего не сказано о том, сколько памяти компьютера нужно выделить на один семпл. По сути  ней семплы — это обычные вещественные числа. В компьютере же семплы чаще всего представляются целыми числами в диапазоне от $-2^{n-1}$ до $2^{n-1}-1$ (целые числа со знаком), где $n$ — количество бит на один семпл (bps, bits per sample). С количеством бит на семпл связана другая величина — динамический диапазон (или отношение сигнал-шум, что в данном случае то же самое). Он измеряется в децибелах определяется так: $DR = 20 \lg (2^{n}) \approx 6 n$ Динамический диапазон показывает логарифм отношения самого сильного сигнала к самому слабому. Теперь, что будет, если мы выберем $n$ маленьким? Если взять синусоидальную волн

FIR-фильтры в SuperCollider

Если вы хотите протестировать, как будет работать тот или иной фильтр "вживую", можно использовать SuperCollider. Увы, для этого фильтр должен брать только сигналы, использующий только текущий и прошлые семплы :( Например, возьмем простейший low-pass фильтр, имеющий ядро $\left\{ 1/2, 1/2, 0, 0, 0, \cdots \right\}$ Т.е. отфильтрованный сигнал будет равен $f'_{n} = \frac{1}{2} f_{n} + \frac{1}{2} f_{n-1}$ Формально этот фильтр можно представить в time-domain в виде функции $f(t) = \frac{1}{2}\delta (t) + \frac{1}{2} \delta (t + \frac {2 \pi}{\omega_{0}})$, где $\omega_{0}$ — частота дискретизации. Преобразование Фурье равно $F(\xi) = \frac{1}{2} + \frac{1}{2} e^{-\frac {2 \pi}{\omega_{0}} i\xi}$ Модуль этой функции — АЧХ нашего фильтра $\left| F(\omega) \right| = \sqrt{F^{*}F} = \sqrt {1/2 (1 + cos (\frac{2 \pi}{\omega_{0}} \omega}))$ Для $\omega = 0$ получаем $\left| F \right| = 1$ и для $\omega = \omega_{0}/2$ получаем $\left| F \right| = 0$ — как я и говорил,

Ресемплинг аудио.

В этом посте расскажу о ресемплинге аудио (в частности, о даунсемплинге), под чем я подразумеваю понижение частоты дискретизации, с которой был записан звук. Известно, что в компьютере непрерывный аудио сигнал представлен в виде семплов (по-русски, измерений), сделанных в равно отстоящие друг от друга промежутки времени. Например, если звук записан с частотой дискретизации 44.1 кГц, то за одну секунду было сделано 44100 семплов. Здесь я расскажу о том, как восстановить исходный непрерывный сигнал по взятым семплам и как выбирать и менять частоту семплирования (или, что то же самое, частоту дискретизации). Преобразование Фурье. Преобразованим Фурье $F(\xi)$ функции $f(x)$ называется следующая функция: $F(\xi) = \int_{-\infty}^{\infty} f(x) e^{-ix\xi}dx$ обратное преобразование определено как $f(x) = \frac{1}{2\pi}\int_{-\infty}^{\infty} F(\xi) e^{ix\xi}d\xi$ Вопрос о том, когда существует преобразование Фурье и обратимо ли оно (т.е. работает ли вторая формула), очень сложе