Я пытаюсь захватить сигнал на MacBookPro (под управлением MacOS Catalina 10.15.3) с помощью внешней звуковой карты Sound Blaster Omni Surround 5.1 (SB1560).
Звуковая карта способна к 48 кСа / с и выборка 96 кСа / с, а также несколько лет go Я использовал эту звуковую карту для успешной выборки сигналов> 22,1 кГц, используя частоту дискретизации 96 кСа / с. Таким образом, звуковая карта, похоже, не имеет внутренних фильтров нижних частот, которые препятствуют дискретизации сигналов> 22,1 кГц.
Если я использую PortAudio с привязкой Python:
import sounddevice as sd
fs = 48000
x = sd.rec(fs, samplerate=fs, blocking=True, channels=1)
чтобы получить сигнал x
, все хорошо. Я могу захватывать сигналы до 24 кГц без каких-либо проблем.
Однако, если я установлю fs = 96000
, записанные сигналы показывают сильный фильтр нижних частот около 22 кГц, и я не могу захватить любой сигнал за пределами 22 кГц.
То же самое применяется, если я использую Audacity с CoreAudio напрямую (без PortAudio между ними) со скоростью 48 кСа / с и 96 кСа / с. На 48 кСа / с, нет низких частот и может дискретизировать сигналы до 24 кГц. При 96 кСа / с низкочастотный сигнал виден и не способен захватывать сигналы выше 22 кГц.
Из вышесказанного я заключаю, что фильтрация нижних частот не происходит в привязках PortAudio или sounddevice
Python , но на уровне ОС. Поскольку я использовал SB1560 раньше (на более старой версии OS X) для захвата высокочастотных сигналов, я уверен, что фильтр отсутствует в звуковой карте. Так что он должен быть где-то в CoreAudio и представлен в последней версии OS X.
Более того, я могу установить любую частоту дискретизации, и CoreAudio, похоже, с радостью предоставляет мне данные с такой частотой дискретизации, хотя SB1560 не поддерживать эту скорость. Таким образом, преобразование скорости должно происходить в CoreAudio, и, возможно, именно здесь применяется фильтр.
Я ожидаю, что, поскольку мой SB1560 поддерживает выборку 96 кСа / с, CoreAudio должен позволять ему производить выборку с такой скоростью, а не делать скорость преобразование, но это, похоже, не так. Как отключить преобразование скорости и / или фильтр нижних частот и заставить CoreAudio выдавать необработанные выборочные данные 96 кСа / с из SB1560?