Wish: Voice control in Rhino?

Any chance to have voice control in Rhino? I’m sure that it can be implemented for a wide range or Rhino commands, but even if it’s limited to just snapping and viewport commands, that would still speed-up the work significantly. Not to mention that it will reduce the amount of frustration for many Rhino modelers. I have no idea why it’s not implemented yet. Voice control exists in many video games for more than two decades.

For example, if you have a microphone connected to the PC (or integrated one in the laptops) and say “Center snap”, Rhino will activate only the center snap while the remaining snap types will be temporarily disabled during the current command. If you say “Front”, Rhino will switch to front viewport. If you say “Shaded”, Rhino switches to shaded viewport.

Obviously, every human has a different voice and pronounces the words in a different way (especially people whose native language is not English), but Rhino could include setting to assign a certain word to certain command. So, if you say “Near” or “Niar” or “Neir”, Rhino will still activate the “Neat” snap as long as it was set to recognize “Neir” as “Near”.

If you want to do that there are/have been Windows tools for it, it’s been around since the early days of the PC. They’re just not popular because…well they’re just not popular. “Voice” isn’t a great form of interface navigation because you can’t “see” your options, people in an office don’t want to listen to everyone around them yapping commands, etc., who knows what the reasons are. Alexa and the like have started to achieve the first actual market penetration for voice activation, and they only work as well as they do because everything you say gets processed at a billion-dollar datacenter on software developed by teams bigger than all the developers in the entire CAD industry.

I guess that a very large amount of Rhino users are freelancers who don’t have co-workers or won’t annoy somebody at home or at the private office or home garage, so they definitely could take advantage of using voice commands.

Programming voice recognition functionality (somebody says a word to the microphone and Rhino understands it) is totally different than the advanced AI behind Alexa or Cortana that could translate between different languages in real-time or understand whole sentenses. Many video games with voice commands were programmed by 1-5 programmers total, and some of them were doing different kind of programming, such like: game engine, physics, graphic effects, etc.

I have a friend programmer who told me he could program such program with voice recognition translated to specific commands, but the problem is that it would be working in the Windows Explorer environment or any other active program by assigning those voice commands to keys or key combinations, which may cause unwanted results depending on the keyboard shortcuts of any given program (for example, the F3 key evokes Search in Windows Explorer, and F5 is Refresh, while in Rhino both of these keys have totally different functions). On the other hand, if the voice control functionality is made as a native part of Rhino, obviously it would accept only commands specific to Rhino (instead of key combinations) and won’t mess up with the Windows commands. I’m aware that there are some existing (and discontinued) programs for voice control, but they have the exact same limitation that I described above.

A Windows-level utility certainly can keep track of the context of the program they’re being called from.

There is a major difference. A voice control programmed to operate in the Windows environment will have to do it by assigning voice commands to certain keys or key combinations. On the other hand, Rhino-specific voice control will trigger native Rhino commands and won’t affect any keys or key combinations.

That’s not actually much of an issue, no. Just blindly sending key presses would work fine, Rhino’s already been built to support that for “command scripts,” and you can talk to it through the API if you really want.

Voice control is only going to catch on–and even then, I’m not sure–once it’s on the level of something made by Tony Stark. What you’re asking about is stuff that we could have been using for 30 years already if we really found it useful

What about VoiceAttack?

Well, free-form NURBS modelers like Alias and ICEM Surf (nowadays part of Catia) had advanced Class-A surface quality modeling and analysis tools more than two decades ago. Catia, Solidworks, NX and others have extremely powerful fillet edge engines that are far superior to the fillet edge in Rhino. I don’t think that the absence of these tools in Rhino 6 is caused by lack of interest from Rhino users. The same logic refers to the voice commands. Just because something well known in existence (and proven to work flawlessly in dozens of video games) is not yet implemented in a certain NURBS modeler does not mean it was considered useless for years by the users or developers of that particular software. I can also say the same for the “Sweep 3 rails” or robust “Patch” with up to G2 continuity found in other NURBS modelers, both of which are not yet implemented in Rhino. Maybe it’s more about prioritizing the time into developing tools that the McNeal team considers as more important than other ones. Yet another example is the absence of native weight analysis tool in Rhino, which is a strange decision for a program primarily targeted to design and engineering of boats, industrial products, architectural structures etc where the weight calculation and optimization are crucial part of the design process and manufacture.

Don’t get me wrong, I don’t say that Rhino is a bad program. I just say that functionality which is not yet implemented (like the many examples above) is not necessarily useless.

Also, as you know, Rhino is probably the most customizable NURBS modeler among the competitors and many of its functions are optional. That makes is very user-friendly and attracts new people into learning the program. Nobody would be forced to use voice commands should they exist in a future Rhino release. :slight_smile: