使用本机库在Flash / Flex中进行声学回声消除

时间:2010-02-04 07:56:14

标签: flex flash audio echo speex

我必须在Flex视频会议应用程序中实现AEC。我知道它不能直接在Flash中完成。我正在考虑编写一个本地应用程序或库,它将在Flex之外执行AEC。

据我所知,Adobe Connect Pro正在使用一些执行AEC的外部库。我想按照这个方向做一些类似的事情。

我脑子里有两种可能性:

1)独立自定义AEC过滤器。

自定义AEC过滤器将在后台运行,并将处理来自麦克风和声卡的所有数据并执行AEC。回声信号将是要播放但在临时缓冲区中延迟的数据,如下所示:aec(input,delayed_input,output)。

我不知道它是否有效,因为Flash麦克风输入不知道我的自定义输入和扬声器相同。但是在WinXP / Vista中如何在系统级别上安装AEC?

2)AEC过滤器与Flex的NativeProcess交互。

过滤器将由NativeProcess运行。 Flex应用程序将通过麦克风声音,接收远程语音到过滤器并返回声音并删除回声,然后Flex将其输出到扬声器。它会是正确的吗?

如果2)方法没问题,那么我有以下问题:

  1. 我将从Speex的AEC开始,那么Flex的数据格式应该是什么格式?如果我选择Flex Speex编解码器进行声音压缩,我可以将它直接传递给speex库吗?
  2. 性能还好吗?我认为,每个声音帧缓冲区调用NativeProcess库都会非常耗时。
  3. 为什么AS3中没有可以直接从Flash使用的AEC实现?据我所知,做AEC你必须有回声数据和麦克风数据(在Flash 10中可以直接访问麦克风)。肯定有一些东西停止这样做,但我不知道它是什么:)
  4. 除了我可以使用的Speex之外,是否有一些免费的AEC实现或DSP库?
  5. PS我现在是Flash / Flex专家,对于一些愚蠢的问题感到抱歉:)

    提前感谢您的帮助, ternyk

2 个答案:

答案 0 :(得分:2)

好消息 - 它现已内置于Flash Player 10.3中:)阅读发行说明并确保针对Flex 4.5 SDK进行编译

答案 1 :(得分:1)

在Java中,AEC是可能的,您可以使用Merpi访问AIR中的java功能。 也许你应该试试这个。

由于