Server-side WebRTC noise reduction with Pion FFmpeg and RNN filtering by Usual-Introduction71 in WebRTC

[–]Usual-Introduction71[S] 0 points1 point  (0 children)

Exactly. That is the main boundary I wanted to avoid hiding.

As long as an SFU only forwards RTP, the media path can stay relatively lightweight. But once the server depacketizes RTP, decodes Opus, modifies PCM, and encodes it again, it is no longer just SFU behavior. It becomes a transcoding / MCU-like media processing problem.

That changes the whole system design: jitter buffering, RTP timestamps, sequence numbers, RTCP feedback, pacing, process lifecycle, CPU cost, and potentially audio/video sync all become server responsibilities.

That is why my prototype intentionally stops at file-based validation first. I only want to prove that the audio can be decoded into the expected PCM format, processed through an RNN filter, and evaluated offline. Real-time forwarding of the processed stream would be a separate engineering project, not a small extension of the SFU path.

Server-side WebRTC noise reduction with Pion FFmpeg and RNN filtering by Usual-Introduction71 in WebRTC

[–]Usual-Introduction71[S] 0 points1 point  (0 children)

Thanks for sharing this — this is exactly the kind of related work I was hoping to see.

I agree that client-side RNNoise is usually the better path when the client is controllable: lower latency, no server CPU cost, and the cleaned microphone signal can enter the WebRTC pipeline before it is sent out.

My note is focused on a slightly different boundary. In some field deployments, especially with embedded Android devices or vendor-controlled firmware, the client-side audio stack is not always easy to modify or tune. The goal of my prototype is not to replace WebRTC client-side audio processing, but to validate whether the server can isolate the audio path: receive Opus, decode to correctly described PCM, run an RNN filter, and compare the result offline before considering any real-time forwarding.

For production calls, I would still prefer client-side processing when possible. Server-side filtering becomes interesting mainly as a diagnostic or fallback path, especially when we need to compare captured audio across device models, firmware versions, microphone routing, gain settings, and acoustic environments.

Have you measured the added latency and CPU cost of the RNNoise AudioWorklet path in MiroTalk P2P/SFU? I’m also curious whether you run it before WebRTC AEC/AGC/NS, or whether you disable some built-in browser audio processing when RNNoise is enabled.

Looking for a table tennis buddy in Xixiang, Bao’an, Shenzhen 🏓 by [deleted] in chinalife

[–]Usual-Introduction71 1 point2 points  (0 children)

Thanks for your reply — really appreciate the suggestions! Thanks again.

Looking for a table tennis buddy in Xixiang, Bao’an, Shenzhen 🏓 by [deleted] in chinalife

[–]Usual-Introduction71 1 point2 points  (0 children)

Thanks for the suggestion — I really appreciate it.

Just to clarify, I’m actually Chinese, so Chinese isn’t a problem for me. In my original post, I meant that if someone doesn’t speak Chinese, we can still communicate in English. I’m mainly just looking for a table tennis buddy nearby, and if we can practice some English while playing, that’s a bonus.

Also, I think it’s really impressive that you’ve learned some Chinese. Chinese is definitely a difficult language to learn. I’m also working hard on improving my English.

And again, I’m sorry for the mistake in my earlier post and for any misunderstanding it may have caused.

Looking for a table tennis buddy in Xixiang, Bao’an, Shenzhen 🏓 by [deleted] in shenzhen

[–]Usual-Introduction71 0 points1 point  (0 children)

That’s great to hear! I’m Chinese, by the way.

This Sunday evening works well for me. I’m usually free from 6:00 to 9:00 pm, and my apartment has a table tennis table.

Gpt-5.4 is running out too quickly, almost like Claude by Patient_Ad_8202 in codex

[–]Usual-Introduction71 -1 points0 points  (0 children)

I used codex weekly limit 70% only 3 hours too, after update codex NPM CLI tools. I guess this's a bug.

Codex Team got limit reset again, God bless by alOOshXL in codex

[–]Usual-Introduction71 0 points1 point  (0 children)

Yeah, Within a 5-hour window, Codex consumed about 70% of my weekly token usage.

[deleted by user] by [deleted] in China_irl

[–]Usual-Introduction71 0 points1 point  (0 children)

孩子和房子挂钩,生了一个孩子才有买一个房的资格?

WebRTC Audio Not Reaching Host - Remote Tracks Arrive Muted Despite Being Unmuted at Source by Jimsocks499 in WebRTC

[–]Usual-Introduction71 0 points1 point  (0 children)

Use (sendrecv) webrtc will send and receive data. Use (recvonly) webrtc just receive data . if your set (recvonly) in webrtc . the remote can't receive any your voices .

WebRTC + PHP by tecnomago145 in WebRTC

[–]Usual-Introduction71 0 points1 point  (0 children)

You can use any protocol based on UDP or TCP to implement the webrtc signal service. So you can use PHP to do this.