реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Передискретизация звука методом интерполяции, подскажите качественный алгоритм
des00
сообщение Nov 18 2011, 10:22
Сообщение #31


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Eger @ Nov 18 2011, 04:12) *
скажите мне пожалуйста, не флуда для а пользы ради.
Вот Вы хотите увеличить частоту дискретизации в 160 раз. При этом уровень сигнала уменьшается в 160 раз, т.е. 16 битный сигнал становится фактически 9 битным. Неужели качество звука не пострадает?

а что вам мешает его усилить ?


--------------------
Go to the top of the page
 
+Quote Post
Fast
сообщение Nov 18 2011, 10:26
Сообщение #32


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839



линейность ФЧХ принципиальна ?

Цитата(soolo @ Nov 18 2011, 12:48) *
Честно говоря, не понимаю смысла выкладывать тестовый файл. Ведь реально интерполятор будет работать с обычными звуковыми файлами (а там спектр сигнала вплоть до 20Гц-20кГц). Но файлом поделюсь. http://dl.dropbox.com/u/23094927/Test%20si...2016-bit%29.wav
при таком сигнале либо БИХ, либо полифазник из двух параллельных КИХ-ФНЧ в несколько сотен отсчетов
больше никак не достичь хорошей расфильтровки вблизи частоты Найквиста, если не хотите FFT
Go to the top of the page
 
+Quote Post
soolo
сообщение Nov 18 2011, 12:14
Сообщение #33





Группа: Участник
Сообщений: 14
Регистрация: 17-11-11
Пользователь №: 68 362



Ну вот и свершилось!
Lanczos и степень полинома 7 дали идеальный по параметрам результат.
Единственное, на слух всё-таки есть неточности в преобразовании высоких частот

Всем большое спасибо за ответы и советы. Узнал из этой темы пару фишек на будущее = )
Go to the top of the page
 
+Quote Post
thermit
сообщение Nov 18 2011, 12:25
Сообщение #34


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
soolo:
Lanczos и степень полинома 7 дали идеальный по параметрам результат.



Есть подозрение, что оптимальный чебышевский фильтр вместо ланцоша даст еще более идеальный результат.
Go to the top of the page
 
+Quote Post
Fast
сообщение Nov 18 2011, 17:37
Сообщение #35


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839



да как-то не верю, что все хорошо и звона нет
soolo, не хочу показаться назойливым, а можно теперь файл после Ланцоша 48к прикрепить ?
в последний разок
Go to the top of the page
 
+Quote Post
alex_os
сообщение Nov 18 2011, 18:15
Сообщение #36


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(Самурай @ Nov 17 2011, 21:45) *
Я не совсем понимаю, а что мешает Вам реализовать честный интерполятор в 48/44.1 = 160/147 раз? Честно повышаете частоту дискретизации в 160 раз, честно фильтруете наложения (тем самым полифазным фильтром, про который тут дискуссия возникла), потом честно оставляете только каждый 147-ой отсчет, остальное честно выкидываете нафигsm.gif. Тем более что Вы сами говорили, что особых ограничений на ресурсы у Вас нет. Да и какие нафиг нужны ресурсы, когда все частоты "детские"??? Для справки, 160 = 2*2*2*2*2*5, т.е. частоту можно повышать постепенно, после каждого шага фильтруете наложения, первый фильтр навскидку 100...140-ого порядка (для подавления наложений в 100...120дБ), второй фильтр примерно 15-ый порядок, остальные фильтры на уровне нуля. Реализация фильтра 100-ого порядка на частоте 44кГц (та самая полифазность) требует 5-10MIPS, о чем тут вообще говорить?


Зачем постепенно повышать частоту дискретизации??. Если оптимизировать эту структуру и на нули не умножать и считать только те выходные отсчеты, которые нужны, то получится FIR в который данные заливаются с частотой 48 кГц а выходные данные считаются с частотой 44кГц. А коэффициенты фильтра каждый раз берутся из здоровенной таблицы. А длина фильтра вряд ли будет больше 20 sm.gif.


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
soolo
сообщение Nov 18 2011, 20:02
Сообщение #37





Группа: Участник
Сообщений: 14
Регистрация: 17-11-11
Пользователь №: 68 362



Цитата(Fast @ Nov 18 2011, 20:37) *
да как-то не верю, что все хорошо и звона нет
soolo, не хочу показаться назойливым, а можно теперь файл после Ланцоша 48к прикрепить ?
в последний разок

Остался на работе. В понедельник обязательно поделюсь
Go to the top of the page
 
+Quote Post
soolo
сообщение Nov 21 2011, 06:26
Сообщение #38





Группа: Участник
Сообщений: 14
Регистрация: 17-11-11
Пользователь №: 68 362



Цитата(soolo @ Nov 18 2011, 23:02) *
Остался на работе. В понедельник обязательно поделюсь

Как и обещал http://dl.dropbox.com/u/23094927/L7_44_48.wav

Сообщение отредактировал soolo - Nov 21 2011, 07:18
Go to the top of the page
 
+Quote Post
Fast
сообщение Nov 21 2011, 07:08
Сообщение #39


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839



Цитата(soolo @ Nov 21 2011, 10:26) *
после Ланзоша уровень уменьшился на 3dB

а теперь посмотрите спектрограмму и мгновенный фурье-спектр в р-не 1млн отсчета (редактор CoolEdit 2.0)
скрины bmp http://depositfiles.com/files/gkpvj1uji

файл 44100.bmp - исходный
файл 48000ce.bmp - resampling с помощью CoolEdit
файл 48000lanczos.bmp - ваш Ланцош, с усилением в 3дБ

p.s.
т.е. если непонятно, то скажу вкратце - качество ужасно (особенно это заметно в области линейной прозвонки р-н 870тыс. отсчета, см. выше 20кГц)
Go to the top of the page
 
+Quote Post
soolo
сообщение Nov 21 2011, 07:35
Сообщение #40





Группа: Участник
Сообщений: 14
Регистрация: 17-11-11
Пользователь №: 68 362



Это не Ланцош понизил уровень, это я не мог записывать сигнал с той же амплитудой - так уж получилось =)
Результат не так и ужасен, особенно если учесть результаты других алгоритмов.
Шумы на уровне -85 дБ нас устраивают
Зато алгоритм на 100% гибкий и позволяет преобразовывать в любую частоту без увеличения вычислительной нагрузки. (Мы ушли от алгоритма "сначала увеличиваем частоту, затем уменьшаем" идёт только прямое преобразование.)
Вот результаты тестов

Неравномерность АЧХ (в диапазоне 40 Гц - 15 кГц), дБ +0.02, -0.04 Отлично
Уровень шума, дБ (А) -95.2 Отлично
Динамические диапазон, дБ (А) 94.4 Очень хорошо
Гармонические искажения, % 0.061 Средне
Гармонические искажения + шум, дБ(A) -60.6 Плохо
Интермодуляционные искажения + шум, % 0.033 Хорошо
Взаимопроникновение каналов, дБ -97.9 Отлично
Интермодуляции на 10 кГц, % 0.048 Хорошо
Общая оценка Очень хорошо

Боюсь что следующая ступенька качества возможна только с помощью Фурье

Сообщение отредактировал soolo - Nov 21 2011, 07:41
Go to the top of the page
 
+Quote Post
Fast
сообщение Nov 21 2011, 07:50
Сообщение #41


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839



попробуйте протестировать не в среднем по больнице, а на интервале 836-994тыс. отсчеты
хотя если устраивает - вопросов нет
Go to the top of the page
 
+Quote Post
soolo
сообщение Nov 21 2011, 08:10
Сообщение #42





Группа: Участник
Сообщений: 14
Регистрация: 17-11-11
Пользователь №: 68 362



Цитата(Fast @ Nov 21 2011, 10:50) *
попробуйте протестировать не в среднем по больнице, а на интервале 836-994тыс. отсчеты
хотя если устраивает - вопросов нет

На те отсчёты фильтра вообще нужно кинуть =) Такого сигнала в принципе не было, это паразиты
Я же не говорю, что всё супер, я говорю, что в принципе неплохо, особенно учитывая все ограничения, которые стояли перед нами.
Go to the top of the page
 
+Quote Post
Fast
сообщение Nov 21 2011, 08:10
Сообщение #43


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839



для интереса, т.е. чистоты эксперимента, попробуйте вот этот ФНЧ для 2x up-samp перед Lanczos
в нем 256 отводов, обе части симметричны, потребуется 128 умножений

Код
const int BL = 256;
const int16_T B[256] = {
       11,     22,      9,    -18,    -15,     14,     19,    -12,    -22,
        9,     25,     -7,    -27,      5,     29,     -4,    -31,      2,
       33,      0,    -35,     -1,     37,      3,    -40,     -5,     42,
        6,    -44,     -8,     47,     10,    -49,    -12,     52,     14,
      -54,    -16,     57,     18,    -60,    -20,     63,     22,    -66,
      -25,     69,     27,    -72,    -30,     76,     33,    -80,    -36,
       83,     39,    -87,    -43,     91,     46,    -96,    -50,    100,
       54,   -105,    -58,    110,     63,   -115,    -67,    121,     73,
     -126,    -78,    133,     84,   -139,    -90,    146,     97,   -154,
     -104,    162,    112,   -171,   -121,    180,    130,   -191,   -141,
      202,    152,   -214,   -165,    228,    179,   -243,   -195,    261,
      213,   -280,   -233,    302,    257,   -328,   -285,    359,    318,
     -395,   -358,    440,    407,   -496,   -470,    567,    553,   -664,
     -666,    800,    833,  -1008,  -1101,   1367,   1606,  -2135,  -2919,
     4946,  14721,  14721,   4946,  -2919,  -2135,   1606,   1367,  -1101,
    -1008,    833,    800,   -666,   -664,    553,    567,   -470,   -496,
      407,    440,   -358,   -395,    318,    359,   -285,   -328,    257,
      302,   -233,   -280,    213,    261,   -195,   -243,    179,    228,
     -165,   -214,    152,    202,   -141,   -191,    130,    180,   -121,
     -171,    112,    162,   -104,   -154,     97,    146,    -90,   -139,
       84,    133,    -78,   -126,     73,    121,    -67,   -115,     63,
      110,    -58,   -105,     54,    100,    -50,    -96,     46,     91,
      -43,    -87,     39,     83,    -36,    -80,     33,     76,    -30,
      -72,     27,     69,    -25,    -66,     22,     63,    -20,    -60,
       18,     57,    -16,    -54,     14,     52,    -12,    -49,     10,
       47,     -8,    -44,      6,     42,     -5,    -40,      3,     37,
       -1,    -35,      0,     33,      2,    -31,     -4,     29,      5,
      -27,     -7,     25,      9,    -22,    -12,     19,     14,    -15,
      -18,      9,     22,     11
};
\
и глянем разницу в картинках
Go to the top of the page
 
+Quote Post
thermit
сообщение Nov 21 2011, 08:17
Сообщение #44


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
soolo:
Зато алгоритм на 100% гибкий и позволяет преобразовывать в любую частоту без увеличения вычислительной нагрузки.
Мы ушли от алгоритма "сначала увеличиваем частоту, затем уменьшаем" идёт только прямое преобразование.



Цитата
Боюсь что следующая ступенька качества возможна только с помощью Фурье


Да уш... ©

Go to the top of the page
 
+Quote Post
petrov
сообщение Nov 21 2011, 08:30
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(thermit @ Nov 21 2011, 12:17) *
Да уш... ©


Непонятно зачем вообще вопрос задают, сами уже всё знают...
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01502 секунд с 7
ELECTRONIX ©2004-2016