Conversion from 8000 to 16000 sample rate

shadow7256
Уже с Приветом
Posts: 9392
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Conversion from 8000 to 16000 sample rate

Post by shadow7256 »

Есть аналоговый сигнал, оцифрованный с частотой 8 тысяч раз в секунде. Точнее говоря есть уже цифра. Существуют ли алгоритмы, которые позволяют увеличить частоту до 16 тысяч семплов в секунду?

То есть грубо говоря есть поток данных с битрейтом 64К в секунду (8000 семплов, 8 бит на каждый семпл). Нужно увеличить семпл рейт до 16000. Можно ли такое сделать?
User avatar
flip_flop
Уже с Приветом
Posts: 4379
Joined: 20 Jun 2001 09:01

Post by flip_flop »

Donadio, M., "Cascaded Integrator-Comb (CIC) Filter Introduction," http://www.dspguru.com/info/tutor/cic.htm
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Conversion from 8000 to 16000 sample rate

Post by Sabina »

shadow7256 wrote:Есть аналоговый сигнал, оцифрованный с частотой 8 тысяч раз в секунде. Точнее говоря есть уже цифра. Существуют ли алгоритмы, которые позволяют увеличить частоту до 16 тысяч семплов в секунду?

То есть грубо говоря есть поток данных с битрейтом 64К в секунду (8000 семплов, 8 бит на каждый семпл). Нужно увеличить семпл рейт до 16000. Можно ли такое сделать?


На случай, если речь идет об аудио для видео, мне попался OPENVIP с sourceforge (работает и под Юниксом и под Виндами) . Вот это описание похоже на то, что вам нужно:

http://openvip.sourceforge.net/userdoc/ch02s02.html

Resample
Changes the sampling frequency of input audio.

GUI dialog description
The dialog allows to choose new sampling frequency (in Hz) and the type of interpolation used during resampling (nearest neighbor is quick, while linear interpolation reduces the danger of alias effects).


Cабина

PS. Обратите внимание на эту фразу while linear interpolation reduces the danger of alias effects. Может имеет смысл написать просто "connecting the dots" программку, а не мудрить со всеми этими сложными алгоритмами?
Найквист все-таки знал, что говорил
:mrgreen:
shadow7256
Уже с Приветом
Posts: 9392
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Post by shadow7256 »

Сабина,

Просто соединить точки не получится все же. Если бы все так было просто, то не существовало бы разных методов, которые все же пытаются сделать то, что мне надо :cry:

Ведь здесь идет речь чисто о догадке. Есть два числа, 0 и 255 допустим. Тебе говорят, что между этими числами должно быть еще одно, а вот какое - догадайся. Если сказать , что будет 127, то может быть ты и угадаешь, но вероятность этого сами видите насколько мала. А если не угадаешь, то внесешь в сигнал помехи, которые уж точно не нужны. Просто интересно насколько существующие методы могут довольно точно предсказать какое значение должно идти после какого. Если методы неэффективны, то ну их нафиг :mrgreen:
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

shadow7256 wrote:Просто соединить точки не получится все же. Если бы все так было просто, то не существовало бы разных методов, которые все же пытаются сделать то, что мне надо :cry:


Вот именно вопрос в том для чего вы уменьшаете шаг дискретизации? Ведь там же ясно говорится, что линейная интерполяция (соединить две соседние точки и взять амплитуду посередине) уменьшает вероятность возникновения эффекта зеркальных частот.
То есть может получится, что погонитесь за качеством, а получите наоборот.

Сабина
User avatar
flip_flop
Уже с Приветом
Posts: 4379
Joined: 20 Jun 2001 09:01

Post by flip_flop »

Сабина,
Вы рассмотрели два простейших варианта:
1) - взять ближайшую точку (слева или справа) - nearest neighbor
2) - линейная интерполяция
Есть тысяча и один способ повысить аккуратность интерполяции как во временной так и в частотной области, как для целочисленного коеффициента преобразования рейта так и для произвольного дробного. Для целочисленного преобразованиая равного двум, простейший метод состоит в системе состоящей из трех блоков:
1 - повторитель сигнала (analog/[digital-to-analog] discrete time signal) с более высоким рейтом (sampling rate expander)
2 - низкочастотный фильтр с граничной частотой пи/2, с коеффициентом усиления 2 (FIR filter)
3 - оцифровка с более высоким рейтом
Если исходная частота оцифровки существенно выше частоты Найквиста для исходного аналогового сигнала (oversampled system) - линейная интерполяция вполне подойдет, поскольку сам сигнал не будет меняться быстро на промежутке интерполяции.
Другой подход (чисто программный, без оглядки на реализацию) состоит в непосредственной интерполяции во временной области - наиболее простой и еффективный метод - испольование Эрмитовых кубических изогеометрических сплайнов.
Hamster
Уже с Приветом
Posts: 11475
Joined: 20 Nov 2000 10:01
Location: Escondido, CA

Post by Hamster »

Еще можно пропустить сигнал через DFT, добавить столько же нулей в высоких частотах и пропустить через iDFT.
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

flip_flop wrote:Сабина,
Вы рассмотрели два простейших варианта:
Есть тысяча и один способ повысить аккуратность интерполяции как во временной так и в частотной области, как для целочисленного коеффициента преобразования рейта так и для произвольного дробного....


спасибо, что просветили :)

сабина

Return to “Вопросы и новости IT”