Умножение выборки с частично задержанной версией (декодирование факсимильной модуляции V.21) - PullRequest
0 голосов
/ 23 июня 2019

Из любопытства я пишу программу на Python, которая берет WAV-файл, который представляет собой запись сигнала рукопожатия от факсимильного аппарата, и пытается декодировать биты в модулированном V.21 сообщении 300 бит / с. Я знаю, что он содержит такие вещи, как разрешение изображения и размер страницы.

Я знаю, что кодирование представляет собой синусоидальную волну с частотой 1650 Гц для обозначения «один» и 1850 Гц для обозначения «ноль». Чтобы выяснить в каждой точке, какая частота используется, я нашел трюк в книге , где вы умножаете сигнал на версию с задержкой на 90 °.

enter image description here

Мой WAV-файл сэмплируется на частоте 8000 Гц. Я смог частично декодировать, имея задержку в 1 сэмпл, но очевидно, что необходимая задержка - это не только один сэмпл, а дробный. Несмотря на то, что я, похоже, правильно понял большую часть начала сообщения, некоторые более поздние данные, казалось, не имели смысла, и я начал думать, что это, вероятно, потому, что я не размножался с правильно отсроченной выборкой.

Несмотря на то, что мне удалось найти некоторую математику, описывающую, как справляться с дробной задержкой, которая не является точно одной выборкой, я нашел объяснение и математику трудными для понимания, не имея фона обработки сигналов. Поэтому мне интересно, есть ли в какой-нибудь библиотеке обработки сигналов Python способ отсрочки сэмпла на небольшую величину или даже умножение сигнала непосредственно на саму задержанную версию?

...