сравнивая эти два аудио файла - PullRequest
3 голосов
/ 11 марта 2011

У меня есть два аудиофайла, один - оригинальный файл, а другой - я испортил его, изменив некоторые биты, как сравнить качество этих двух файлов, есть ли какой-нибудь алгоритм или программное обеспечение, где я могу сравнить качество двух файлов ,

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Одним физическим измерением качества звука является SNR: http://en.wikipedia.org/wiki/Signal-to-noise_ratio. Я не знаю ни одной библиотеки, которая сделает это за вас, но это не так сложно сделать самостоятельно:

  • рассчитать шум: noise [n] = манипулировать [n] - оригинал [n], n = индекс выборки
  • вычисляет мощность "шума" и "оригинала": p_noise [n] = noise [n] * noise [n], ...
  • получить SNR, разделив значения = SNR [n] = p_original [n] / p_noise [n]

Возможно, вы захотите рассчитать среднее (!) SNR ... Надеюсь, вы сами сможете понять, как это сделать. Это должно поставить вас на правильный путь.

1 голос
/ 11 марта 2011

"any algorithm or an software": Вы хотите программировать или нет?

  • Если вы хотите, чтобы программное обеспечение делало это для вас: stackoverflow не может вам помочь

  • Если вы хотите программировать (хотя бы вызывать функции в библиотеке), это другая история:

Есть некоторые библиотеки, которые могут сделать это, в частности, для преобразования аудио из сжатого в формат WAVEFORM, в первую очередь (выбор библиотеки зависит от того, в каком формате находится ваш звук). Или ваше аудио уже в формате сигнала? ты не сказал. Если у вас есть аудио в формате сигнала (необработанный звук, например, * 16-битный моно со знаком на 22 кГц), вы можете легко запрограммировать его самостоятельно: поскольку единственное повреждение, которое вы нанесли своему звуку, это бит-флип, вы можете выполнять итерации по ним и просто суммировать различия вверх: вы должны принять во внимание формат, в котором находится форма волны: вы не можете сравнивать битовый уровень (потому что каждый бит имеет различное значение); если у вас есть * подписанное 16-битное аудио, вы должны использовать в C тип int, чтобы A) сравнение было подписано и B) разница не переполнялась.

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