Я реализовал бы пустой безопасный компаратор. Там может быть реализация, но это столь просто для реализации, что я всегда прокручивал свое собственное.
Примечание: Ваш компаратор выше, если оба имена являются пустыми, даже не сравнит поля значения. Я не думаю, что это - то, что Вы хотите.
я реализовал бы это с чем-то как следующее:
// primarily by name, secondarily by value; null-safe; case-insensitive
public int compareTo(final Metadata other) {
if (other == null) {
throw new NullPointerException();
}
int result = nullSafeStringComparator(this.name, other.name);
if (result != 0) {
return result;
}
return nullSafeStringComparator(this.value, other.value);
}
public static int nullSafeStringComparator(final String one, final String two) {
if (one == null ^ two == null) {
return (one == null) ? -1 : 1;
}
if (one == null && two == null) {
return 0;
}
return one.compareToIgnoreCase(two);
}
РЕДАКТИРОВАНИЕ: Фиксированные опечатки в примере кода. Это - то, что я получаю для того, чтобы не протестировать его сначала!
РЕДАКТИРОВАНИЕ: Продвинутый nullSafeStringComparator к помехам.
Библиотека волн Python позволит вам импортировать аудио. После этого вы можете использовать numpy для получения БПФ аудио.
Затем matplotlib создает очень хорошие диаграммы и графики - абсолютно сопоставимые с MATLAB.
Это старый как грязь, но эта статья , вероятно, поможет вам почти в точности решить проблему, которую вы описываете (статья на Python, конечно).
Загрузить файлы WAV легко с помощью audiolab :
from audiolab import wavread
signal, fs, enc = wavread('test.wav')
или для чтения любого общего аудиоформата и преобразования в WAV:
from audiolab import Sndfile
sound_file = Sndfile('test.w64', 'r')
signal = wave_file.read_frames(wave_file.nframes)
Спектрограмма встроена в PyLab:
from pylab import *
specgram(signal)
В частности, это часть matplotlib . Вот лучший пример.