PDA

View Full Version : Anyone working on a voice command plugin for Girder 4?



hunkster
November 26th, 2005, 05:16 AM
You would no longer be limited to the amount of buttons on your remote. Anyone good at voice recognition?

Promixis
November 26th, 2005, 07:15 AM
its on the to do list ;)

I do wonder if the G3 plugin will work for now?

tscales
January 2nd, 2006, 12:54 PM
its on the to do list ;)

I do wonder if the G3 plugin will work for now?

Yes, it will work fine with a caveat.

It looks for the XML file (the speech definitions) using a Girder3 reg key. You either need to move the XML to the root of the drive (since the key is empty) or preferably add the key:

\\HKEY_LOCALMACHINE\SOFTWARE\Girder3\

and make a string constant PlugInDir="dir where you put the XML".

Tom

squelsh
February 28th, 2006, 08:07 AM
I started a voice recognition plugin based on Microsoft Speech-API.
But I had no time to get it really working.
I still have the sources here, if someeon likes to continue my work...

Promixis
February 28th, 2006, 03:32 PM
maybe post them here and see if anyone runs with it :)

gbumgard
March 27th, 2006, 04:24 PM
I know this thread is little old, but I started on such a plugin a year or two ago. My plugin was to support both Microsoft MAPI and TAPI interfaces and use VoiceXML for config.

I've just started looking into converting what I had completed previously over to Girder 4.

I'll post an update as soon I as have more info on design and progress.

Promixis
March 27th, 2006, 05:07 PM
I know this thread is little old, but I started on such a plugin a year or two ago. My plugin was to support both Microsoft MAPI and TAPI interfaces and use VoiceXML for config.

I've just started looking into converting what I had completed previously over to Girder 4.

I'll post an update as soon I as have more info on design and progress.

very cool. VoiceXML -> some neat stuff

let us know if how/if we can help out.

gbumgard
April 9th, 2006, 10:00 PM
Still coding away. I had an implementation that supported a single recognizer/context/grammar working last week. I've now redesigned the architecture to allow for multiple recognizers/contexts/grammars to support applications requiring recognition on multiple audio sources, with event generation for multiple simultaneous command and control and dictation grammars. I just finished up most of the plugin configuration code and am now preparing to cut & paste the code used to instantiate all of the various SAPI objects. I'm hoping to be generating events with the new implementation in the next few days.

The current implementation will not support VoiceXML. I will use the SAPI XML format for describing context free grammars (command & control). VoiceXML support may or may not be added at some point...

-g.b.

gbumgard
April 22nd, 2006, 02:48 AM
My new voice command plugin is just about done. All of the forms, actions, and events I intend include in the first release are working. I still need to do something about providing lua support. I'm currently working on some sample grammar and gml files. I hope to finish those within a few days.

A brief description of the plugin:

The plugin supports multiple recognizers, contexts, and grammars. By providing a means for creating multiple instances of these SAPI objects, the plugin allows you to perform simultaneous voice recognition on multiple audio sources, using different user training profiles and multiple grammars (subject to CPU bandwidth limitations).

The plugin presently generates the following events:
- Sound started
- Interference detected
- Recognition(phrase) started
- Hypothesis generated
- Sound stopped
- Phrase recognized (command and control or dictation)
- Rule recognized (during hypthesis or at phrase recognition)
- Phrase not recognized
- Phrase recognized in another context
- Property set or changed

Unlike Burkheart's original plugin (which inpired me to start this project a couple of years ago), the rule recognition events are generated for all rules that are recognized during a single phrase recognition event, not just top-level rules.

All of these events carry some sort of payload, and in the case of phrase and rule recognition events, the payload contains a number of strings used to identify the rules, phrase elements, and confidence levels that form the complete recognition event.

The plugin supports the following actions:
- Set recognizer state
- Set user training profile
- Set audio input source
- Set context state
- Pause recognition
- Resume recognition
- Select context events (filters events)
- Load command and control grammar (from file)
- Set grammar state
- Set grammar rule state (enable or disable top-level rules)
- Load dictation topic (general or spelling)
- Unload dictation topic
- Set dictation state

I'm currently working on a grammar/gml example that implements a "voice" remote that generates the predefined remote control eventstrings.

More later...

-g.b.

Rob H
April 22nd, 2006, 04:49 AM
Excellent! Looking forward to playing with this.

Promixis
April 22nd, 2006, 07:47 AM
Excellent! Looking forward to playing with this.

absolutely ;)

I am wishing I ran more wire in my house for microphones

Anyone know of some good open air mics?

gbumgard
April 22nd, 2006, 02:19 PM
Unfortunately, voice recognition works best with a headset, but I'm going try out a pro-quality directional mic I have to see how that works

These are spendy, but this is kind of mic to use for open air voice recognition:
http://www.acousticmagic.com/products/

I'm thinking about buying one to try it out.

As for wiring rooms, you could get a USB sound device. I have a Geffen IMic that I use for testing multiple audio sources. It also has audio out which could be used with some satellite speakers for voice response. If you have your house wired for LAN, you can get an inexpensive USB network adapter and access the USB audio over your network (I use one of these for a slikstick arcade controller for MAME). If you have wireless, you could use an 802.11 repeater to extend your network into rooms where you have no wiring. A setup like this would start to get a little expensive.

The next step in my project is to add TAPI support. I want to use VOIP to send audio from a PDA back to the host computer where it can be piped into the voice recognition engine. The TAPI library provides all of the functionality required on the host end. One of the many PocketPC or Palm H.323 VOIP clients can be used on the PDA end. The PDA acts as a remote mic.

TAPI would also allow for remote voice control using a modem. You could dial up your host and interact with it using voice and touch tones.

Perhaps I could also use NetRemote to stream audio? I can probably build a simple stream interface for the Voice Command plugin that reads WAV data from an IP port. Lots of possibilities.

-g.b.

bigal488
April 24th, 2006, 12:00 PM
I'm really excited to hear about your voice command plugin!
You made a comment:

.. If you have your house wired for LAN, you can get an inexpensive USB network adapter and access the USB audio over your network (I use one of these for a slikstick arcade controller for MAME)

Are you referring to USB over IP? How exactly are you getting the USB audio over the network? I've been looking at USB over IP solutions so that microphones could be installed in various locations around the home using existing network cabling but the only one I can find is AnywhereUSB (http://www.digi.com/products/usb/anywhereusb.jsp) but this is pricey.

gbumgard
April 24th, 2006, 12:34 PM
USB 2.0 network adapters are much more expensive than the 1.1 adapters. I think 1.1 is sufficient for carrying wav audio.

There aren't too many USB network adapters. I'm using a Silex brand adapter that supports 802.11g wireless as well as a standard RJ45 connector. The Silex software, however, is somewhat flakey.

A quick Google search turned up the following:
http://www.usbgear.com/USB-Network-Adapters.html

There a numerous USB sound adapters. The USB Gear site carries quite a few:
http://www.usbgear.com/USB-Sound.html

You might want to Google around for reviews before purchasing either device.

-g.b.
-g.b.

bigal488
April 24th, 2006, 05:25 PM
Thanks gbumgard.
The AnywhereUSB device in my previous post allows a PC to connect to USB devices across the network as if they were attached locally. (I think this is different from the USB Network adapters which afaik allow a PC to connect to the network via USB.)

This would, for example, allow a USB microphone to be located anywhere on the network and the Girder Server could connect to it as if it were plugged into a local USB port. Obviously, this would be great for Voice Control/Home automation. - I've recently started running a network over the electricity mains wiring (using the Homeplug system) and the thought of being able to have USB devices stashed anywhere in the house without any new cabling (i.e. just plugged directly into a Homeplug) would be ideal.

From the bit of googling I've done since my first post, it looks as if the AnywhereUSB device is the only one of its kind (which probably explains the price!), so my plans may have to alter!!

Promixis
April 24th, 2006, 05:32 PM
are you guys talking about usb over cat 5 or usb over actual tcp ip?

gbumgard
April 24th, 2006, 09:00 PM
I've been talking about putting a USB hub on TCP/IP. You could also use transmitter/receiver adapters that connect via CAT-5 cable. The 2.0 versions are expensive ($500+) but the 1.1 versions are quite a bit cheaper.

The advantage of using CAT-5 transport (as opposed to TCP/IP) is that your USB hub/devices appear as local devices. The network based adapters require client software that connects to the remote USB hub on the network. The client software needs to make a networked USB device look like a local USB device. Networked USB hubs typically allow you to share devices between computers.

I wound up using the Silex adapter because I wanted a USB 2.0 wireless interconnect. Unfortunately, my desired location for the hub didn't give me very reliable 802.11g reception, so I had to use the LAN connection I already had wired into a nearby wall (the Silex hub supports both).

I also wanted a USB 2.0 connection for my NetRemote PDA cradle, but the CAT-5 transmitter/receiver solution costs way too much. A networked hub was cheaper.

bigal488
April 25th, 2006, 03:06 AM
The Silex product looks promising - I need to run USB over TCP/IP if possible (its an old house and running new cat 5 cable is not an option). However I noticed that on the Silex product information pages it carries the following message for many of the models:
"Does not support USB devices using isochronous data transfer over USB such as web camera, speakers."
Have you had your USB over TCP/IP set up successfully piping audio? If so which model are you using?

My requirement is for several sets of remote microphones/speakers for voice command in different areas of the house, so I'm trying to establish which products will support this.

Many thanks for your help on this.

gbumgard
April 25th, 2006, 03:33 AM
No I haven't tried audio on the Silex. I'll give it a try tomorrow (today).

gbumgard
April 25th, 2006, 02:05 PM
I tried the Griffin iMic USB audio hub on the Silex SX-2000WG and it doesn't even show on the list of attached devices. It seems that the iMic is an iso-synchronous audio device. Apparently the Silex hub ignores all such devices.

I did a little browsing around, and it does appear that there are async sound hubs out there, and one of these may work with the Silex. Not sure.

It appears that a Cat-5 extender may be a better solution. If you can get by with USB 1.1, then a product like this one would probably work:

http://www.usbgear.com/computer_cable_details.cfm?sku=171632&cats=137&catid=137%2C140%2C120

I know that Black-Box also sells extenders, some that are actual hubs with multiple ports.

Promixis
April 25th, 2006, 02:14 PM
I have a less expensive CAT5 extender from www.pccables.com.

gbumgard
May 4th, 2006, 05:09 PM
An update for those interested...

I'm nearing completion of the plugin.

I've added conditionals for individual grammar rule recognition and property change events. I still need to add Lua support for a few more plugin functions (the plugin is written in C++, so the lua functionality must be exported by the plugin).

I had planned to create several example grammars and gml files prior to releasing the plugin for beta testing, but I think I may post the plugin with a few simple examples sometime next week and then continue working on more sophisticated examples for later release.

-g.b.

honnt
May 4th, 2006, 07:21 PM
...but I think I may post the plugin with a few simple examples sometime next week and then continue working on more sophisticated examples for later release.
-g.b.

YES! Please! I can't wait to see what you've come up with....

quixote
May 12th, 2006, 08:47 PM
This sounds like it's going to be really cool. I can't wait to try it out with my bluetooth headset!

gbumgard
May 23rd, 2006, 05:50 PM
See thread on Girder Developer forum.