Open 77boaz opened 2 years ago
Can you share a screenshot or 2 of what the apps you saw this in, or share more info on how you think this should look?
It's there in the upper left. if you look closely it has 3 little audio pushing out symbols.. The first one is highlighted representing a 1 of 3 boost. This is from Smart Audiobook Player for Android. It's of course a stand alone player, but probably the best I've found as a stand alone / local audiobook files on phone only. There are almost too many options though lol
This would be such a great feature. Currently I am not using the audiobookshelf mobile app, but SmartAudiobookPlayer instead, because I have to crank up the volume such much on some audiobooks, that any other sound played by the mobile on headphone hurts the ears.
I would love to see this feature. I listen while riding my motorcycle and spoken words are hard to hear over the wind and engine noise.
I would like to see this feature too.
There are two features here that would be great, and especially so for poorly produced books (and doubly so for early episodes of podcasts, which are invariably recorded on potatoes by people who haven't worked out how to audio yet) and also really handy for making the most of the limited gain on a given playback system (like bluetooth devices that are only just loud enough in optimal conditions) or for works which have wide dynamic range (like enthusiastic character acting) where it switches back and forth between inaudible and ear-tearing.
Solving this would be a huge quality-of-life improvement for my partner and myself, at least.
volume normalisation, where the entire file has a level of gain applied to it so that the peak volume in the audio file is sort of at 0dBFS[^normalisation]. I think ReplayGain is the common method of storing this setting in metadata. It gives a single volume boost figure for the entire file so that you make the most of the available gain in a system, without driving it into distortion. This is done by scanning the file for the loudest part, and applying a dB boost to bring that peak up to 0dBFS. I think (most?) players will honour a replaygain tag.
compression / limiting / AGC (automatic gain control) / midnight-mode: a system that adjusts the gain of the material as it plays back in order to make things as legible as possible. Think "magic goblin turning the volume up and down for you". There's no magic setting here, so presenting the user with various "presets" is the best way to go - too much compression sounds "breathy" and "pumps", too little makes it hard to understand speech or makes the loud passages painful when turned up enough to hear the quiet parts.
to a lesser extent, Equalisation. This usually applies to badly recorded material - free audiobooks, early podcast episodes. A bit of EQ can really help make a bad mic or excessive background noise much less painful to listen to, but settings are specific to each recording (and to an extent, each listener) so it's not easy to solve in a clean UI without making things look too complicated for more casual users.
ReplayGain can probably be calculated and tagged server-side, leaving it to the client to apply the correction. Compression/dynamics will almost certainly need to be a function entirely in the client player library (unless the server transcodes the material) so it will depend on what ABS uses on the front-end or in the client software.
I haven't used it but the WebAudio API (which is allegedly supported in modern browsers?) has a GainNode and a DynamicsCompressorNode interface, which is exactly what would do what's needed here, if it is feasible to use.
I can help with the technical aspects of the audio engineering part (working out good presets, adjusting compression paramaters) if anyone is keen to take up implementing something like this. I don't think I'll have the bandwidth(!) to dive right into coding a solution any time soon, but if someone's got the time to hack on it I can help with the audio knowledge.
[^normalisation]: ReplayGain usually uses a psychoacoustic modelling method so that it actually measures "loudness" (which is a perceived quality) rather than "volume" which is an objective measurement.
Did a quick look into this since it was brought up again in #1156. A potentially useful implementation was shared a few years ago that could be used: https://github.com/google/ExoPlayer/issues/9796
@advplyr It looks like the developer (OxygenCobalt), has migrated on to Media3 Exoplayer from v. 2.x. It looks like much of his efforts to implement it are centered around that framework (at least, following along the commits and issues in his own repo seems to indicate such).
thanks, I haven't started the Media3 migration yet mainly because I had to customize the exoplayer chromecast player which makes the migration a lot more time consuming now
Throwing in a comment to say I'd love for this to be implemented. I listen to terrible podcasts (both in production and content), and I'm struggling to hear their garbage. PocketCasts has an equivalent function which is basically a necessity for me.
I would like something very similar, 'Car' mode.. I listen to audio plays and any whispering/off-stage talking is just lost. So some kind of dynamic range compression would be lovely.
Would love to see this implemented soon. It would greatly enhance audiobook playback. Thanks!
Another +1 for an audio boost setting. Mowing with headphones is still not loud enough sometimes.
Another +1 to at least have the playback respect ReplayGain settings if not create them. It wouldn't take much effort to look at the RG tag and add or subtract a few db to the playback setting. There are lots of (free) audio tools that can scan and tag the audio files as needed, which is the harder part that requires a process and knowledge to write it. Also, thanks for a great program.
Another +1 to at least have the playback respect ReplayGain settings if not create them. It wouldn't take much effort to look at the RG tag and add or subtract a few db to the playback setting. There are lots of (free) audio tools that can scan and tag the audio files as needed, which is the harder part that requires a process and knowledge to write it. Also, thanks for a great program.
I'm curious what the benefit to setting RG on audiobooks are, as longer books are going to have a tremendous swing in dynamic range.
It boosts or cuts the volume to a nominal value. I have no problem with dynamic range, it's the too-quiet-to-hear part that I have a problem with. Or so-loud-it-makes-you-grimmace bothers me too. The audiobooks have to compete with music, phone calls or videos at times and the non-book audio blasts my ears off because I had to turn up the book to an unreasonable level just to hear it and I wasn't expecting the other sound to assault my ears out of nowhere.
Is your feature request related to a problem? Please describe.
It's not really a problem in the sense of working or not working, although I did notice that the volume is a bit low sometimes even when I'm maxed out on my phone's bluetooth. Volume going to the car bluetooth or headphone bluetooth speakers is a bit low sometimes.
Describe the solution you'd like
A boost toggle button.. Maybe 1-3 toggles with each toggle boosting the volume of the phone past phone system volume.
Additional context
I've seen this boost option on some standalone audio book apps. It's helpful. Of course, if boosted too much the volume will be distorted but this is kinda normal since it overrides system volume and it depends on each person's hardware experience. Phone to phone.. bluetooth to bluetooth. Thanks!