Самая быстрая и эффективная процедура повышения качества звука в Java

У меня есть необходимость конвертировать аудио сэмплы из 11025 и 22050 в 44100; Я ищу самую быструю и лучшую процедуру конвертации. Я требую, чтобы ответ давался на чистом Java, без необходимости использования внешних подпрограмм или библиотек. Источником является массив коротких значений, представляющих левый и правый каналы, чередующиеся как LRLRLRLR
Я слышал, что преобразование Гаусса - лучшее, но это убийца процессора.

Обновить
Чтобы добавить больше деталей, я хотел бы, чтобы смесь между лучшим и самым быстрым. Ответ даст отличное звучание, подходящее для общения практически в реальном времени.
Обновление 2
Я ищу несколько коротких примеров кода для этого, должны быть ez очки для вас аудио-гуру

2 ответа

Решение

Вы можете (в конечном счете) просто использовать ель после заполнения каждого другого сэмпла нулями - вы увеличиваете выборку на 2 или 4. Это будет достаточно быстро для реального времени. Качество звука будет хорошо для большинства приложений.

Что ж, трудно пересчитать его достаточно медленно, чтобы он не работал в режиме реального времени:-) Одно из лучших и все же быстрых решений состоит в том, чтобы сделать FFT вперед, а затем сделать обратное FFT с любой частотой дискретизации, которая вам нужна.

Вы можете реализовать это самостоятельно или скопировать и вставить любую реализацию FFT.

Это может работать примерно в 100 раз в реальном времени или быстрее, но вы не уверены, что вам нужно в 1000 раз быстрее (в этом случае вы можете использовать линейную или бикубическую интерполяцию):-)

Другие вопросы по тегам