mumble-voip / mumble

Mumble is an open-source, low-latency, high quality voice chat software.
https://www.mumble.info
Other
6.14k stars 1.1k forks source link

Feature Request - Fully disable Speex preprocessing #3323

Open mumbledenoise opened 6 years ago

mumbledenoise commented 6 years ago

Speex preprocessing noticeably reduces sound quality. I've received some comments that Mumble doesn't sound as good as some other VOIP options. To test, I removed all Speex preprocessing in the source, and sound quality was better than anything we've ever tested.

It might be specific to our environment/equipment, as some microphones don't seem to be affected as much.

Would love to see an option for this under the Audio Processing settings. Or perhaps disable Speex preprocessing completely whenever the user sets Noise Suppression to Off.

Thanks!

mkrautz commented 6 years ago

A hidden setting for this would be fine by me. (Which would, in time, be accessible via something like Firefox's about:config.)

However, echo cancellation is somewhat coupled with the preprocessor.

See https://github.com/mumble-voip/mumble/blob/master/src/mumble/AudioInput.cpp, search for "speexpreprocess".

makedir commented 4 years ago

2 years later and still no update on this? Mumble is unusable on a laptop, creating a permant 2-3W drain because of this, even with no one else but yourself connected to the server, no one speaking.

Krzmbrzl commented 4 years ago

The issue is labeled as "help wanted" indicating that we'd be happy to accept a PR dealing with this issue. However we simply don't have the capacity to implement every PR ourselves. We are dependent on support from the community for these kind of things.

Thus if you feel like this is an important feature, feel free to create said PR or motivate someone willing to do it.

In general I'd think it shouldn't be that much work. I also believe the hardest part of this is to figure out how echo cancelation is being dealt with in this case.

makedir commented 4 years ago

Why cant there be a simple switch be implemented, to deactivate every audio processing, or while no one is speaking? I dont mind a bit higher latency.

Krzmbrzl commented 4 years ago

I'm far from being familiar with the audio system but from what I think to know, noise canceling depends on a continuous input to get some sort of background spectrum. I don't know though how this will interfere with your suggestion.

The only thing that I can say to this is that you are very welcome to try it out, open a PR and share your findings. If this does indeed not affect other parts of Mumble in a negative way, then I'm pretty sure we'll merge that PR :)

makedir commented 4 years ago

Open a PR? What do you mean? Try out what?

Krzmbrzl commented 4 years ago

PR = Pull request See https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests

It basically. Means that you'd fork this repository, implement the respective functionality and then submit that PR which can be viewed as a proposal to include your implementation into Mumble's source code.

makedir commented 4 years ago

This looks too complicated, I am not a c programmer, I am just into Java. If you implement a cheap toggle off switch and link me a test build, I am happy to test it for you.

Krzmbrzl commented 4 years ago

I'm not a fan of dirty solutions. These typically involve a lot of trial and error. And before touching the whole audio stuff, I'd have to look into the audio processing as a whole, because currently I don't really have a clue about it xD I might come back to your offer of being a potential test dummy :)

makedir commented 4 years ago

I dont want any difficult changes to the audio processing, I just want a dirty quick switch to literally deactivate all audio processing. The irony is, there is a checkbox in Mumble for echo cancelation, but it seems to be ignored. Same goes if my mic is muted, it doesnt make sense for Mumble still process the muted mic.

Krzmbrzl commented 4 years ago

I dont want any difficult changes to the audio processing, I just want a dirty quick switch to literally deactivate all audio processing

Then go ahead. The processing happens here: https://github.com/mumble-voip/mumble/blob/master/src/mumble/AudioInput.cpp

The irony is, there is a checkbox in Mumble for echo cancelation, but it seems to be ignored

What makes you think that?

Same goes if my mic is muted, it doesnt make sense for Mumble still process the muted mic.

See #171 - it's only for PulseAudio for now, but I assume other backends will follow

makedir commented 4 years ago

So it is even worse, the issue is 7 years old, and no one cared so far just to implement a simple off switch and put it into a checkbox on the GUI settings.

DavidOliver commented 4 years ago

@makedir, are you perhaps having a bad day? Can I suggest you keep any future responses respectful of developers and constructive please?

You've shared your point of view and have declined to take on the work, so perhaps there's no need for more noise on this issue.