Fortunately, OpenCV provides functions to train your own classifier using your own data, so if you can get good data, and are willing to wait for the week or two it'll take to process, you can get much better performance using the same technique.
Finding sufficient training data (labeled faces) is more tricky. For an automated approach, you could try bootstrapping it by simply running a more state-of-the-art detector (such as on Facebook, Google, etc.) and feedings the outputs into the training function (you'll need to do some work to actually get the outputs programmatically, perhaps through undocumented APIs).
Another approach is to use an existing face dataset. One possibility is the FDDB [1] although it's kind of small (5171 faces). Unfortunately, most other datasets I know of in the face community are either unrealistic images (e.g., only "mugshot"-style) or were detected using OpenCV (and thus won't help you get better).
The final approach is to label images yourself, which would require time and money (e.g., to do it on Amazon Mechanical Turk).
If you do decide to retrain classifiers, it's essential that you augment your data in various ways, such as by mirroring images (and labels) left/right, generating slightly rotated versions of faces, and at slightly different sizes. This augmentation can GREATLY improve the performance of your detector.
As a research scientist at a company whose main product is face recognition software I have to disagree with this part of the statement.
What I mean is this is a client-side javascript library, so it is meant to work in the browser on who knows how powerful hardware.
There may be facial recognition libraries that work very well in real time, but how powerful of hardware is required?
And the other big question, are they proprietary algorithms or open-source?