Мне нужен кто-то, кто заставит меня делать то, что я могу
ну что готовность номер восемь
отсчёт обратный скоро семь
шесть пять четыре три два оппа
я передумал всё отбой
(с) Интернет
Я радиоволна, радиоволна...
(с) Чичерина "Радиоволна"
Экзамены назначены, выхожу на финишную прямую. Нужно сдать абсолютно все (6 экзаменов) и с первого раза. Самый страшный из них Digital speech and audio processing.
Вчера с другом физиком (привет, Саша!!) пытались разобрать первую лекцию. Кое-что проясняется, кое-что так и осталось загадкой. Но по порядку, далее будут идти скучные подробности из первой лекции и жизнеутверждающая картинка
Предыстория:
С 1980: CD диски стали широко распространены. Обработка звука становится важной частью индустрии, особенно с развитием интернета, мобильных коммуникаций и др. мультимедиа. Основная обработка связана с оцифрованным звуком, так что вот вам схемка:
Amplifier->Anti-aliasing->S/H(Sample&Hold)->ADC(Analog-to-digital-converter)->Encode
Усилитель->ФНЧ->замеры и сохранение->АЦП->кодирование
Понятно, что там, где ФНЧ - происходит ограничение полосы пропускания, для удаления посторонних шумов. АЦП - грешит шумом квантования (Quantisation noise) и нелинейными искажениями (non-lineair distortion). Кодирование обеспечивает высокую степень сжатия/передачи (High density storage/transmission) и коррекцию ошибок с записью доп. информации (meta data (sync, copyright, encrypt, …))
Дискретизация (Sampling)
Здесь основной упор делается на теорему Наквиста-Котельникова-Шеннона (Sampling Theorem) о том что, для восстановления сигнала из отсчетов, их нужно брать с частотой превышающей максимальную удвоенную частоту исходного сигнала. Доступно и с примерами объяснено
здесьИх статьи становится понятно, почему не стоит брать частоту меньше удвоенной и даже равную удвоенной.
Существует и такое явление как cупердискретизация (Oversampling) или просто дискретизация с большим запасом по частоте, когда мы берем частоту не просто вдвое больше и еще чуть-чуть, а, например, в 4 раза больше. Т.е. диапазон речи 20 -20000 Hz, а частоту дискретизации берем 88.2 kHz. Это супердискретизация. В таком случае проще построить ФНЧ, он будет (FIR-finite impulse response) с конечной импульсной характеристикой (КИХ). Вообще аналоговые ФНЧ достаточно сложно строить, потому как онинужны 7-11 порядков, а это порядок многочлена описывающего фильтр. Т.е. расчет коэффициентов весьма затруднителен. Также эти фильтры чреваты зацикливанием (Ringing => pre-echo&post-echo)
К тому же, при необходимости, можно понизить частоту, так сказать провести децимацию (Decimate to 44.1 kHz)
Квантование (Amplitude Quantization)
Раз мы знаем с какой частотой брать отсчеты, то теперь нужно знать сколько разрядов нуно под запись каждого значения. Универсальным считается 16 -24 bit uniform ADC. Оптимально для большинства частот и амплитуд, впоследствии можно проще работать с DSP, универсально для музыки.
Если мы хотим использовать больше разрядность, то нужны ФНЧ лучше - “better” AA, и нужно повышаеть частоту дискретизации (anti-ringing). Верно что, выше частота, больше бит, меньше ошибок! Лучший аналог, который мы используем при записи CD: 44.1 kHz, 16 -20 bit
Существует два вида квантования: округлением (rounding) - погрешность равна половине шага квантования (Q для синусоиды 2A/2^N - удвоенная амплитуда на максимальную размерность преобразователя) и квантование усечением (truncation). Оно более простое. Ненужные разряды просто отбрасываются, но максимальная погрешность квантования удваивается. Тут появляется такая штука как динамический диапазон (dynamic range) - отношение максимального уровня сигнала к минимальному (выражается в децибелах через количество битов N преобразователя).
Размер от максимальной, до минимальной точки должен умещаться в N бит. Peak to peak (N bit). Допустим, что возможна ошибка в самом младшем разряде (error 1 LSB-least-significant bit). То есть отношение сигнал/ошибка будет SER(signal-error-ratio)=20lg(2^N-1)~6N Т.е., если у нас под сигнал N=16 bit => 96 dB, такое отношение.
Теперь найдем сигнал/шум SNR. Теоретический максимум отношения сигнал-шум SNR=10lgPs/Pe - отношение мощности сигнала к мощности ошибки. Путем сложных формул выводим мощность ошибки как Q*Q/12, а мощность сигнала A*A/2. Подставляем сюда формулу шага квантования через амплитуду и получаем примерно:
SNR=1,76+6.02N (bB)
т.е. под сигнал N=16 bit => 98 dB
Non-Linear Distortion (еще не разобралась), но похоже это связано со слабыми сигналами у которых ошибка коррелирует с сигналом и granulation noise. Также вроде как эта проблема решается сглаживанием (dithering).
Существуют и АЦП с плавающей точкой (Floating point ADC), т.е. у них есть Mantissa (N bit) и Exponent (G bit). Есть даже некая формула для расчета (96+(2^G-1)6)dB=138 dB для N=16, 24 bit linear with 8 leftshifts. Кто бы мне эту формулу объяснил. Пока дальше не разобралась. Итого, половина первой лекции.
Немного подробнее про дискретизацию по времени и квантованию по уровню:
http://prapor-kot.narod.ru/Lect10.htm