|
|
|
[
Permlink
| « Hide
]
Aylarov Alexey - [09/30/08 12:50 AM ]
I see Justin Everett has become an Assigne... That's cool, hope we will have AEC :-)
Lack of Echo Cancellation is one of the biggest issues for applications with live full-duplex audio.
Agreed with Robert -- accurate Echo Cancellation will greatly improve adoption of audio based communication applications. Without it, users require headphones making any application much more difficult to use.
I'd also like to note that this is not a new feature request. The "Microphone.setUseEchoSuppression" method already exists but does not fully or even noticibly removes echoes. Thank you.
Microphone.setUseEchoSuppression merely reduces gain.
Agreed with all this. It would also be very very interesting to integrate a "Push to Talk" feature in the Flash Player (Or AIR only) to be able to capture the pressing of < 1 Key > , even when the focus isn't on the AIR application (even within games). This would permit the user the bind a Key of his keyboard with the Microphone activation.
This would make it much easier to suggest Flex for two-way audio programs.
I've used the Speex AEC API before, and it works quite well (only tested on Windows, fair variety of audio devices). I'd also like to see the Speex noise removing preprocessor enabled as well.
I would second the vote from David Hogan about the Speex noise removing preprocessor. At Max 2008 there was plenty of talk from the stage about collaborative RIA technologies. Adobe showcased cocomo which looks great until you actually try and use the audio too. Without AEC FMS collaboration is impossible and forces collaboration through third party applications such as Skype. This feature makes audio usable in real world applications. Thanks Justin!
This has been a long awaited feature. The reason adobe is so strong on not releasing raw Mic access and echo cancellation support is surprisingly not because of lack of demand or technology/security barriers.
*Adobe already has full duplex echo cancellation support as part of their Adobe connect pro* (comes as an install within flash player). So they have everything inside but just dont want to release it for everyone. It's fair enough to keep their IP to themselves if they want to but they shouldn't be stopping people from building their own solutions on top of a platform which has become ubiquitous. (Remember IE / Windows fiasco ???) I think adobe should treat flash player as a great platform and let their products like connect / breeze compete against others who are developing collaborative solutions on the flash platform, on free grounds. Otherwise, it is an unfair advantage to let *only adobe* to have some special features via flash player platform. Having just had a look at Adobe Connect Pro, I have to agree with that last comment. This is clear anti-trust territory.
Step 1. Create a platform that reaches around 98% of browsers. Step 2. Create a plugin system that only Adobe can use. Step 3. Use said plugin and undocumented System.Product("connectaddin"); call to provide not only AEC but also native Screen Sharing support, preventing fair competition with independent vendors. Come on Adobe... This is clearly a conflict of interest. I am also quite interested in the fact that System.Product() is not supported in CS4 nor documented in the SWF file format specifications yet the format was deemed "open" some months back... Ok, because I really really really want AEC, I'd like to push as much info out about this as possible.Hopefully likeminded people will lobby Adobe on this issue.
Adobe has had AEC implemented since at least Flash 9,1,268,0 according to the Adobe Connect Pro web service files I have been trying to reverse engineer. The "plugin" that Adobe Connect Pro installs is a modified version of Flash Player. Seemingly 9.1.299.0. This version is installed even if you have Flash Player 10 installed in your system. This "plugin" version of the Flash Player runs in its own window and has better access to the system - namely screen sharing, enhanced support for AEC and I don't know if its exposed via flash but according to symbols in the executable, it may be able to run arbitrary programs on the host PC. The basic structure of these "Product Plugins" is straight forward enough and has been documented before (Macromedia Central). I guess Adobe Air might also use this but I am not certain. They are downloaded via a HTTP GET request to a well-known adobe address after the user clicks OK in a security dialog box. In this case the plugin is extracted and stored in C:\Users\<username>\AppData\Roaming\Macromedia\Flash Player\www.macromedia.com\bin\connectaddin\. Now comes the frustrating part. Since all flash tools and spec documents neglect to describe the class System.Product, I used swfmill to create the function call by hand and try to launch my own app using the plugin. Unfortunately, it turns out that the plugin's enhanced audio only applies to content loaded in a separate, non-browser window and that regular SWF's can't be loaded into this window. Rather, only SWF's wrapped with a valid Open SSL signature will be allowed to run in such a window. I am happy as larry to see that AEC has been implemented in flash and as disappointed as hell that it appears this feature has been held back across a major flash release. Theres been no official updates from Adobe as to this and I'd like to call upon Justin or anyone else in the know to explain the situation. Are we going to get access to this anytime soon or is promise of an open platform just a farce? Aaron,
Thanks for further elaborating on this issue. Your findings are interesting, so can this mysterious "plugin api" be used to invoke any apps. Do they have a clear api as to how the installed product plugin can access/feed in the flash player ? I don't mind to ask the user to click on a dialog and run the whole thing in a separate non-browser window. We can even get the swf signed, but is this all possible ? It would be greatly helpful if you, via a blog or a post, share more light on your findings with some references of code snippets. Is that possible? Thanks Siva. I second Siva's request if you would be so kind as to share that information with us. I'd be happy to help look into and share anything I find back with everyone. I'm sure there are others who would do the same.
Thank you, Eric But, it's really sad to hear that Adobe installs a "special version of flash player" only available for them and for their convenience. I suspect they should be in trouble pretty soon.
There is also a recent company called Octoshape to whom adobe gave rights to install plugins on flash player. I am hoping they will open up a bit more here... I've posted a long-winded explanation / rant on the following page. Would appreciate any sort of follow up communication on this also if anyone has any ideas...
http://www.lingonetwork.com/misc/adobe-s-mysterious-systemproduct-and-connect-pro/ Aaron, thanks for sharing the details of your experiment. Unfortunately, what you are doing is a bit advanced for me, so i can't pitch in. However, i do want to add my voice to those already here in support for AEC.
I am currently working for a company that has invested quite a lot of funds, time and effort in developing an application that runs on the FMS and they are ready to walk away and redevelop on another platform because of this very issue... we need AEC. I'm doing the best i can using Speex and the limited options that exist, but it may not be enough. I would certainly love to see someone from Adobe take note of this discussion and provide some updated information on the state of AEC... or allow us some way of implementing this feature now, like they have done for themselves. Aaron,
Excellent post - summarizes everything very well, although it seems like a dead-end path unless someone has adobe's private key :D Now, Octoshape (most of the channels like CNN use their plugin to stream live content) is a p2p video devliery platform which uses adobe's "addin architecture" to deliver their software. Now, guess what, adobe is their partnet/investor and what not. I really hope that someone from adobe responds on this post and gives some reasonable explanation. Their media explanation http://www.flashmagazine.com/news/detail/plugins_for_the_flash_player/ sounds very uncomfortable - "Adobe is trialing their software". They made it sound like their lab experiment ignoring a small minor issue that millions of people become part of their so called "trial". It's just that I was AEC so badly that I am sounding harsh here, but adobe should allow for a fair play here - I am now really intrigued to ask them what it takes to be a "partner" even better, I could use some investment too if that comes with AEC :) Siva. Hmmm. Good find with that article. It sums the System.Product() "feature" up quite well. It must have been removed from the flash authoring tools in either CS3 or CS4 because I vaugely remember trying it in an earlier release and it worked... In any case, I think we're all quite frustrated at the lack of AEC and the lack of communication about it. We've all been waiting for a long time and as others have said, its a critical issue when dealing with live meeting based RIA's.
I just hope I can stir up enough of a mob to get some attention around this issue. Yet the AEC support is not available. It's very hard for developers to deal with such situations.
Hope will get some solution for that !! Thanks Bharat I wrote a microphone driver for linux this weekend with Speex and used the preprocessor background noise cancellation, AEC, and VAD detection. It seemed like it would be a pretty easy addition to the player. Overall I could not notice any CPU change with this functionality which makes me assume that it would work on most platforms that Flash is deployed.
AEC http://speex.org/docs/manual/speex-manual/node7.html#SECTION00740000000000000000 Pre Processor de-noising http://speex.org/docs/manual/speex-manual/node7.html#SECTION00730000000000000000 SPEEX_PREPROCESS_SET_DENOISE (1) I also added the Voice Activity Detection which is pretty slick! Makes it sound a little more like a wacky talky but total eliminates any background noise. This is the equivalent of an automated push to talk button on your flash application. | ||||||||||||||||||||||||||||||||||||||