问题标签 [aec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
2689 浏览

android - webrtc 中的回声消除 (AEC)

我正在开发适用于本地 WiFi 的视频聊天应用程序,我正在使用设备扬声器,所以我面临回声问题。所以我的问题是如何取消回声这是我的音轨代码

因此,我可以在这里做些什么来提高音质,任何指南都将受到高度赞赏。

我听说过 opus-codec 库,但没有找到任何帮助,这是反馈​​???

0 投票
1 回答
3837 浏览

c++ - WebRTC 音频处理模块 (APM) 和计算回放设备的回声延迟

我对音频处理很陌生。我创建了一个程序,以一种方式录制和流式传输音频,而另一端不录制。基本上,它将一个位置记录的任何内容传输到另一个位置。但是,在许多情况下,该程序还会在与录制源相同的位置输出音频。由于音频延迟(取决于许多因素),这会产生明显的“回声”。

因为我不确定是否还有其他东西,我正在尝试使用 WebRTC 的音频处理模块进行增益控制和声学回声消除。增益控制似乎运作良好,但 AEC 并没有真正运作得那么好。我假设可能是因为我没有设置正确的流延迟,或者这可能不是 AEC 的真正用途。

我正在使用的当前代码读取我从文件中记录的内容,试图消除回声,至少是第一次出现的回声。如果我将流延迟设置为 0。我们可以想象当前音频被完全取消。我尝试不同的值无济于事。

所以我的问题是,我希望这足够具体,我在这个模型中做错了什么?

使用来自: http ://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing/的包含和库

0 投票
1 回答
2186 浏览

android - Android 的 AEC 和噪声抑制器无法在某些设备上运行

在开发具有 VoIP 功能的 Android Unity 应用程序时,我们发现在某些设备(特别是 Galaxy S6)上,麦克风会拾取扬声器输出的声音,从而导致大量的静电、失真和回声。正因为如此,我开始着手开发一个原生解决方案,以利用 Android 的一些 AEC 和 NS 功能。

我编写了以下测试平台,它可以在某些设备上完美运行,例如 Note 4。当相同的应用程序在 Galaxy S6 上运行时,就好像 ARC 和 NS 没有很好地应用或根本没有应用。

我已经尝试了很多方法,例如将 VOICE_COMMUNICATION 用于 AudioRecord、使用 MIC 并手动创建 NoiseSuppressor 和 AcousticEchoCanceller、禁用/启用 NuPlayer/AwesomePlayer 等等。这些设备显示支持并启用了 AEC,但它似乎并没有发生。使用耳机或使用听筒代替免提电话时,问题完全消失(因此麦克风无法拾取扬声器声音)。我是否在这里忽略了一些巨大的东西,或者是否有可能要报告一个错误?

如果 AEC 和 NS 在其他设备上不能完美运行,我不会怀疑。

0 投票
0 回答
712 浏览

android - 使用 VoIP 应用程序拨打电话时,我听到的这种高音是什么?

在使用 VoIP 应用程序时,我遇到了回声消除问题。我倾倒了声音——远端、近端和输出。并且输出很好,它不包含回声。但是,当调用 Android 智能手机时,只要您提高其扬声器的音量,就会产生这种让我发疯的高音。

我想知道这是什么声音以及如何避免/消除它?

高音

0 投票
1 回答
1430 浏览

android - 阻止不可避免的回声的最有效方法

我创建了一个模块化系统,通过 UDP 在任何带有麦克风和扬声器的设备和 Android 手机之间传输语音。如果麦克风和扬声器放置的距离不远,手机上录制的任何内容都会在扬声器上播放,同时录制并发送回手机,从而产生不可避免的回声。

到目前为止,问题是麦克风在播放时正在录音,因此,例如,如果在播放重要内容时发送代码以停止录音,则问题将得到解决。这可以通过按键通话按钮(不太适合电话类型的情况)来实现,也可以通过一种算法来感知最大振幅并确定是在说重要的事情还是只是噪音。后者更容易使用,但在嘈杂的环境中很容易出错。

对冗长的讲座感到抱歉,但我想知道您是否有更有效/防错的方法来解决这个问题。

一般示意图

PS我在硬件方面没有足够的处理能力以数字方式消除回声,我也不知道如何去做。我确信它也可以使用某种模拟滤波器来做到这一点,但我也不知道如何做到这一点。

编辑:感谢mattm ,我现在知道我需要像 AEC 这样的东西,尽管它可能不是最有效甚至最实用的。

我正在使用一个 WIFI-UART 模块(HLK-RM04),它有一个很大的问题。当模块将 8 位音频样本转换为 IP 数据报时,存在非常显着的延迟。出于某种原因,当它解压从 android 发送的数据报时,这种延迟不存在 => 从 android 接收样本需要大约 50 毫秒,但从麦克风接收样本需要大约 650 毫秒。因为我使用的是 7200 的采样率,这意味着 AEC 算法必须处理至少 4680 个样本/秒的数据集才能保持“实时”。

0 投票
2 回答
4871 浏览

java - android AcousticEchoCanceler 似乎不适用于大多数设备

我正在构建一个应用程序,它需要麦克风来消除来自扬声器的任何声音。看起来这个问题几乎是一个在线阴谋,因为其他有完全相同问题的人在很长一段时间内都没有得到回应。

Android 的原生硬件加速 AcousticEchoCanceler 似乎不适用于大多数设备。在许多设备上进行的测试以及似乎工作的设备包括 Nexus 5 和 Moto X,而几乎所有测试的三星设备都无法消除背景声音。注意:所有测试的手机都返回 trueAcousticEchoCanceler.isAvailable()

但是,必须有一个解决方案,因为诸如 Skype 或 WhatsApp 之类的应用程序似乎会取消其应用程序上下文之外的声音,即扬声器上有呼叫,而麦克风会取消收到的任何反馈。

这个简化的录音应用程序将声音录制到文件中,然后在单击播放时播放。

MainActivity.java

activity_main.xml

AndroidManfist.xml 权限

要验证设备是否正常工作,只需在后台播放一些内容,然后单击Start Recording录制一个小扇区,然后单击Stop Recording此时单击Play Back并检查您是否听到背景声音。如果您能听到背景声音,则 AEC 不工作。但是为什么会出现这种不一致,或者我如何实现回声消除(我已经在我的应用程序中使用 WebRTC 在我的应用程序上下文中消除噪音)

任何帮助,将不胜感激 !

0 投票
3 回答
15347 浏览

javascript - WebRTC 声学回声消除

我目前正在从事 webrtc 项目,并且在不使用耳机或外部麦克风时遇到音频回声问题,是否有任何解决方法或解决方法

0 投票
0 回答
168 浏览

android - Android 相机错误:aec_calculate_sensitivity binning 小于 1

我正在 Unity 上开发一个使用相机(正面和背面)的 Android 应用程序,一旦应用程序启动,这个错误就会在 logcat 中每秒发送大约 20 次垃圾邮件。当我再次关闭我的应用程序时它会停止。我试图找到有关 的任何信息aec_calculate_sensitivity,但遗憾的是没有结果。这不是我自己定义的。该错误似乎也不会出现在使用相机的其他应用程序上。有谁知道从哪里开始寻找这个原因?

我使用 TastyBits 的 Unity和CameraCaptureKit

错误日志:

E/mm-camera-CORE(353): aec_calculate_sensitivity binning 小于 1

有人知道可能导致这种情况的原因吗?

0 投票
1 回答
1184 浏览

android - 任何能够达到 48 kHz 的声学回声消除 (AEC) 库?

我正在开发一个以 48 kHz 采样率运行的 VoIP 应用程序。由于它使用内部使用 48 kHz 的 Opus 作为其编解码器,并且大多数当前的 Android 硬件本机以 48 kHz 运行,因此 AEC 是我现在缺少的唯一难题。我已经找到了 WebRTC 实现,但我似乎无法弄清楚如何让它工作。看起来它会随机破坏内存并迟早使整个事情崩溃。当它不崩溃时,声音有点厚实,好像半帧更安静。这是我处理 20 毫秒帧的代码:

如果我注释掉实际的回声消除并且只是进行浮点转换和来回分割频带,它不会破坏内存,听起来并不奇怪并且无限期地运行。(我确实将远端/扬声器信号传递给 AEC,我只是不想通过将其包含在问题中来弄乱我的代码)

我也尝试过 Android 的内置 AEC。虽然它确实有效,但它会从 16 kHz 对捕获的信号进行上采样。

0 投票
0 回答
229 浏览

android - 有谁知道如何使用 MediaSyncEvent 同步播放和捕获?

参考文档:
https ://developer.android.com/reference/android/media/MediaSyncEvent.html

当我正在使用 Speex 库处理 AEC(声学回声消除)时

我发现扬声器线程中接收到的音频数据(播放)和麦克风线程中记录的音频数据(捕获),它们需要同步,但我没有这样做。我想知道 MediaSyncEvent 会对此有所帮助吗?

如果没有,有人知道如何使播放和捕获的音频数据同步吗?