“Jeeves”, I say.
“Can you take a still so I can remember this moment of me holding a gin and tonic?”
Jeeves doesn’t respond. Only an awkward silence to make the drink feel like a pint of stale water.
“What ho Jeeves?”
Still no response.
“Jeeves, have you turned the old blind ear to a straight forward query.”
There are three issues that I thought needed my attention. As mentioned in earlier posts, Jeeves ability to respond heavily relies on a connection to the internet and Google’s Test to Speech services being up and running. What was a man to do if the internet failed or Google decided to decommission their Text to Speech Services? Lastly, what can I do to get Jeeves to take a picture?
The first of the the issues was easy to remedy. On start up, I did a quick check to see if the application can reach a static internet address. If it could, voila, internet is up and running. I’d have to agree that this is not the best solution as the internet could go down while operational and then I’d not be able to do a check. But a quick test non the less.
The second issue was a bit of a testing one indeed. How to get Jeeves to respond if there were no Google Text to Speech services? A long came Mary, that is MaryTTS. Without having to repeat what is clearly stated on their website, here is a description : “MARY is an open-source, multilingual Text-to-Speech Synthesis platform written in Java. It was originally developed as a collaborative project of DFKI‘s Language Technology lab and the Institute of Phonetics at Saarland University and is now being maintained by DFKI.”
Setting up MaryTTS was a bit of trial and error but I soon had it running. The only problem was that the synthesized voice was rather dreadful. So I had to install another one. Now that was an issue. Nevertheless I now have an offline response service running. You can check out an online demo of MaryTTS here : http://mary.dfki.de:59125/
The last issue to cover was to make Jeeves “see”. For that I thought I’d use the laptop’s web camera. So the opensource library search started all over again, but this time it was for the visual and not the auditory. After a few hours of mucking around with different libraries, I crossed path with one that was worth using and it is simply named “Webcam Capture in Java – Generic Webcam Java Utility”. It can be found here. Jeeves can now switch on a web camera, switch to a different web camera if there are more than one installed, and lastly take a picture. I do have a bone to pick with ol’ Jeeves as it looks like it doesn’t quite shutdown the camera when you close the connection to it. The little light next to the camera is still on and I fear the built in mic will also still be operational.
So with time to spare I thought to myself, “Myself, what else can I bundle up and throw into the mixing bowl?”
Well if you recall, a while ago I built a 3D printed skeleton head made movable by servos. Well if your memory falls short, here is one of the two video clips to jog the old pit.
So I got my hands on a Pololu – Micro Maestro 6 channel servo controller and hooked the old boy up.
Here is a picture of the controller.
After an hour or two of code, I got the skeleton head to move on voice responses. I was pretty pleased with myself, but not sure I will keep this setup as the servos are quite noisy.
O well, though I might not keep the moving head as part of Jeeves, I do now have a Servo controller service able to interact with the Maestro controllers.