Как обнаружить потерю генерации транскодированного звука - PullRequest
2 голосов
/ 26 мая 2010

Допустим, у вас есть mp3 96 кбит и вы перекодируете файл в mp3 320 кбит. Как вы можете программно определить исходную скорость передачи или качество? Потеря генерации создается потому, что каждый раз, когда применяется алгоритм с потерями, новая информация будет считаться «ненужной» и отбрасываться. Как алгоритм может использовать это свойство для обнаружения транскодирования звука.

128 кбит / с LAME mp3 перекодируется в 320 кбит / с LAME mp3 (I Feel You, режим Depeche) 10,8 МБ.
альтернативный текст http://blowfish.be/eac/Spectral/Images/mp3_128-320.png

Это изображение было взято из этого сайта . 2 дорожки выше выглядят почти одинаково, но разницы достаточно, чтобы поддержать этот аргумент.

Ответы [ 4 ]

4 голосов
/ 26 мая 2010

Один из способов сделать это - проанализировать спектр сигнала. Я не уверен, что возможно определить точную исходную скорость, но вы можете точно определить разницу между реальным 320 кбит / с mp3 и транскодированным 96 -> 320 кбит / с. MP3 96 кбит / с будет иметь более высокие частоты с частотой 15 кГц или около того. 320 кбит / с должны иметь ненулевое значение в диапазоне 18-20 кГц или даже выше (это зависит от кодера).

2 голосов
/ 26 мая 2010

Если вы выполняете транскодирование путем преобразования исходного MP3 в несжатый формат (например, WAV), а затем перекодирования в MP3 с более высокой скоростью передачи данных, тогда будет невозможно определить битрейт исходного файла, учитывая только преобразованный файл. Я полагаю, что этот процесс может привести к невероятно тонким звуковым артефактам, которые можно было бы проанализировать статистически, но, на мой взгляд, это будет довольно серьезное усилие и вряд ли удастся.

Я не уверен, возможно ли даже повысить скорость MP3 без декодирования и перекодирования, но даже если возможно , процесс все равно не сохранит исходный битрейт в новом файле. Опять же, этот процесс может привести к появлению каких-то странных, измеримых артефактов, которые могут указывать на исходный битрейт, но я сомневаюсь в этом.

Обновление: Теперь, когда я думаю об этом, возможно, можно как-то обнаружить это, хотя я понятия не имею, как это сделать программно. Человеческое ухо может различать вот так (некоторые из них, во всяком случае): я могу четко различить разницу между 128k MP3 и 196k MP3, поэтому различие между 96k и 320k было бы несложно. В формате 96k MP3, который был перекодирован, все равно будут присутствовать все звуковые артефакты в версии 96k (плюс, к сожалению, новые).

Однако я не знаю, как бы вы определили это с помощью кода. Если бы мне пришлось делать эту работу, я бы обучил голубей делать это (и я не шучу об этом).

2 голосов
/ 26 мая 2010

Скорость передачи битов сохраняется в заголовке кадра MPEG . Если вы не сохраните исходный битрейт с чем-то вроде ID3, то нелегкий путь.

РЕДАКТИРОВАТЬ : Обновлен ответ, похоже, я неправильно понял исходный вопрос.

1 голос
/ 26 мая 2010

Различие, которое вы видите на спектральном дисплее, вероятно, в основном из-за ошибки квантования. Если вы максимизируете битовую глубину (разрешение) в аудиофайле с более низкой скоростью передачи битов и сохраняете эту битовую глубину при конвертации (передискретизации), спектральные дисплеи должны соответствовать более близко. Кодер также, вероятно, использовал некоторое сглаживание, чтобы избежать звуковых артефактов из-за ошибок квантования.

Если битовая глубина уже была максимизирована на более низком битрейте, тогда добавленные точки будут очевидны, и вы увидите некоторые зубчатые края в форме сигнала. В противном случае, учитывая достаточную битовую глубину, вы не сможете определить, какие точки были оригинальными, а какие были добавлены. Это особенно верно для более высоких конечных преобразователей с повышением частоты, которые будут использовать кривые для проецирования новых точек вместо простого равномерного нанесения новых точек между существующими.

По определению, частота дискретизации определяет возможный диапазон частот, так что это будет лучшим выбором для определения первоначального битрейта, как предположил Игорь.

...