Самая быстрая и эффективная процедура подъема для аудио в Java
-
02-10-2019 - |
Вопрос
Мне нужно преобразовать образцы звука с 11025 и 22050 в 44100; Я ищу самую быструю и лучшую процедуру преобразования. Я требую, чтобы ответ был дан в чистой Java без необходимости во внешних процедурах или библиотеках. Источник представляет собой массив коротких значений, представляющих левые и правые каналы, чередующиеся как SO LRLRLRRR
Я слышал, что гауссовая трансформация является лучшей, но это убийца процессора.
Обновлять
Чтобы добавить больше деталей, я хотел бы смесь между лучшими и быстрыми. Ответ даст отличный звук звук, подходящий для общения в реальном времени.
Обновление 2
Я ищу несколько коротких примеров кода для этого, должен быть точками EZ для вас Audio Guru's
Решение
Вы можете (в конечном итоге) просто использовать FIR после заполнения каждого другого образца 0S - вы поднимаетесь на 2 или 4. Это будет достаточно быстро для реального времени. Качество звука будет в порядке для большинства приложений.
Другие советы
Что ж, трудно перебрать это достаточно медленно, чтобы это не реальное время :-) Одним из лучших и все еще быстрых решений является продвижение БПФ, а затем сделать обратный FFT с любой скоростью дискретизации.
Вы можете реализовать это самостоятельно или копировать и вставить любую реализацию FFT.
Это может работать как 100-кратное реальное время или быстрее, не уверен, что вам нужно в 1000 раз быстрее (в этом случае вы можете пойти на линейную или бикубическую интерполяцию) :-)