Behavior, Content, Money – 3 Things you should never give away for free!!!

BCmoney MobileTV

Noise Isolation .vs. Cancellation .vs. Reduction – protect your ears and work in peace & quiet

Posted by bcmoney on August 14, 2017 in E-Learning, Multimedia with No Comments


No Gravatar

Most of the time, Developers’ day-to-day jobs can be a bit stressful. With tight deadlines, high expectations, and often unwieldy applications/codebases to manage, you can see how there really is a need to be able to concentrate in order to succeed in this role. Of course, this applies to non-technical roles as well, but in particular you want to maximize the productivity of those building your company’s mission critical applications, products and services. That’s of course assuming whatever industry you’re in, those have already been in some way affected by the pervasiveness of the internet, always-on mobile devices and constantly adapting technology in all its various forms. For instance, the frequent headlines about how modern cars now contain more lines of code than airplanes (not just the passenger/cargo planes, even when compared to military fighter jets).

Noise Isolation

Noise Isolation means that the headphones, earphones or similar device is ergonomically designed to block out as much noise as possible from entering the ear canal through careful selection of optimum construction materials and muffling/insulation layers. It does not do much to block low-level surrounding noise and does not make use of any power or electronics to do “Active” blocking of noise. This “Passive Noise minimization” approach typically does not offer much if any protection to your ears against loud noises, but can definitely help your podcasts, audiobooks, music, radio, E-Learning courses, etc take over from the ambient and background noises in your office or around your home.

Ideal usage: task concentration, or, distraction-free multi-tasking

Noise Cancellation

Also known as Active Noise Control (ANC), or active noise reduction, is a method for reducing unwanted sound by the addition of a second sound specifically designed to cancel the first.

Idea usage: …

Noise Reduction

NRR rating for protecting your ears from sudden loud noises.

Idea usage: …

 

Conclusion

Check out the video below for a nice overview of the difference certain Noise Cancelling technologies make to the sound you hear with and without music:

Speech Recognition – Nuance’s Dragon NaturallySpeaking 14

Posted by bcmoney on August 26, 2015 in Multimedia, Semantic Web, Web Services with No Comments


No Gravatar
A sample dictation in Microsoft Word 2010.

A sample dictation in Microsoft Word 2010. (Photo credit: Wikipedia)

They often call it Voice Recognition in Nuance’s marketing and promotional material, which doesn’t help the average user to have clarity about what exactly the product’s capabilities are, but in fact up until recently Nuance’s suite of Audio Recognition software has strictly been focused on Speech Recognition.

As such, they have emerged as one of the industry leaders in this field, now on version 14 of their flagship product Dragon NaturallySpeaking.

Nuance/Dragon Company Histories

They certainly have history on their side, the first academic iteration being created in 1975 by Dr. James Baker at the University of Carnegie Mellon in a partnership with IBM Thomas J. Watson Research Center. The prototype reached a “beta version” by 1982 when Dr. Baker left the University to start a company with his wife focusing on commercializing the DRAGON system they developed together. Due to financial struggles and a desire to improve the underlying recognition engine before entering the consumer market, the first 1.0 production-grade version was, however, not released until June of 1997. The company went through financial turmoil and several mergers & acquisitions, but the common theme was that investors and consumers were truly interested in the products and services that Dragon would make possible. It would finally find its stride when an Optical Character Recognition (OCR) and document scanning company with ties to infamous futurist Ray Kurzweil called ScanSoft acquired the Dragon assets, and then merged them with another fledgling Speech Recognition company named Nuance Communications which itself also had roots in academia through SRI’s STAR laboratory.

Mainstream Breakthroughs

The following products/partnerships are the key

  • Dragon NaturallySpeaking 9 achieves above >90% recognition with training
  • Dragon NaturallySpeaking 11 achieves above >90% recognition without training
  • Dragon Medical
  • Dragon Legal
  • Dragon Dictate iOS app
  • LG Smart TV 2012
  • Siri project/company partnership (speech recognition powered by Nuance/Dragon)
  • Siri sale to Apple for iOS integration
  • Apple Mac OSX

They’ve also recently announced that they would after many years of requests be opening up their software’s capabilities as a broader platform via publishing APIs and inter-connectable Web Services which other developers can use to build Speech Recognition into their own applications.

Nuance’s Dragon NaturallySpeaking – Voice Command Cheat Sheet

https://www.nuance.com/content/dam/nuance/en_us/collateral/dragon/command-cheat-sheet/ct-dragon-professional-individual-en-us.pdf

Audio Recognition overview (TTS, STT, Voice .vs. Speech)

Posted by bcmoney on July 16, 2015 in Multimedia, Semantic Web, Web Services with No Comments


No Gravatar
English: A Yeti brand, USB microphone by Blue ...

Yeti brand of USB microphone by the “Blue Microphones” company. (Photo credit: Wikipedia)

It is still in many ways the early days of innovation in the several sub-categories of Audio Recognition.

Microphones

Thanks to technological advancements, microphones have become smaller and smaller (perhaps to some extent this has been driven by the post-war and Cold War eras where espionage became so critical, so governments worldwide competed producing better and better audio recording technologies). Either way, a good Microphone is the key technology to ensuring high-quality accuracy & results. While software solutions are increasingly capable of making due with embedded microphones (such as the commodity grade ones that tend to come installed in Mobile Phones, Laptops or other devices), a good external Microphone is essential for high accuracy. Examples of external microphones include wearable headsets or standalone mics connected via Bluetooth, USB cable or Analog/Digital cords. The technology has now improved to the point that the average person can produce audio on par with that of major production studios, all within a reasonable budget.

Speech Recognition

What was said?

Bell Labs pioneered advancements in this area with the creation of the first Text-To-Speech (TTS) technologies, and later Speech-To-Text (STT) during part of their ____ projects in the 19??’s.

 

Voice Recognition

Who said it?

Security companies have started adding Voice Recognition capabilities to their systems since _____ .

 

Agents

Something the Semantic Web promised but had not initially delivered on was an emergence of Intelligent Agents (i.e. code-powered Personal Assistants). Today, we finally see some of this promise being realized through things like Siri by Apple, Cortana by Microsoft, “Now!” by Google and Alexa/Echo by Amazon.

 

Web APIs

Microsoft has offered Windows-specific OS-level Speech API (SAPI) since WindowsXP and developers have been integrating Voice/Speech into their Windows apps for a while now, but now it will soon also offer web-based APIs through the announcement of “Project Oxford”. Project Oxford is aimed at building a set of intelligent services to support information retrieval which can optionally tie into the Bing Search APIs (which supports queries by content type including Web, News, Images, Video, )

 

 

JS Podcatcher (a Podcast client written in JavaScript)

Posted by bcmoney on November 29, 2014 in HTML, JavaScript, Multimedia, TV with No Comments


No Gravatar
English: The "Made for iPod, iPhone, iPad...

English: The “Made for iPod, iPhone, iPad” emblem appearing on accessories approved by Apple Inc. for iPod, iPhone, and iPad. (Photo credit: Wikipedia)

So just this month my 5-year old iPhone3GS finally bit the dust. I had been hanging on and managed to extend its life well beyond its 3-year Telco contract (which I immediately cancelled the day I was out) by pairing it with a MiFi hotspot for much cheaper VoIP-based calling and using data-intensive applications only when on WiFi. That trusty iPhone3GS made it through a major liquid submersion (thanks to the good folks at Atlantic Cell Phone Repair) two cracked screens (thanks to the good folks at iCracked). At some point I may even replace the screen again, which is what’s gone a third time. I’m pretty stubborn though, and now that I’ve finished off my Mobile contract for the MiFi as well, pretty much at all costs I really didn’t want to have to buy another discounted device which usually requires one to agree to the terms of a foolishly one-sided/restrictive 2-year or 3-year contract; likewise, I really don’t want to shell out anywhere near the full asking price in the $500-$1000 price range for a new smartphone. So it’s either go back to my old Nokia flip-phone and live in the early 2000’s on a basic voice-calling only plan, or, hack my old 4th generation iPod Touch into something with phone call abilities. Of course, I opted for the latter!

iPhone 3G and iPod Classic 5G.

iPhone 3G and iPod Classic 5G. (Photo credit: Wikipedia)

Luckily thanks to an excellent VoIP app called BRIA (of which a 4th gen. iOS 4 version is still available in the iTunes App Store), I was able to continue doing voice calling by using my Anveo VoIP service (highly recommend this low-cost VoIP provider, please enter Referral Code 5334764 if registering). I was already using Anveo through BRIA on the iPhone, over MiFi when on-the-go, for over a year and a half since I got out of that first contract. I’ve described Anveo in great detail in “My Experiment in Cutting Cords (and costs) with VoIP” where I went over setting the VoIP service up on an iPhone (with BRIA app) and just how much could actually be saved per month by taking the plunge and switching to VoIP instead of a traditional Telco calling/data plan. I’ve found that with a little patience and using replacements (such as Slingplayer in place of Bell MobileTV, or, SoundHound in place of Shazam) along with some occasional disappointment (can’t get older versions of Netflix, Skype, Fitocracy, and several other top apps), I was able to get a good amount (about half) of the apps I was most frequently using on my iPhone3GS, downloaded to the iPod4th gen, in their older iOS 4-supported versions.

One somewhat irreplaceable app though that I just simply could not find, nor find a replacement for was the basic “Podcasts” app built by Apple (common alternatives such as Overcast, Downcast, TuneIN, Slacker, and even RSSradio all did not work on my device either). I mean, seriously Apple, WTF!? Even the very first iPod devices were within a few years of their release to become known as the cannonical “Podcatcher” (Podcatcher means a podcast downloader/player).

The term “podcasting” itself was first mentioned by Ben Hammersley in a February 2004 article in The Guardian newspaper as a portmanteau of the words “pod”, from the success in consumerizing digital music with the “iPod” line of Apple products and “broadcast” (as in traditonal Radio/TV broadcasting to many receivers over a wide area, constantly). As such, the native “Podcasts” app has been around since the early days, as Podcatching (better known as receiving and listening to Podcasts), became one of the main functions of iPods just as it continues to be a core functionality on the many other iOS devices. Why then, are older (iOS < 6) versions of the Podcasts app not still available through the iTunes App Store? The app existed back then, for those devices, and now its just plain unavailable it seems. Why not keep the old versions around? What if a legacy iPod user (anyone still on iOS 4 or lower for that matter) accidentally wipes or restores their device to factory settings? Tough luck if they didn’t store a backup that had that legacy version of the app which still runs on their device. This is an example of planned obsolescence at its worst!!!

Apple be damned, could the Podcast app’s functionality be replaced with a quickly hacked together web app though? Being a developer, that’s the question I wanted an answer to. So I realized it definitely should be doable, as Podcasts to me have always simply been RSS news feeds with links to Audio files embedded in them in a variety of ways. Thanks to Apple’s aforementioned “Podcatching” dominance, and iTunes’ position of oligopoly, Podcasts also need to be garnished with plenty of Apple-specific syntactic metadata to satisfy the behemoth that is the iTunes Store and rank better therein, so have to be able to parse that crap too.

All that to set the context for this experiment, which aims to concisely (I promise hah, from here on) describe how I took my original RSS parser from the post “RSS Reader in jQuery .vs. JavaScript”) on using JavaScript and/or jQuery to implement an RSS news reader, and modified it a few weeks ago to allow me to read the media links and embed codes.

Read the rest of this entry »

Animations on the web – Applets .vs. Flash .vs. SVG .vs. setTimeout .vs. jQuery.animate .vs. requestAnimationFrame .vs. CSS3 animations

Posted by bcmoney on October 23, 2014 in CSS, Flash, Java, JavaScript, Multimedia with No Comments


No Gravatar

In a follow-up to my prior article on Interactive Graphics on the web from a few years back, today I’ll be looking a bit closer at the latest Animation options on the web.

Animations have always been the specialty of Flash and before that pioneered by Java Applets on the web, but with the introduction of HTML5 and CSS3 things are sure changing fast!

This post is a quick round-up of the leading approaches to do something that a decade ago when I was first learning to develop I would have had trouble believing were even possible without a plugin/tool like Flash or Java. That is to simply move a box around through animation, moving it from left-to-right (but could be any direction) across the screen perpetually within a user’s browser, with simple controls to control the starting and stopping of the animation.

Java Applets

Historically the first (and back then pretty much only) way to accomplish your dynamic and interactive content needs, Java Applets offered the ability to code “Rich Internet Applications” in Java, similar to what it could already do on the Desktop via AWT GUIs, but run them on the web in the user’s browser client.

-or-

This loses alot of marks because of the sorry state of Java plugins and security issues since Oracle took over from Sun Microsystems and seemingly de-prioritized Java’s RIA features in favour of backend and enterprise parts of the stack which have a closer potential tie-in to its database and related products/services. Its also more cumbersome as it depends on the Java Runtime Environment (JRE) being installed to work, along with a Java browser plugin (IcedTea for OpenJDK or JavaWebStart for Sun/Oracle) so it would not work on a majority of mobile devices without rooting the device and layering in Java support (if even possible – depending on device type it may not be).

Many legacy devices do run Java Mobile/Micro Edition (JME) already, but the average user would have trouble even with some of the installer tools out there. Users also grow tiresome of the constant updates, warnings and security concerns that Applets present in the browser. Java in the browser lives on in the form of JavaFX and JNLP app launchers, but Applets are on their way out slowly but surely.

Score: 2.5/10 (I recall being wowed when I first saw dynamic and highly interactive content being rendered by Java, but have to admit the web has changed a lot since the 1990s).

Flash

Shortly after the debut of Applets, Macromedia launched their web-version of Shockwave (later Flash). Flash used a concept of “Motion tweens” where you basically draw out by hand the path that you want the animation to take, and the Flash plugin/player takes over and renders the desired motion path on your graphic objects, the desired number of times (or endlessly on a cycle).

-or-

This can be quite performant on Desktop devices that have the Flash plugin installed and enabled (most Computer browsers at this point in time), however not so much on Mobile devices. Also, thanks to Steve Jobs’ infamous statement that he’d never allow Flash on the iPhone due to its known security and performance issues on mobile (FlashLite), it may never be the case that you can rely on Flash to hit a majority of mobile browsers. This could still be a decent option however, if you’re already invested heavily in the Flash stack and/or Flex framework for your multimedia needs, and are ok focusing on Computer users. With Flash suffering pretty much as many security issues of late as old school Java Applets, I’m guessing most Developers are rejoicing with the other options emerging.

Score: 3/10 (I also have fond mostly painful memories struggling to get my first “motion tween” working in Flash Studio 2004; again, the web is moving to more built-in options for animation needs as we’ll soon see, but for a quick one-off this is still a viable option for a few more years, as long as you don’t need to support iPhone users).

SVG

Scalable Vector Graphics (SVG) is one of the up-and-coming mechanisms for multimedia on the web. I recall when it was initially being pushed by W3C in the early 2000s, but at that time, you needed a dedicated browser extension just to render the SVG. Later, JavaScript cross-browser polyfills and libraries like Raphael.JS, Processing, and D3 emerged which built heavily on SVG (or supported it as a primary export format).

The

https://output.jsbin.com/bubabil

Score: 4/10 (I also have fond mostly painful memories struggling to get my first “motion tween” working, again, the web is moving to more built-in options for animation needs)

setTimeout

This approach in vanilla JS uses a combination of “setTimeout” and “clearTimeout” (along with a helper “global variable” you can’t really get around).

-or-

The problem is that first of all its fairly obviously laggy due to rounding errors in the calculation of nanoseconds (basically the timer is leaky and gets compoundingly inaccurate the longer it runs); but worst of all, if left running in an idle window too long it can become even further janky, jump all over the place, and consume too many resources causing the Tab to crash. This is not a viable animation option unless you are detecting the “active” state of the browser client to ensure the animation is only played when the user is actively on the page and interacting within the desired content regions such that its worth showing the anitmation. Even then, there’s no guarantee it will work equally well across Mobile and Desktop browsers.

Score: 5.5/10 (cool idea that it’s possible, but not the best approach for serious uses)

jQuery.animate();

This is probably the leading go-to answer if you ask StackOverflow, as usual, the Dev community seems to prefer to hand-off the cross-browser edge cases to jQuery which “usually” performs reasonably well. This makes sense, why reinvent the wheel? In this case though, this solution too will lead to jankyness if you leave it running over longer periods of time, but not nearly as wildly as the first setTimeout example without jQuery, as jQuery’s $.animate() doesn’t suffer from the same nanosecond rounding errors as setTimeout does.

-or-

Score: 7/10 (convenient enough, but still not even close to the best performing approach)

requestAnimationFrame();

This is the new HTML5 + JavaScript option that was previously not available. Depending on your target browsers, you may want to check its availability, but its shipping in Firefox, Chrome, Safari and even IE 10+ now, so it should be ready for prime time!

It performs better because it uses purpose-built animation APIs rather than relying on the single client-thread’s timer to continue running and stay accurate, or, and cludgy browser workarounds and approximations that attempt to overcome this with the jQuery.animate() approach.

-or-

The only downsides here, is that for now, its still a bunch of extra code to ensure you’re covering all the browsers with cross-browser vendor prefixes, other than that its fairly smooth and fluid, handily beating both the vanilla JS setTimeout and jQuery.animate optons.

Score: 8.5/10 (convenient enough, but still not even close to the best performing approach)

CSS3 Animations

Last, but certainly not least, what I’m probably most excited about is CSS3 Animations, natively within the browser… I mean how crazy is that?! This stuff would have been unheard of a few short years ago.

-or-

Ok so while not totally 100% CSS3 only, we need at least a tiny snippet of JS just to control the currently active class based on the desired state of the animation, toggling the starting of the motion through a class called “running” being added, and stopping of the motion through a class called “paused” being swapped out instead. Still, I found this pretty impressive once I realized the possibilities of CSS3 Animations & Transitions… the future will be interesting.

Score: 9.5/10 (I might be biased on this one, but I’m blown away by the fact this can now be done in CSS!)

Just to be comprehensive I’ll at least mention there’s also other options like Animated GIFs, VRML/X3D, Canvas, JavaFX, Flex, Silverlight, Unity, and even WebGL; but for practical animation needs, and programmatic access to control the animation, those listed above are the most accessible and sensible options for developers today.

BC$ = Behavior, Content, Money

The goal of the BC$ project is to raise awareness and make changes with respect to the three pillars of information freedom - Behavior (pursuit of interests and passions), Content (sharing/exchanging ideas in various formats), Money (fairness and accessibility) - bringing to light the fact that:

1. We regularly hand over our browser histories, search histories and daily online activities to companies that want our money, or, to benefit from our use of their services with lucrative ad deals or sales of personal information.

2. We create and/or consume interesting content on their services, but we aren't adequately rewarded for our creative efforts or loyalty.

3. We pay money to be connected online (and possibly also over mobile), yet we lose both time and money by allowing companies to market to us with unsolicited advertisements, irrelevant product offers and unfairly structured service pricing plans.

  • Archives