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

StackOverflow https://stackoverflow.com/questions/3705930

Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top