Перейти к содержанию
    

Сдвиг частотного спектра с помощью МДКП (MDCT). Прошу помочь.

Задача: передать аудиосигнал по аналоговому каналу, который плохо проводит сигналы аудиочастот. Для этого входной аудиосигнал преобразовать в спектр, изменить этот спектр (сдвинуть и сжать/растянуть) и затем обратно преобразовать в аудио. На удаленном конце сделать обратную процедуру.

 

Решено было использовать Модифицированное Дискретное Косинусное Преобразование, т.к. оно позволяет склеивать соседние куски при обработке.

 

Все это делается на микроконтроллете STM32F103RET6. Есть DSP-библиотека от ST, из которой позаимствована функция БПФ (на 64 отсчета). В интернете так же нашел реализацию МДКП через БПФ. :smile3046:

 

Работает это так. АЦП непрерывно молотит данные в буфер длиной 4N. Когда половина заполняется - возникает прерываение и первые 2N отсчетов поступают в функцию МДКП (в это время АЦП заполняет вторую часть буфера). Функция МДКП формирует массив длиной 4N: первая половина - вход АЦП от предыдущего(!) вызова функции; вторая половина - то что только что получили из буфера АЦП (оно же сохраняется для следующего вызова МДКП). Затем накладывается окно Ханна (т.е. просто полпериода синуса).

 

Затем собственно само МДКП: сдвиг на 1/4; преротация (подготовка к БПФ; из 4N отсчетов получаем N комплексных числа); само БПФ; постротация; сортировка.

 

Потом, по идее, должно идти преотразование спектра. Но пока тут ничего не делаю.

 

Затем оМДКП (все аналогично МДКП; на выходе имеем 4N отсчетов).

 

На эти выходные 4N значений опять накладываем такое же окно, и к первой половине прибавляем вторую половину, но от предыдущего вызова функции. А вторую половину, соответственно, сохраняем для следующего вызова.

 

Я проверял все это на синусоидальном входном сигнале.

 

Проблема заключается в том, что алгоритм нормально работает только когда во входных (для МДКП) 2N отсчетах помещается целое количество периодов входного сигнала. Как быть? Я знаю, что МДКП применяется, например в OGG Vorbis, и вроде бы даже в простом MP3.

 

Уважаемые форумчане, прошу подсказать: :cranky:

 

1. Как работает МДКП, когда на входе произвольный сигнал? Правильно ли я использую наложение окон?

 

2. Можно ли добитсья поставленной цели другим путем? Нужно перевести в частотную область, там преобразовать определенным образом, и потом перевести обратно во временную. При этом чтобы голос был нормально слышен.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может быть надо просто сдвинуть спектр в ту область, которая хорошо передаётся по каналу связи. Затем передать сигнал. И после этого сдвинуть обратно. Сделать это можно очень просто во временной области, при этом не используя ни МДКП, ни БПФ, ни какое-либо другое подобное преобразование.

Не понятно для чего нужно играть со спектром - сжимать и разжимать его.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

связист, вы не могли бы сказать, как можно сдвинуть спектр во временной области? Буду благодарен. Не очень разбираюсь в ЦОСе.

 

 

Сжимать/разжимать спектр предполагается для того, чтобы как можно лучше "вписаться" в характеристики линии передачи. Одновременно со сдвигом спектра предполагается и увеличение частоты семплирования на удаленном конце.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

связист, вы не могли бы сказать, как можно сдвинуть спектр во временной области? Буду благодарен. Не очень разбираюсь в ЦОСе.

 

 

Сжимать/разжимать спектр предполагается для того, чтобы как можно лучше "вписаться" в характеристики линии передачи. Одновременно со сдвигом спектра предполагается и увеличение частоты семплирования на удаленном конце.

 

Сигнал сдвигается по частоте при помощи модулятора. Читай здесь

Изменено пользователем bahurin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Читай здесь

 

Помойму здесь написано слишком запутанно, хотя, наверное, достаточно полно и проще, наверное, суть явления объяснить не получится.

Если сказать то же самое в двух словах, то надо сделать так:

1. получить из исходного сигнала аналитический сигнал;

2. умножить аналитический сигнал на комплексную синусоиду нужной частоты (это и будет собственно сдвиг частоты);

3. получить из сдвинутого аналитического сигнала вещественный сигнал (отбросить мнимую часть).

Не знаю стало ли понятнее после таких объяснений, но в любом случае Вам надо копать в сторону ЦОС если хотите дальше написать программу и чтобы она при этом заработало.

 

Вот кстати в соседней ветке такую же тему обсуждают.

http://electronix.ru/forum/index.php?showtopic=92947

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ZeroQu смотрите на рисунок.

Материал взять отсюда http://www.dsplib.ru/content/hilbertquad/hilbertquad.html

Тут главное правильно подобрать ФНЧ с хорошим подавлением не нужной полосы. И с нужными вам параметрами.

post-41680-1312467547_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задача: передать аудиосигнал по аналоговому каналу, который плохо проводит сигналы аудиочастот. Для этого входной аудиосигнал преобразовать в спектр, изменить этот спектр (сдвинуть и сжать/растянуть) и затем обратно преобразовать в аудио. На удаленном конце сделать обратную процедуру.

Автор нигде не указал, что не хватает полосы пропускания, значит обычная амплитудная модуляция вполне подойдет и можно сэкономить контроллер. А использование одной боковой полосы - это лишь экономия полосы в 2 раза. Неужели такая малость все приведет в норму?

А если полосы пропускания нет, то и сдвигать некуда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...