Java is used in a huge range of different devices. The IoT is hot and a whole lot of devices use Java in one form or another. And yet, the Java platform keeps surprising me every now and then. Parts of Java evolve over the years from being “not so good” to “a very robust part of java”. This post contains two of todays sessions which surprised me in a good way.
Speech Recognition in Java
Speech recognition in general is a very difficult thing to get working correctly. Listening to people talking comes naturally to humans. Our brain handles different languages and dialect. This is one thing we can make a program do. It has evolved over the last couple of years. Old speech recognition software had huge failure rates in understanding humans. Failure rates of over 25% in understanding and interpreting an human were very common. Current speech recognition software has evolved greatly in the last couple of years. This has to do with a better understanding, less pre-processing of input (RAW data usage is more common). Failure rates are very well below the 10% . Speech recognition works best when it is context defendant. Meaning that it has to know what window is opened, and knowing what type of options (could) be presented in such a window
For java, there are several libraries that can help you in recognizing speech input. Libraries like dl4j, H2O and Sphinx4 help you in machine learning and speech recognition. One of the hard parts in making a program understand a human by speech is the learning process. Learning the speech and speech patterns to a program is time consuming, taking several months to make it understand a human and are called acoustic models. There are several acoustic models already created, which can be downloaded here.
The session ended with a rather cool demo. The speaker was Breandan Considine from JetBrains, the company behind IntelliJ IDEA and a couple of his colleagues. They created an application which could control the IDEA. Switching between different windows, selecting a word, a line and the entire block between curly braces, running a server. Although speech recognition is a difficult subject, it is very interesting to create an application yourself with the given resources and just give it a go. You can get started with Sphinx4 by following tutorial http://cmusphinx.sourceforge.net/wiki/tutorialsphinx4/.
The power of JavaFX and how NASA uses it for mission control
A lot of people still think bad of JavaFX. This ‘hate’ of it is based on the bad start in had back when it was JavaFX1. JavaFX has grown to be a very powerful tool for creating User Interfaces. Most people, when thinking of UIs think about ‘classic’ applications with panels, frames etc. The presentation, given by Sean Phillips showed the power of JavaFX. The application shown used several default tools given by JavaFX, for example some charts, being used in a less conventional way. Handling well over 150.000 points in one view in a chart Is awesome to see, even more so when processing these works as fast as shown. There were cases, like the Deep Space Trajectory Explorer which requires even more computing power, well beyond the reach of default JavaFX capabilities. For those cases, they re-invented the wheel and wrote their own way of rendering and handling the data.
The best way to see what the result of their work was, is by going to their YouTube page and watch several of their videos. They used several libraries to add extra functionality, like control items to their applications. The libraries mentioned are ControlsFX for additional control items and FXyz for rendering in 3D with additional controls and data visualization.
A large portion of the session was dedicated to scientific information about object trajectories in space, which is a nice plus. The other part was about their application, and pictures says more than thousand words, just look at the video above to see the power of JavaFX. Can you imagine seeing a demo with that kind of cool data visualization? It is awesome! Sean is a terrific speaker with a lot of enthusiasm from whom I’d attend his presentations next time I have the chance. This session has been a trigger, for me, to take a new look at JavaFX and clear my mind of negative thoughts I had about it beforehand.