当前位置: 首页 > 知识库问答 >
问题:

声音中的回声和噪声webRTC android

吕树
2023-03-14

我正在开发webRTC,我正在本地网络上的两个Android设备之间进行实时流,它对我来说工作得很好,除了音质问题,声音中有噪音和回声。如果我在一端使用免提,它会变得更好,但我不想使用免提。

那么我该如何提高音质,有什么技术可以提高音质。它还表示,webRTC内置了回声消除功能,如果这是回声仍然存在的原因。

共有3个答案

傅正阳
2023-03-14

我猜你正在经历Larsen效应,两个麦克风都重放了2个音频输出,创造了无尽的音频循环。如果两个设备都在同一房间内,则对此无能为力,但实际上浏览器具有回声消除选项,您可以通过这种方式激活(不确定它们是默认的):

if (window.chrome) {
    audioConstraints = {
        mandatory: {
            echoCancellation: true
        }
    }
} else {
    audioConstraints = {
        echoCancellation: true
    }
}
var constraints = {video: videoConstraints, audio: audioConstraints};
navigator.getUserMedia(constraints, userMediaSuccess, userMediaError);

另外,将本地视频静音,用户显然不需要它。

华坚成
2023-03-14

发生的事情是您正在将自己的本地音频播放给自己。这在您的麦克风和扬声器之间创建了一个反馈循环。这就是为什么当您使用免提设备时听起来更好。您可以通过修改getUserMedia()的流来删除本地音频:

var constraints = {video: true, audio: true};
getUserMedia(constraints, function(stream){
    var videoOnly = new MediaStream(stream.getVideoTracks());
}, errorHandler);
公孙栋
2023-03-14

创建音频源时,您可以尝试添加特殊的音频约束。它应该如下所示:

MediaConstraints audioConstraints = new MediaConstraints();
audioConstarints.mandatory.add(new MediaConstraints.KeyValuePair("googNoiseSuppression", "true"));
audioConstarints.mandatory.add(new MediaConstraints.KeyValuePair("googEchoCancellation", "true"));

有很多与音频功能相关的媒体限制,我建议尝试不同的组合,完整的列表可以在这里找到https://chromium.googlesource.com/external/webrtc//master/talk/app/webrtc/mediaConstraintInterface.cc

 类似资料:
  • GaussianNoise层 因为这是一个起正则化作用的层,该层只在训练时才有效。 GaussianDropout层 因为这是一个起正则化作用的层,该层只在训练时才有效。 AlphaDropout Alpha Dropout是一种保持输入均值和方差不变的Dropout,该层的作用是即使在dropout时也保持数据的自规范性。 通过随机对负的饱和值进行激活,Alphe Drpout与selu激活函数

  • GaussianNoise层 keras.layers.noise.GaussianNoise(sigma) 为层的输入施加0均值,标准差为sigma的加性高斯噪声。该层在克服过拟合时比较有用,你可以将它看作是随机的数据提升。高斯噪声是需要对输入数据进行破坏时的自然选择。 一个使用噪声层的典型案例是构建去噪自动编码器,即Denoising AutoEncoder(DAE)。该编码器试图从加噪的输

  • GaussianNoise层 keras.layers.noise.GaussianNoise(stddev) 为数据施加0均值,标准差为stddev的加性高斯噪声。该层在克服过拟合时比较有用,你可以将它看作是随机的数据提升。高斯噪声是需要对输入数据进行破坏时的自然选择。 因为这是一个起正则化作用的层,该层只在训练时才有效。 参数 stddev:浮点数,代表要产生的高斯噪声标准差 输入shape

  • 问题内容: 我想让一个python程序通过发出哔哔声来提醒我。当前,我使用然后使用命令行语音程序说“处理完成”。我宁愿它只是一个简单的“钟”。 我知道有一个可以在 Cocoa 应用程序中使用的功能,但是我认为这与该功能没有任何关系。 我也尝试过 但这没用。 如果您无法从我的 可可粉 评论中得知,我正在使用Mac,这可能会有所帮助。 问题答案: 你有没有尝试过 : 在Mac OS 10.5上适合我

  • [source] GaussianNoise keras.layers.GaussianNoise(stddev) 应用以 0 为中心的加性高斯噪声。 这对缓解过拟合很有用 (你可以将其视为随机数据增强的一种形式)。 高斯噪声(GS)是对真实输入的腐蚀过程的自然选择。 由于它是一个正则化层,因此它只在训练时才被激活。 参数 stddev: float,噪声分布的标准差。 输入尺寸 可以是任意的。

  • 我最近一直在尝试用C实现一个Perlin噪声发生器(基于Ken Perlin的网站,使用SDL库作为屏幕输出),但输出显示插值块之间的边不是连续的或平滑的-插值块确实表现为块。 我很确定我的代码中缺少了一些东西,或者做错了,但我似乎找不到它。 作为参考,我的当前代码如下: 用法:跑步时,按住上下键可放大或缩小噪声网格。