Live data from Hacker News

Zimtohrli: A New Psychoacoustic Perceptual Metric for Audio Compression

github.com

11–20 of 28 posts

Re: Zimtohrli: A New Psychoacoustic Perceptual Metric for Audio Compression

#12

I looked through the deeper explanation and found this interesting: “Performing a simple experiment where we have 5 separate components 1000 Hz sine probe 57 dB SPL 750 Hz sine masker A at 71dB SPL 800 Hz sine masker B at 71 dB SPL 850 Hz sine masker C at 67 dB SPL 900 Hz sine masker D at 65 dB SPL I record the following data When playing probe + masker A through D individually I experience the probe approximately as…

>It's awfully difficult to say that there is equivalent perceived SPL for different frequency domains, even as a trained listener.

The snippet you quote doesn't claim comparing intensities at different frequencies.

He is comparing only perceived 1kHz intensities, (in the presence or absence of maskers at other frequencies, whose intensity is not subjectively being scored)

Re: Zimtohrli: A New Psychoacoustic Perceptual Metric for Audio Compression

#13
post #8

This says it works on just-noticeable-differences. Would this work well if the quality of the compressed audio is very poor? Could one for example compare two speech codecs at 8Khz, 4bit against the original source to find out which one sounds better? Or should one just... I dunno, calculate the mean squared error in some sort of continuous frequency domain, perhaps weighted by some hearing curve.

Audibility of error (and sound in general) depends on what other audio is playing at the same time, with both frequency domain and time domain effects:

https://en.wikipedia.org/wiki/Auditory_masking

Here's a two-part lecture with audio demonstrations by Bernhard Seeber of the Audio Information Processing Group at the Technical University of Munich:

https://www.youtube.com/watch?v=R9UZnMsm9o8

https://www.youtube.com/watch?v=bU0_Kaj7cPk

A simple weighed frequency domain error calculation is not very useful for comparing lossy audio codecs, because effectively exploiting auditory masking to hide the errors is a major factor in codec quality.

Re: Zimtohrli: A New Psychoacoustic Perceptual Metric for Audio Compression

#14
post #5

I'm guessing the name is meant to allude to cinnamon pig ears ( https://en.wikipedia.org/wiki/Palmier ).

Probably, this Zimt is cinnamon, Ohrli is swiss German dialect for ear.

Öhrli is actually the swiss german diminutive of Ohr (ear). Swiss german uses -li a lot for diminutives, whereas standard german uses -chen or -lein, the vowel of them stem is turned into an umlaut Ohr -> Öhrli/Öhrchen/Öhrlein.

Re: Zimtohrli: A New Psychoacoustic Perceptual Metric for Audio Compression

#17

I looked through the deeper explanation and found this interesting: “Performing a simple experiment where we have 5 separate components 1000 Hz sine probe 57 dB SPL 750 Hz sine masker A at 71dB SPL 800 Hz sine masker B at 71 dB SPL 850 Hz sine masker C at 67 dB SPL 900 Hz sine masker D at 65 dB SPL I record the following data When playing probe + masker A through D individually I experience the probe approximately as…

>It's awfully difficult to say that there is equivalent perceived SPL for different frequency domains, even as a trained listener. The snippet you quote doesn't claim comparing intensities at different frequencies. He is comparing only perceived 1kHz intensities, (in the presence or absence of maskers at other frequencies, whose intensity is not subjectively being scored)

Ah, thank you for clarifying, I misunderstood but still have the same curiosity about their methods .

Re: Zimtohrli: A New Psychoacoustic Perceptual Metric for Audio Compression

#19
A few comments:

- My understanding is that a gamma chirp is the established filter to use for an auditory filter bank--any reason you choose an elliptical filter instead?

- I didn't look too closely, but it seems like you are analyzing the output of the filter bank as real numbers. I highly recommend you convolve with a complex representation of the filter and keep all of the math in the complex domain until you collapse to loudness.

- I'd not bucket to discrete 100hz time slices, instead just convolve the temporal masking function with the full time resolution of the filter bank output.

- You want to think about some volume normalization step that would give the final minimized Zimtohrli distance metric between A and B*x, where x is a free variable for volume. Otherwise, a perceptual codec that just tends to make things a bit quieter might get a bad score.

- For fletcher munson, I assume you are just using a curve at a high-ish volume? If so, good :)

- Not sure how you are spacing filter bank center frequencies relative to ERB size, but I'd recommend oversampling by a factor of 2-3. (That is, a few filters per ERB).

Apologies if any of these are off base--I just took a quick look.

Post reply on HN