Преобразование WAV в Speex занимает много времени - PullRequest
2 голосов
/ 17 сентября 2009

Я использую API JSpeex для преобразования файла .wav в файл .spx. Все идет отлично при тестировании на рабочем столе; это заняло всего 2 секунды.

Разработчик Android использовал тот же код, но для кодирования этого файла на симуляторе и телефоне потребовалось около 3 минут. Есть ли способ сократить это время для кодирования? Код, используемый для преобразования, выглядит следующим образом:

new JSpeexEnc().encode(new File("source.wav"), new File("dest.spx"));

1 Ответ

1 голос
/ 17 сентября 2009

Сжатие требует времени. Чем лучше сжатие, тем дольше он работает, и Speex является довольно хорошим сжатием.

2 секунды времени настольного компьютера - это абсолютно возраст.

JSpeex - это реализация Java. Используйте собственную реализацию, в идеале вместо этого используйте кодеки платформы.

На телефонах речь лучше всего сжимается с использованием AMR - не обязательно с лучшим качеством / сжатием, но, скорее всего, аппаратно ускоряется, поскольку это формат, используемый GSM. Обычно вы можете получить AMR прямо с микрофона.

Как вы получаете большие файлы WAV на устройство Android? Если это действительно выход микрофона, рассмотрите возможность использования AMR, как описано выше.

Если вам нужен Speex и у вас есть файл wav, рассмотрите возможность отправки его на сервер для сжатия.

...