Аудиосэмплы на 8 битов к 16 битам

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

6
задан Nosredna 1 August 2009 в 00:12
поделиться

4 ответа

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

http: //en.wikipedia.org / wiki / Hill_climbing есть дополнительная информация об этом, а в боковой панели есть ссылки на другие алгоритмы, которые могут быть более подходящими.

ИИ подобен алхимии - мы так и не достигли конечной цели, но на этом пути появилось много хороших вещей.

1
ответ дан 17 December 2019 в 04:50
поделиться

Может быть простой подход, использующий периодичность сигналов. Как насчет того, если вы:

  1. Создадите 16-битный сигнал, где старшие байты являются сигналом, а младшие байты равны нулю - назовите его x [n].

  2. Вычислите дискретное преобразование Фурье x [n] = X [w].

  3. Сделать сигнал Y [w] = (dBMag (X [w])> Threshold)? X [w]: 0, где dBMag (k) = 10 * log10 (real (k) ^ 2 + imag (k) ^ 2), а Threshold составляет примерно 40 дБ, исходя из 8 бит, что составляет примерно 48 дБ динамического диапазона, и допускает ~ 1,5 бит шума.

  4. Обратное преобразование Y [w] для получения y [n], вашей новой 16-битной формы волны.

  5. Если y [n] звучит не очень хорошо, дизеринг с очень низким уровень шума.

Примечания:

A. Этот метод работает только в исходных точных периодических сигналах!

B. Шаг 5 можно заменить установкой «0» значения к случайному шуму в Y [w] на шаге 3, вам придется немного поэкспериментировать, чтобы увидеть, что работает лучше.

Это кажется проще (по крайней мере, мне), чем подход к оптимизации. Но усеченный y [n], вероятно, не будет соответствовать вашим исходным сигналам. Я не уверен, насколько важно это ограничение. Мне кажется, что этот подход позволит генерировать хорошие звуковые сигналы.

1
ответ дан 17 December 2019 в 04:50
поделиться

Что ж, я бы ожидал некоторой КИХ-фильтрации (БИХ, если вам действительно нужны циклы обработки, но КИХ может дать лучшие результаты без нестабильности), чтобы убрать шум. Вам придется поиграть с ним, чтобы получить желаемый эффект, но основная проблема заключается в сглаживании резких краев звука, созданного путем сэмплирования его с 8-битным разрешением. Я бы дал широкое рождение центральной частоте звука и сделал фильтр низких частот, а затем послушал, чтобы убедиться, что я не сделал его звучание «плоским» с выбранным мной фильтром.

только то, что вы можете сделать, младшие 8 бит теряются, лучшее, что вы можете сделать, это приблизить его.

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

Для повышения частоты дискретизации, поскольку вы уже используете БПФ, вы можете добавить нули в конец сигнала частотной области и выполнить обратное БПФ. Это полностью сохраняет информацию о частоте и фазе исходного сигнала, хотя та же энергия распространяется на большее количество отсчетов. Если вы сначала сместите его с 8 бит на 16-битные сэмплы, это не будет большой проблемой. Но я обычно использую целочисленный коэффициент усиления перед преобразованием.

Pete

Edit: Комментарии становятся немного длинными, поэтому я перейду к ответу.

Пики на выходе БПФ - это гармонические выбросы, вызванные количественной оценкой. Я склонен думать о них иначе, чем о минимальном уровне шума. Вы можете дизеринг, как кто-то упомянул, и устранить амплитуду гармонических всплесков и сгладить минимальный уровень шума, но вы теряете весь сигнал / шум на плоской части вашего минимального шума. Что касается БПФ. Когда вы интерполируете с использованием этого метода, он сохраняет ту же энергию и распределяется по большему количеству отсчетов, что снижает амплитуду. Поэтому, прежде чем делать обратное, дайте вашему сигналу больше энергии, умножив его на коэффициент усиления.

Являются ли сигналы простыми / сложными синусоидами или у них есть резкие края? т.е. треугольник, прямоугольные волны и т. д. Я предполагаю, что они имеют непрерывность от цикла к циклу, это действительно? Если это так, вы также можете увеличить разрешение БПФ для более точного определения частот, увеличив количество циклов сигнала, подаваемых на БПФ. Если вы можете точно определить используемые частоты, предполагая, что они несколько дискретны, вы сможете полностью воссоздать намеченный сигнал.

Требование усечения с 16-битного на 8-битное значение приведет к результатам, которые не соответствуют исходному источнику . (Таким образом затрудняется поиск оптимального ответа.) Обычно сигнал с фиксированной точкой создается путем попытки «получить наиболее близкое совпадение», что означает округление до ближайшего числа (транкинг - это операция на этаже). Скорее всего, именно так они и были созданы. Добавление 0,5 (в данном случае 0,5 равно 128) и последующее объединение вывода позволит вам получить более точные результаты. Если это' Тогда не беспокойтесь, но это определенно отрицательно скажется на точности.

ОБНОВЛЕНО: Почему? Потому что цель дискретизации сигнала состоит в том, чтобы иметь возможность максимально точно воспроизвести сигнал. Если порог преобразования установлен плохо при выборке, все, что вы ошиблись, - это одна сторона сигнала, а не хорошее распределение и центрирование около нуля. В таких системах вы обычно стараетесь максимально использовать доступный динамический диапазон, особенно если у вас низкое разрешение, такое как 8-битный АЦП.

Версии с ограниченным диапазоном? Если они отфильтрованы на разных частотах, я подозреваю, что это должно позволить вам воспроизводить тот же звук без искажений, когда вы слишком далеко уходите от другого варианта. Вроде как mipmapping в графике. Я подозреваю, что это один и тот же сигнал с разными фильтрами наложения спектров, это может быть полезно при воспроизведении оригинала. Это должен быть один и тот же базовый сигнал с разными свертками.

1
ответ дан 17 December 2019 в 04:50
поделиться

Вы можете поместить существующую 8-битную выборку в старший байт новой 16-битной выборки, а затем использовать байт младшего разряда для линейной интерполяции некоторых новые 16-битные точки данных между каждой исходной 8-битной выборкой.

По сути, это позволит соединить 16-битную прямую линию между каждым из ваших исходных 8-битных отсчетов с использованием нескольких новых отсчетов. Это будет звучать намного тише, чем то, что у вас есть сейчас - внезапный 8-битный скачок между двумя исходными сэмплами.

Вы также можете попробовать применить некоторую фильтрацию нижних частот .

2
ответ дан 17 December 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: