Higher audio quality

Hello, we are running online dance events during the corona lockdown, and have used Zoom for that. However, it seems that now when there’s more traffic, the shared audio through Zoom is not too good. The audio sounds like 64 kbps or even less. Is it possible to set a fixed audio bitrate with Jitsi? Something equivalent to 128 kbps would be great. We have up to 50 participants there.

3 Likes

The party playing the music can try opening the room like:

https://meet.jit.si/myDanceClassesStereoConferenceTestRoom#config.p2p.enabled=false&config.disableAP=true&config.disableAEC=true&config.disableNS=true&config.disableAGC=true&config.disableHPF=true&config.stereo=true

The rest can use just https://meet.jit.si/myDanceClassesStereoConferenceTestRoom and see does it change anything for you?

5 Likes

@iskanje, Any luck with the audio quility???

Same situation here.

I self host jitsj and I noticed that audio quality sounded drowned out. How can I turn up the audio bitrate in the config?

Ok, it works, but the quality is still not too high. On the receiving PC I can see 80-120 kbps traffic (without video) and the music sounds thin. It would not be so important to use stereo, as people would be moving around anyway. But to be able to set a bitrate would be great.

I tried the options
disableAP: true,
disableAEC: true,
disableNS: true,
disableAGC: true,
disableHPF: true,
stereo: true,
in the config.js on a docker-jitsi-meet deploy at ebfa142d384466fefc7cd224cdca50df9cfe40c7 and in my opinion, the audio quality saw a huge improvement. Most of us use the Jitsi Meet Electron App 2.0.0 or Opera/Chromium.

We had some minor rehall problems and maybe we get slightly more (very silent) white noise, but the rehall vanished after switching the headphones of one of the participants (they worked fine before, I think).

I think I’ll leave those options live. Is there potential for breakage for some more obscure clients or setups that we haven’t tested with these options yet?

Thank you for this awesome, privacy preserving webconference software!

1 Like

Can you please explain this line? How to deploy this?

And is there a document that explains the different parameters?

ebfa142d384466fefc7cd224cdca50df9cfe40c7 is the git commit my server is running with. As far as I know none of the settings require that specific commit (because they are all client-side settings) and I just added the information so people with more knowledge than I have can make an informed decision if what I wrote can be true.

If you are running Jitsi Meet on one of your own servers with docker-jitsi-meet from https://github.com/jitsi/docker-jitsi-meet, you will have a directory under ~/.jitsi-meet-cfg/web/ with a file called config.js. This is the client-side configuration that will be downloaded by the web client AND by all the apps. Within this file, the options I wrote above are listed right at the end (without explanation). So if you just uncomment them and change them to true, the changes should be applied to all people reloading their browsers.

The settings you disable with a “true” here are all meant to improve sound quality, so it is counter intuitive to disable them with a “true”. Nonetheless, I think I noticed an improvement, maybe just because of better client performance. They seem to correspond to features available in webkit/chrome/chromium, so here is my best guess at what they do:

disableAP: true, // disable ??
disableAEC: true, // disable echo suppression and cancellation
disableNS: true, // disable noise suppression
disableAGC: true, // disable automatic gain control
disableHPF: true, // disable high pass filter??? (no lower-than-speech sounds)
stereo: true, // stereo sound

I’ve since re-enabled AEC (via writing “false” after the colon) without noticing a loss of quality. Maybe I was just imagining things.

Please remember that I’m very new to Jitsi and everything I say could be very wrong :slight_smile:

1 Like

I’m trying to use Jitsi for online music lessons. If I’m understanding this thread correctly, the settings are either in the public Jitsi server URL, or in a config.js file if you host your own. Is that correct?

Yes @TheDaveAbides :slight_smile:

Hello,
we start to use Jitsi-Meet on our own server. We also plan to use music in the background (share desktop audio) plus microphone announcements (yoga + meditation).
Does anyone know if these settings:
e.g. disableNS: true, // disable noise suppression
apply to Mic and Desktop Audio? or only to the microphone?

I would like to describe my question in more detail:
I use a microphone and music that I can either play directly in the computer or send together with the microphone via a mixing console (Zoom R 16 audio interface) via the USB connection to the computer.
In Jitsi there is the possibility to share the desktop + audio. Does it make sense to do that? Or is it better to mix the music with the speech in the mixer and then transfer it as microphone sound in chats.

@iskanje I would be interested to know how you do that. Do you use a microphone and the music at the same time? E.g. for instructions while dancing?

Thanks for this forum!

The settings you disable with a “true” here are all meant to improve sound quality

Yes and No.

Yes, they are for a standard conference with speakers. Or, more precise: mainly, these improve speech quality in a sense of “understanding language”.

For Musician purposes, most of those settings are counter-productive. For example, if someone plays a decrescendo with activated AGC - the decrescendo can be completely eliminated.

It would be a good Idea to allow the Moderator of a conference to set defaults for most of these switches. He will know if he is doing some Insurance Sales Meeting or a Clarinet Lesson and can decide. Of course, it would be even better if he could switch “on the fly” since even in a Clarinet Lesson there may be some talking time and som play time.

I want to add:

To get really improvements for speaker Conferences, using some sophisticated massive Dynamics (Multiband Noise Gate, Compressor. De-Esser) for that may be a good Idea. That could even eliminate loudness differences when Speakers are moving around (and thus, change their audio level which is of course massively influenced by the distance to the Microphone)

For Musician Purposes, some kind of Compander Logic to reduce needed Bandwidth could be a good Idea, too. But that is difficult to say since Musicians also definitely do want lowest possible latencies…

2 Likes

In this post, it says that the bitrate is set to 70 kbps by WebRTC (don’t know what that is…)
Seems to be accurate according to the participant info window on Jitsi main screen.

1 Like

@damencho Can you point me to the relevant code so I can change the defaults on server? That way I don’t need to always use the URL params. I found the Jitsi Meet API, but it’s not quite what I’m looking for (Doesn’t have the above mentioned audio options accessible there). Thanks!

These are all config.js settings: https://github.com/jitsi/jitsi-meet/blob/master/config.js#L516

2 Likes

Thanks so much, I need to do some more testing to see what makes highest impact on audio quality. Much appreciated.

So far the largest change I’ve seen so far is the mic quality, which is something that’s not going to be an easy fix. Going from my headset on desktop to my laptop mic in backyard is insanely different.

I have been experimenting a bit more. My private server has been on commit d44230e2b121e72542a60b6dfbce9b07e84ed706 for a few days now and I’ve removed all the “disable*” options but kept “stereo: true”. We’ve had about ten conferences since then.

My current theory is that for normal conferences (eg. speaking), the stereo: true setting was the only option that actually improved the sound quality. Considering that it seems to double the WebRTC-Opus-Bitrate to 70kbit that’s not a surprise, although I’m not really sure how Opus works. Technically it could just be sending 2x35kbit with basically the same input encoded twice and no quality improvement per channel. In any case, that might help if some packets go missing because more packets are sent out in total, and we have a few people that rely on wireless- and bad rural “broadband” connections.

Subjectively, adding the “disable*”-options did not really make it sound worse and we didn’t have much trouble with them. That said, I think leaving the echo cancellation enabled does help when people do not use a headset, and since I also couldn’t tell a difference anymore with the other features, they are all not-disabled (i.e. not commented in/not set to true) anymore. As I’ve said before, I’ve kept stereo: true, however.

If anyone has further information to the above, I’d really love to hear it. I’m currently looking for an alternative to Zoom as I am sending live music into the meeting and need a higher audio bitrate. I checked out the options in config.js, but there doesn’t appear to be a setting for audio bitrate.

Thanks!

For live music I disable audio processing and lipsync: /etc/jitsi/meet/*-config.js

disableAP: true,
enableLipSync: false,

Disable AP, ALL audio processing,makes the audio clear but naturally gives issues with ringing if you have mic enabled and not using headphones.

You can choose to gradually disable some audio processing at the end of the config, what the options do is described in the sourcecode:

You can increase the bitrate slightly by enable stereo in the /etc/jitsi/meet/*-config.js
stereo: true,
Some users have archived higher bitrate by hacking into the webrtc SDP handshake that setup the opus audio codec.

1 Like

Thanks for your reply. Disabling audio processing is one step, however what I really need is to increase the audio bitrate. It sounds like that isn’t possible without rolling my own server and hacking it a little?