问题标签 [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 回答
2162 浏览

ios - iOS 上内置 AEC 还是 WebRTC AEC?

我是 iOS 新手(来自 android)。我已经使用 WebRTC 独立 AECM 模块在 android 上成功完成了 AEC 流程。

现在我必须在 iOS 上做同样的事情,但进展甚微。主要问题是我应该选择哪种解决方案在 iOS 上进行 AEC:

  1. 使用 iOS 内置 AEC。
  2. 再次使用 WebRTC 独立 AECM 模块。

对于第一个解决方案,我了解到 iOS 在语音处理 I/O 单元中内置了 AEC。但是听说VPU的性能不够好。可以?

对于第二个,在 android 上,我可以使用 AudioRecord 和 AudioTrack 的 API 和一些缓冲区技术来计算 WebRTC“audio_processing.h”中描述的“延迟”,但我没有信息。关于我应该使用什么 API 来计算 iOS 上的相同延迟。

我现在一直在搜索 google 和 iOS 文档。但也渴望在这里得到任何建议。尤其是已经在 iOS 上做过 AEC 的人。

多谢。

0 投票
1 回答
737 浏览

android - 回声消除:麦克风作为语音输入,MP3 作为输出

我目前正在开发一个应用程序,它正在观察麦克风的输入,但同时必须能够通过扬声器播放特定的 MP3 歌曲。我目前面临的问题是,当我播放 MP3 时,麦克风当然会识别到这一点,并且由于音量增加,会返回更多数据。

我需要取消 MP3 的回声,我尝试过 Android 自己的 AcousticEchoCanceller,但它不起作用,因为它甚至在我的 Nexus 7 和我的 Nexus 4 上都不可用。现在我来 speex,但我不是真的熟悉 NDK,但我不知道如何将其嵌入到我现有的代码中。

所以我发现了这个:https ://github.com/mutantbob/ndk-speex NDK-Speex with Java wrapper classes,但不幸的是这些类似乎只用于 Speex 格式的编码和解码声音,这似乎不会取消任何回声。我已经阅读了有关扩展 Java 包装器以添加回声消除的信息,但我找不到正确的起点,有人能指出我正确的方向吗?还是我应该采取不同的途径实现我的目标?

0 投票
1 回答
784 浏览

android - 在 Android 上使用 WebRtc_Aecm 时,与回声重叠的音频也会被取消

举个例子:

麦克风捕获的 PCM:

1, {2,3} {4,5} {6,7}, 8, 9,

{A,B} 表示 A 是我真正想要捕获的音频数据,B 同时是回声。A 和 B 都被麦克风同时捕获。

我遇到的问题:在取消3、5和7时,音频2、4和6也被取消了。

这是我的代码:

0 投票
1 回答
116 浏览

wordpress - 将 PayPal 定期订阅从 Joomla 转移到 Wordpress

我正在将带有 Joomla /AEC 订阅管理器(带有 PayPal 定期付款)的网站迁移到带有 WPMU 会员插件http://premium.wpmudev.org/project/membership/的 Wordpress 。

我试图弄清楚是否有可能将经常性的贝宝付款从 AEC 迁移到 Wordpress,而无需用户在 Wordpress 上重新订阅(并寻找一些关于如何实现这一点的指针)。

如果需要,我们可以保持 joomla 数据完整。

感谢您的任何想法。

0 投票
0 回答
418 浏览

windows-phone-8 - WP8 上的 Speex AEC

我正在为 Windows Phone 8 开发 VoIP 应用程序,我想取消使用免提电话时产生的回声。Speex 提供了一个 AEC 模块,我尝试将其集成到我的应用程序中,但无济于事。我的应用程序工作正常,但回声仍然存在。我的代码基于 MS Chatterbox VoIP 应用程序,使用 WASAPI 进行捕获和渲染。这是相关部分的形式(我试图指出已经存在和工作的内容,以及新的内容):

在里面:

渲染(每 10 毫秒运行一次):

捕获(每 10 毫秒运行一次):

在阅读了 Speex 文档并查看了该站点上的一些帖子(Wp8 问题的 speex 不是很多,但 android 的问题很少)之后,我的印象是,这是或接近于他们的正确实施API。那么为什么它不起作用呢?

提前致谢

0 投票
1 回答
1295 浏览

android - 使用 WebRtcAecm 函数的正确方法

我试图了解如何正确使用两个 WebRtcAecm 函数。似乎有两个主要功能可用于移动设备上的回声消除。

第一个是WebRtcAecm_BufferFarend

我想这是我们传递从远程端接收到的音频数据的地方。当我们继续接收音频数据包时,我们是否继续调用此方法?此外,该函数是否会复制传入的缓冲区,以便我们可以为下一个数据包重用相同的缓冲区?

另一个功能是WebRtcAecm_Process

在 Internet 上的代码片段中,我看到同样的指针被用于 nearendNoisy 和 nearendClean。如果我们不进行任何噪声抑制,nearendClean 参数不应该为空吗?

最后,在两个不同的线程中调用这两个方法有什么问题吗?我们的远程音频接收器代码在一个线程中,而我们的麦克风监听器代码在另一个线程中。

预先感谢您的帮助。

0 投票
1 回答
40 浏览

android - 为什么get_capture_delay包含rsmp_delay,

伙计们。我正在为 android 研究 AEC,更具体地说,我正在为金枪鱼项目研究 HAL。代码: audio_hw.c

我发现 get_capture_delay 包含 rsmp_delay。我认为这不是真的。我相信 rsmp_delay 和 delay_ns 之间没有任何关系。因为 delay_ns 是通过缓冲的音频捕获数据(在 Linux 内核和 HAL 缓冲区中)和采样率计算的。

非常感谢您的大力帮助。

0 投票
1 回答
1666 浏览

webrtc - 使用 WebRTC 消除回声

之前用WebRTC的AEC模块做回声消除,现在遇到一个问题,当我点对点通信的时候,如果有一段时间没有人说话,再一个点说话,这个时候,回声会出现,如果一直有人说话,回声消除效果很好,我想知道,为什么一段时间没有人说话后会有回声。

感谢您的回复!

0 投票
0 回答
2181 浏览

android - Android 上的 WebRTC 回声消除。缓冲区太小

我在尝试使用 webRTC 在 android 上进行回声消除时遇到问题。我大部分时间都 在关注此处发布的项目,但是我正在尝试直接从远程设备流式传输。

当我这样做时,我得到了这个异常:

现在我深入研究了代码,发现采样器一次只能接受 80 或 160 个样本。为了弥补这一点,我尝试一次只获取 160 个样本,但这小于 AudioRecord 对象中的最小缓冲区大小并产生错误。

所以为了解决这个问题,我也尝试了这段代码,并将队列设置为一次最多只能传送 320 个字节(因为我们使用 2 个字节来表示短):

现在这应该缓冲每个 160 元素数组并将其传递给 WebRtc 库以执行回声消除。它似乎只是产生随机噪音。我也尝试反转结果数组的顺序,但仍会产生随机噪声。

有什么方法可以拆分声音样本并以 WebRTC 喜欢的方式使其听起来像原始声音?或者有没有办法让 WebRtc 一次接受更多样本?我认为两者都很好,但目前我有点卡住了。

0 投票
1 回答
1135 浏览

c++ - Speex AEC 仅去除部分回声

我尝试在 Qt 5.2.0 中使用 Speex Accoustic Echo Cancellation,但只有一部分回声被删除,它仍然存在。
这是我的测试(未针对内存管理进行优化)。它记录语音、消除回声并在 400 毫秒后播放,回声消除非常小。

知道我的代码哪里错了吗?