Самая быстрая и эффективная процедура повышения качества звука в Java
У меня есть необходимость конвертировать аудио сэмплы из 11025 и 22050 в 44100; Я ищу самую быструю и лучшую процедуру конвертации. Я требую, чтобы ответ давался на чистом Java, без необходимости использования внешних подпрограмм или библиотек. Источником является массив коротких значений, представляющих левый и правый каналы, чередующиеся как LRLRLRLR
Я слышал, что преобразование Гаусса - лучшее, но это убийца процессора.
Обновить
Чтобы добавить больше деталей, я хотел бы, чтобы смесь между лучшим и самым быстрым. Ответ даст отличное звучание, подходящее для общения практически в реальном времени.
Обновление 2
Я ищу несколько коротких примеров кода для этого, должны быть ez очки для вас аудио-гуру
2 ответа
Вы можете (в конечном счете) просто использовать ель после заполнения каждого другого сэмпла нулями - вы увеличиваете выборку на 2 или 4. Это будет достаточно быстро для реального времени. Качество звука будет хорошо для большинства приложений.
Что ж, трудно пересчитать его достаточно медленно, чтобы он не работал в режиме реального времени:-) Одно из лучших и все же быстрых решений состоит в том, чтобы сделать FFT вперед, а затем сделать обратное FFT с любой частотой дискретизации, которая вам нужна.
Вы можете реализовать это самостоятельно или скопировать и вставить любую реализацию FFT.
Это может работать примерно в 100 раз в реальном времени или быстрее, но вы не уверены, что вам нужно в 1000 раз быстрее (в этом случае вы можете использовать линейную или бикубическую интерполяцию):-)