jitsi / jitsi-meet

Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone app or embed in your web application.
https://jitsi.org/meet
Apache License 2.0
23.31k stars 6.76k forks source link

"Failed to start noise suppression" on Firefox #14888

Open 0cwa opened 4 months ago

0cwa commented 4 months ago

What happened?

Create meet.jit.si meeting Try to check the box for enabling noise suppression

"Failed to start noise suppression Stereo audio noise suppression is not currently supported."

Logs from a clean profile with tracker control off.

Platform

Browser / app / sdk version

127.0.2 (64-bit) Linux Firefox for Fedora

Relevant log output

his page is in Quirks Mode. Page layout may be impacted. For Standards Mode use “<!DOCTYPE html>”.
oecgurbkacgr.b
The kernel 'Prelu' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Prod' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Range' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'RealDiv' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Relu' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Relu6' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Reshape' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'ResizeBilinear' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Reverse' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'RotateWithOffset' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Round' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Rsqrt' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'ScatterNd' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Select' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Sigmoid' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Sin' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Slice' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Softmax' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'SpaceToBatchND' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'SparseFillEmptyRows' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'SparseReshape' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'SparseSegmentMean' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'SparseSegmentSum' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'SplitV' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Sqrt' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Square' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'SquaredDifference' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Step' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'StridedSlice' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Sub' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Sum' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Tan' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Tanh' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Tile' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'TopK' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Transform' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Transpose' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'Unpack' for backend 'wasm' is already registered tfjs.esm.js:9:69245
The kernel 'ZerosLike' for backend 'wasm' is already registered tfjs.esm.js:9:69245
wasm backend was already registered. Reusing existing backend factory. log.ts:22:12
15:04:45.352 Human: humangl webgl version:WebGL 2.0 renderer:Intel(R) HD Graphics, or similar util.ts:12:19
15:04:45.353 Human: backend registered: humangl util.ts:12:19
15:04:45.357 Human: changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD: true util.ts:12:19
2024-07-02T22:04:45.520Z [features/base/redux] <persistState>:  redux state persisted. 46105b5df229acc9caf31dc92be8cf5c -> a7ce9d0b5b7a8de1417abae157a56534 Logger.js:155:26
2024-07-02T22:04:46.105Z [modules/RTC/RTCUtils.js] <803/obtainAudioAndVideoPermissions/s<>:  Got media constraints:  {"video":false,"audio":{"autoGainControl":true,"echoCancellation":true,"noiseSuppression":true,"deviceId":{"exact":"xegfC/XIX3q9txlk1TZo0v33QbEke3/JvFu95TKRAe0="}}} Logger.js:155:26
2024-07-02T22:04:46.109Z [modules/RTC/RTCUtils.js] <803/obtainAudioAndVideoPermissions/s<>:  Got media constraints:  {"video":false,"audio":{"autoGainControl":true,"echoCancellation":true,"noiseSuppression":true,"deviceId":{"exact":"y3IjyAghvl+CD6ITOYm/5e9+t06Pd3wMbEj/zQwd3Ps="}}} Logger.js:155:26
2024-07-02T22:04:46.138Z [index.web] UnhandledError: ResizeObserver loop completed with undelivered notifications. Script:  Line: 0 Column: 0 StackTrace:  undefined Logger.js:155:26
2024-07-02T22:04:46.291Z [modules/RTC/RTCUtils.js] <803/_getUserMedia/</<>:  onUserMediaSuccess Logger.js:155:26
2024-07-02T22:04:46.311Z [modules/RTC/RTCUtils.js] <803/_getUserMedia/</<>:  onUserMediaSuccess Logger.js:155:26
2024-07-02T22:04:50.958Z [features/noise-suppression] <kk/<>:  Attempting to set noise suppression enabled state: true Logger.js:155:26
2024-07-02T22:05:25.716Z [features/noise-suppression] <kk/<>:  Attempting to set noise suppression enabled state: true Logger.js:155:26

Reproducibility

More details?

No response

saghul commented 4 months ago

Are you using any URL parameters for overriding config?

0cwa commented 4 months ago

I'm not

saghul commented 4 months ago

I am not able to reproduce it from Firefox 128.0b9. Not sure how you are getting stereo without any extra constraints. Can you try another audio device just to be sure? What audio device are you using as a microphone?

DL7AD commented 4 months ago

I'm also affected by the bug. I got some additional information.

Audio and Video isn't being transmitted in both directions. However chat works. Tested on Ubuntu and Windows. The bug appear on both. Firefox 126.0.1 still works. Firefox 127.0 / 127.0.2 does not anymore. Also tested with Firefox 129.0a1, doesn't work either.

Here are error logs, that are are present on Firefox 127, which don't appear on Firefox 126.

2024-07-08T11:18:13.529Z [modules/RTC/RTCUtils.js] <7193/_getUserMedia/</<>:  Failed to get access to local media. NotFoundError: The object can not be found here. {"video":{"aspectRatio":1.7777777777777777,"height":{"ideal":360},"width":{"ideal":640},"facingMode":"user"},"audio":{"autoGainControl":true,"deviceId":"gFjBVvD4rmbbjC+JHp6LUTwdHsSkf/6xP+VoVyElqHI=","echoCancellation":true,"noiseSuppression":true}} Logger.js:154:22
2024-07-08T11:18:13.530Z [features/base/tracks] <y_/</<>:  Failed to create local tracks 
Array [ "audio", "video" ]
Object { gum: {…}, name: "gum.not_found", message: "Requested device(s) was/were not found: audio, video", stack: "qt@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:587924\n7193/_getUserMedia/</<@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:868929\npromise callback*7193/_getUserMedia/<@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:868836\n_getUserMedia@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:868587\n7193/obtainAudioAndVideoPermissions/o<@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:871290\npromise callback*obtainAudioAndVideoPermissions@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:871712\nobtainAudioAndVideoPermissions@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:966380\ncreateLocalTracks@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:1103045\ny_/<@https://jitsi:8000/libs/app.bundle.min.js?v=7499:2:3404225\npromise callback*y_@https://jitsi:8000/libs/app.bundle.min.js?v=7499:2:3404164\ncreateInitialLocalTracks@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:219008\ninit@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:221513\nasync*_start/</<@https://jitsi:8000/libs/app.bundle.min.js?v=7499:103:21703\npromise callback*_start/<@https://jitsi:8000/libs/app.bundle.min.js?v=7499:103:21678\nI1/</</<@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:273359\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:103:43744\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:464085\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:462285\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:461770\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:457109\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:456734\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:456243\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:452827\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:451322\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:449782\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:447995\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:439165\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:438985\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:438013\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:434268\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:433195\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:430942\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:429398\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:427599\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:427271\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:426284\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:404503\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:401392\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:393389\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:393057\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:392788\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:392748\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:381171\n" }
Logger.js:154:22
2024-07-08T11:18:13.603Z [modules/RTC/RTCUtils.js] <7193/_getUserMedia/</<>:  Failed to get access to local media. NotFoundError: The object can not be found here. {"video":{"aspectRatio":1.7777777777777777,"height":{"ideal":360},"width":{"ideal":640},"facingMode":"user"},"audio":false} Logger.js:154:22
2024-07-08T11:18:13.604Z [features/base/tracks] <y_/</<>:  Failed to create local tracks 
Array [ "video" ]
Object { gum: {…}, name: "gum.not_found", message: "Requested device(s) was/were not found: video", stack: "qt@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:587924\n7193/_getUserMedia/</<@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:868929\npromise callback*7193/_getUserMedia/<@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:868836\n_getUserMedia@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:868587\n7193/obtainAudioAndVideoPermissions/o<@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:871290\npromise callback*obtainAudioAndVideoPermissions@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:871712\nobtainAudioAndVideoPermissions@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:966380\ncreateLocalTracks@https://jitsi:8000/libs/lib-jitsi-meet.min.js?v=7499:2:1103045\ny_/<@https://jitsi:8000/libs/app.bundle.min.js?v=7499:2:3404225\npromise callback*y_@https://jitsi:8000/libs/app.bundle.min.js?v=7499:2:3404164\ncreateInitialLocalTracks/i<@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:219215\npromise callback*createInitialLocalTracks@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:219070\ninit@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:221513\nasync*_start/</<@https://jitsi:8000/libs/app.bundle.min.js?v=7499:103:21703\npromise callback*_start/<@https://jitsi:8000/libs/app.bundle.min.js?v=7499:103:21678\nI1/</</<@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:273359\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:103:43744\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:464085\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:462285\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:461770\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:457109\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:456734\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:456243\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:452827\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:451322\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:449782\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:447995\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:439165\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:438985\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:438013\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:434268\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:433195\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:430942\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:429398\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:427599\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:427271\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:426284\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:404503\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:401392\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:393389\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:393057\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:392788\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:392748\n@https://jitsi:8000/libs/app.bundle.min.js?v=7499:85:381171\n" }
Logger.js:154:22
saghul commented 4 months ago

Hum, before you enable it, is your audio muted or not?

DL7AD commented 4 months ago

Enabling what? When I open the website, the audio is not muted.

saghul commented 4 months ago

Enabling noise suppression. When you go to enable it, did you have your microphone unmuted and did the UI reflect that?

DL7AD commented 4 months ago

Noise suppression was disabled

saghul commented 4 months ago

@DL7AD Do you get an error when you try to enable it, or always, regardless of enabling the noise suppression option on the menu?

DL7AD commented 4 months ago

Always regardless of having it enabled or not. The error appears immediately after I open up the Website.

image

Just to clarify. In this window, I can't enable/disable it. I can only enable/disable noise suppression, once I entered the room. But I had it disabled (Button shows "Noise suppression" and not "Disable noise suppression"), then reloaded the page and the error showed what can be seen in the screenshot.

saghul commented 4 months ago

AFAIS that error is not related with noise suppression, but rather with not being able to open the video device. I suggest you open a new issue not to derail this one further.

0cwa commented 4 months ago

I am not able to reproduce it from Firefox 128.0b9. Not sure how you are getting stereo without any extra constraints. Can you try another audio device just to be sure? What audio device are you using as a microphone?

I was using my microphone's built in microphone. I've tried also plugging in some headphones with an embedded microphone, nothing changes except the microphone source switches to the headphones as you'd expect.

When I go to jitsi (having not enabled permanent microphone permissions): Firefox asks: "Allow Jitsi to use your camera and microphone?"

With or without the headphone mic I get two options: "Built-in Audio Analog Stereo" and "Monitor of Built-in Audio Analog Stereo" (the latter of which does not detect sound).

If you're curious the audio card is 92HD95, probably not relevant as that's a few layers down. My OS is Fedora 40 KDE, Wayland

saghul commented 4 months ago

It might be relevant, do you have a none-stereo microphone to test with? Looks like that card only gives you stereo mics, which we cannot work with for NS, because it's single channel.

0cwa commented 4 months ago

My headphones are a mono microphone. Can't you just squish the stereo to mono and then put it through noise suppression?

saghul commented 4 months ago

It's very weird that you get stereo somehow.

Perhaps we should add the single channel constraint? (Ping @jallamsetty1 ).

As to mixing, yeah that would be an option but I'm afraid we don't have the time bandwidth right now. If you want to take a crack at it, a PR would be welcome!

0cwa commented 4 months ago

Well it says "noiseSuppression":true, I guess that doesn't mean it's really on though. I think disabling the noise suppression option is a good alternative for now, just because errors look bad, but yeah, noise suppression / mixing stereo to mono should eventually happen, wish I could help, not really my programming language though ;)

saghul commented 4 months ago

Oh wait, I see the confusion :-)

The browser has some noise suppression capability which we always enable (that is the noiseSuppression: true that you see there)

Then we have the option you can turn on in our menu, which is extra.

0cwa commented 4 months ago

Makes sense, I was just curious about that as well, I still agree mixing would be best, but removing the option when in stereo would be preferable for now.

Another idea would be changing noise suppression to a menu of: Off / Built-in / Extra, and only show Extra when audio input is Mono, then when mixing to Mono is able to occur, adding it back. That would also solve #5462

github-actions[bot] commented 2 months ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

0cwa commented 2 months ago

Removing the option when in stereo would be preferable for now.

bumping out of stale

github-actions[bot] commented 2 weeks ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

0cwa commented 2 weeks ago

bumping out of stale again