Лучшие алгоритмы / форматы сжатия голоса - PullRequest
7 голосов
/ 03 октября 2008

У нас есть сырое голосовое аудио, которое нам нужно распространить через Интернет. Нам нужно достойное качество, но оно не должно быть музыкального качества. Нашей главной заботой является удобство использования потребителем (то есть, что и где он может воспроизвести) и размер загрузки. Мой опыт показал, что mp3-файлы не дают лучших компрессионных чисел для голосового аудио, но я не знаю, какие есть лучшие альтернативы. В конечном итоге мы хотели бы автоматизировать процесс конверсии, чтобы позволить потребителю выбрать желаемый уровень качества и размера.

Ответы [ 6 ]

5 голосов
/ 03 октября 2008

Начните здесь.

Как вы правильно заметили, сжатие голоса отличается от обычного сжатия звука. Вы найдете много кодеков, предназначенных для приложений телефонии, от PCM и ADPCM до более поздних кодировок на основе пакетов, таких как CELP, используемых в сотовых сетях GSM.

Тем не менее, голосовое кодирование VOIP немного отличается от кодирования из-за используемого носителя. Вы можете найти хорошую бесплатную библиотеку (с неограниченным и открытым исходным кодом (BSD)) для кодирования / декодирования речи в программной библиотеке Speex .

Опять же, то, что вы выберете, зависит от речи, которую вы кодируете, и среды передачи. Также обратите внимание, что во многих библиотеках есть несколько алгоритмов, которые они могут использовать в зависимости от обстоятельств, а некоторые даже переключаются на лету в зависимости от состояния звука и сети.

Чтобы получить больше помощи, сузьте свой вопрос.

-Adam

4 голосов
/ 20 августа 2014

Вы должны попробовать Opus . Пример командной строки сжатия:

ffmpeg -i x.wav -b:a 32k x.opus
1 голос
/ 03 октября 2008

Наиболее часто используемые форматы сжатия, используемые в живом голосовом аудио (например, VoIP-телефония), представляют собой μ-Law (mu-Law / u-Law используется в США) и a-Law (используются в Европе и т. Д.), Которые в отличие от несжатого PCM, не поддерживает столь широкий диапазон частот (меньший диапазон возможных значений игнорирует звуки вне необходимого спектра и требует меньше места для хранения).

Для удобства использования проще всего использовать сжатие mpeg (mp2 / 3/4) для потоковой передачи на стандартные медиапроигрыватели, так как алгоритмы доступны и обычно довольно быстры, и почти все медиаплееры должны его поддерживать, но для голоса вы можете попытайтесь указать более низкую скорость передачи битов или сделайте ваше преобразование из файла низкого качества в первую очередь (WAV может быть с несколькими частотами дискретизации, а голосу требуется гораздо более низкая частота дискретизации, чем музыке или эффектам, это в основном похоже на частоту кадров в видео ). В качестве альтернативы вы можете использовать Real Media, WMA или другие проприетарные форматы, но это ограничит удобство использования, поскольку пользователям потребуется специальное стороннее программное обеспечение для воспроизведения, хотя WMA имеет отличную степень сжатия, а также параметры сжатия, характерные для голосового звука.

0 голосов
/ 23 мая 2009

Попробуйте speex ... не обременены патентами, хорошая производительность как в том же, так и в отношении процессора. Мне повезло, используя его на iPhone.

0 голосов
/ 03 октября 2008

Я думаю AMR - один из лучших речевых кодеков. Я использовал его около года назад, и я помню, что качество было очень хорошим, а размеры были довольно маленькими.

Один недостаток, особенно в вашем случае, заключается в том, что, насколько я знаю, он не поддерживается широким спектром медиаплееров. QuickTime и RealPlayer - это два файла, которые я знаю для воспроизведения файлов .amr.

0 голосов
/ 03 октября 2008

Предполагая, что ваши пользователи будут использовать Windows, есть кодек сжатия речи WMA, который вы можете использовать с Windows Media Encoder SDK. В противном случае вы можете использовать ACM, чтобы использовать что-то вроде G723 / G728, ADPCM, mu-law или a-law, некоторые из которых устанавливаются как стандартные в Windows XP и выше. Они могут быть упакованы в файлы WAV. Вам нужно будет немного поэкспериментировать, чтобы найти правильный битрейт / качество (вероятно, не беспокойтесь о mu-law или a-law). С помощью голосовых данных вы можете получить довольно низкую частоту дискретизации - например, 16000 или 8000, так как в человеческом голосе не намного больше 4 кГц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...