2016-03-29 4 views
2

Я генерировал квадратными волны сигнала и поместить его в звуковой файл, используя этот код:ореолы на звуковой сигнал показан на osciloscope

import sys, os, wave, random, struct 

noise_output = wave.open('noise.wav', 'w') 
noise_output.setparams((1, 2, 1000, 0, 'NONE', 'not compressed')) 

SAMPLE_LEN = 1000 

for i in range(0, SAMPLE_LEN): 
     value = random.choice([-32000, 32000]) 
     for j in range(100): 
      packed_value = struct.pack('h', value) 
      noise_output.writeframes(packed_value) 

я ожидал услышать несколько коротких трещотки, когда слушал, потому что это не означает «действительный» аудиосигнал. Вместо этого я как-то слышал некоторые погремушки, не могу описать это.

Тогда я использовал osciloscope, чтобы увидеть выходной сигнал от звуковой карты, и это выглядит следующим образом:

enter image description here

Выход смотрит на меня что-то вроде эффекта Гиббса. Мой вопрос: почему это выглядит так? Я был исключен, чтобы не видеть звон артефакта на osciloscope. Как работает ЦАП со звуковой карты и какие цифровые/аналоговые фильтры выдают этот сигнал?

+4

Поздравляем - вы видите явление [Гиббса] (https://en.wikipedia.org/wiki/Gibbs_phenomenon#The_square_wave_example). Квадратная волна ограничивается диапазоном чуть ниже Nyquist с помощью фильтра восстановления звуковой карты (аналоговый фильтр нижних частот на выходе ЦАП). –

ответ

0

Этот звонок может быть вызван интерполяционным фильтром (фильтрами), используемым любым автоматическим преобразованием частоты дискретизации, выполняемым в аудиодрайвере или аппаратном обеспечении. Избавьтесь от большей части этого эффекта, используя «более мягкий» край или большее время нарастания/спада.