Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1

TOPIC: amulet team - Steve - eddy

amulet team - Steve - eddy 4 years 9 months ago #1105

  • chef
  • chef's Avatar
  • OFFLINE
  • Senior Boarder
  • Posts: 51
  • Karma: 1
I don't want you guys to give it all way here. And my question does pertain to a system event in the amulet software, un to which I can not figure out how you guys are doing it.

How are.you guys changing the speech profile?

Even if I use the SpeechLib message it is hard enough to get a list of token ids. Then each user profile is video behind a GUID code in the registry.

So how are you changing the profile?
How are you getting a lost of profiles available.

Are you reading and writing to the registry each time you change the profile.l?



I just really have to know.

Buy understandably if you don't want to say I can understand also.

I am sure the quest for profile switching will lead me to an answer someday.
The administrator has disabled public write access.

Re: amulet team - Steve - eddy 4 years 9 months ago #1110

  • eddy
  • eddy's Avatar
  • OFFLINE
  • Administrator
  • Posts: 191
  • Thank you received: 2
  • Karma: 5
Hi Chef,

(Apologies for the lack of recent resonses; I'm getting a bit behind with forum posts this month! Trying to catch up...)
How are you guys changing the speech profile?
It's actually fairly straightforward, if a little messy:
  • All the profiles are enumerated under the registry key HKEY_CURRENT_USER\Software\Microsoft\Speech\RecoProfiles\Tokens\*\...
  • Each profile has an associated GUID; the default value is the display name of the profile
  • To change the profile, set the key HKEY_CURRENT_USER\Software\Microsoft\Speech\RecoProfiles\DefaultTokenId to the full registry path of the token representing the profile you want to select
  • After changing the profile, destroy your System.Speech object and recreate it from scratch; the new instance of the speech engine will use the new profile.
Told you it was messy :-)

Eddy
Last Edit: 4 years 9 months ago by eddy.
The administrator has disabled public write access.

Re: amulet team - Steve - eddy 4 years 9 months ago #1111

  • chef
  • chef's Avatar
  • OFFLINE
  • Senior Boarder
  • Posts: 51
  • Karma: 1
Nice!

I just have to figure out how to the enumerate registries in .Net.
Last Edit: 4 years 9 months ago by chef.
The administrator has disabled public write access.

Re: amulet team - Steve - eddy 4 years 9 months ago #1112

  • chef
  • chef's Avatar
  • OFFLINE
  • Senior Boarder
  • Posts: 51
  • Karma: 1
Okay, wait never mind.

Enumerating the registry is really hard. But i finally got somewhere.

After reading MSDN for hours I am now able to enumerate the registry and get the GUID codes for the Speech profiles.

I am super tired now from reading and debugging until my eyes were going to fall out of my head.

The first two GUIDs that reply back are the speech profiles, but it also send a bunch of other ID from the registry tree. this is interesting.

I think I need to sleep now... the mission is half way accomplished...
The administrator has disabled public write access.

Re: amulet team - Steve - eddy 4 years 9 months ago #1113

  • chef
  • chef's Avatar
  • OFFLINE
  • Senior Boarder
  • Posts: 51
  • Karma: 1
Okay sorry for all the posts, I have narrowed it down to the Speech Profile GUIDS.

i really have to sleep...

:)
The administrator has disabled public write access.

Re: amulet team - Steve - eddy 4 years 9 months ago #1114

  • chef
  • chef's Avatar
  • OFFLINE
  • Senior Boarder
  • Posts: 51
  • Karma: 1
Now I see why you guys write the profile names to the ini file. It is easier to sort the names after the registry loop has finished and interate from a text file afterwards.
The administrator has disabled public write access.

Re: amulet team - Steve - eddy 4 years 9 months ago #1116

  • chef
  • chef's Avatar
  • OFFLINE
  • Senior Boarder
  • Posts: 51
  • Karma: 1
I did it!!

Here is the code to get the current loaded Speech Profile:


'//Get the Current Speech Profile TokenId
Dim TokenValue As String
TokenValue = My.Computer.Registry.GetValue _
("HKEY_CURRENT_USER\Software\Microsoft\Speech\RecoProfiles", "DefaultTokenId", Nothing)
MsgBox(TokenValue)

'//Get the Current Speech Profile Name
Dim currentLoadedProfileName As String
currentLoadedProfileName = My.Computer.Registry.GetValue _
(TokenValue, "", Nothing)

MsgBox("The value is " & currentLoadedProfileName)


Now in order to load a new profile I use this code:



'//Find the Speech Profiles GUID Codes by enumerating the regisrty
Sub New()
Dim registryKey As RegistryKey
registryKey = Registry.CurrentUser
Dim registrySubKey As RegistryKey

registrySubKey = registryKey.OpenSubKey("Software\Microsoft\Speech\RecoProfiles\Tokens", False)

'//Lists Sub Key Names - which are GUID for Speech Profiles
Dim subKeyNames As String() = registrySubKey.GetSubKeyNames()

Dim subKeyName As String
For Each subKeyName In subKeyNames
MsgBox(subKeyName) ' subKeyName is the name of the SPeech Rpofile GUID codes
Next

This is where I am. I have to then load the subkeyNames one by one to get the Value (or the actually Name of the person in the Speech Profile)

then i can compare to a voice recognition grammer of: "Load {persons name to compare}"

and write the complete path of the proper profile back to the "currentLoadedProfileName"


At the same time load that Name for the Media Browser Three user Id into Media Browser


That is freaking awesome!!
The administrator has disabled public write access.

Re: amulet team - Steve - eddy 4 years 7 months ago #1324

  • chef
  • chef's Avatar
  • OFFLINE
  • Senior Boarder
  • Posts: 51
  • Karma: 1
Hey guys! So it was a long time coming, but I did it! I built a kinect application.

It does a lot!
The administrator has disabled public write access.

Re: amulet team - Steve - eddy 4 years 7 months ago #1330

  • eddy
  • eddy's Avatar
  • OFFLINE
  • Administrator
  • Posts: 191
  • Thank you received: 2
  • Karma: 5
So it was a long time coming, but I did it! I built a kinect application.
Great! What does it do? Is it using speech, or just the Kinect hands-free input?
Last Edit: 4 years 7 months ago by eddy.
The administrator has disabled public write access.

Re: amulet team - Steve - eddy 4 years 7 months ago #1336

  • chef
  • chef's Avatar
  • OFFLINE
  • Senior Boarder
  • Posts: 51
  • Karma: 1
I call it media bbrowser kinect and control

I use skeleton stream, and voice recognition. I used a couple ideas from different speech recognition application. I read about box commando and their use of grammar xml. So my dynamically created them, I read about project Lilly, so these dynamic grammars xml are loaded and unloaded depending on where you are in media browser.

I can switch speech profiles, synchronized user switch in media grider three.

I use skeleton stream to manager around the ui and speech too.

I know when to destroy both the skeleton, and the speech recognizer.

The skeleton stream uses all of resources, so it has to be destroyed and created.

I was able to. Find q good time to do this, when the user enters the details display screen in media browser, there is about w three second delay while things are loading.
The administrator has disabled public write access.

Re: amulet team - Steve - eddy 4 years 7 months ago #1337

  • chef
  • chef's Avatar
  • OFFLINE
  • Senior Boarder
  • Posts: 51
  • Karma: 1
Sorry this phone I am on, makes spelling mistakes like crazy, what I am trying to say is that I have the recognizer load in a subroutine, this mside more sense. I load some general grammars in there, then through classes I created to manage media browser, I deatroy ye recognizer and call the subroutine. Adding new grammars as I go. It is easier to destroy the entire recognizer and reload it, then it is to try and unload grammars and reload new ones. :)
The administrator has disabled public write access.

Re: amulet team - Steve - eddy 4 years 7 months ago #1338

  • eddy
  • eddy's Avatar
  • OFFLINE
  • Administrator
  • Posts: 191
  • Thank you received: 2
  • Karma: 5
I call it media bbrowser kinect and control
All sounds pretty good! Will you be releasing this at some point?
The administrator has disabled public write access.

Re: amulet team - Steve - eddy 4 years 7 months ago #1341

  • chef
  • chef's Avatar
  • OFFLINE
  • Senior Boarder
  • Posts: 51
  • Karma: 1
A release would be awesome, although like Steve said, I can not accept money for it due to the SDK Terms, but maybe for my time as donations...who knows.

I spent most of yesterday writing a more sophisticated form of Gestures for the program. it will now anchor and track your hand left and right and move the focus accordingly. If you have your right hand extended and then start moving it back towards you this will cause focus to follow your hand. It took a whole lot of math. I had to subtract the space between the right hand and the center of the shoulder to get a reference point. Once the point was in place I could use a conditional statement to move left wand right accordingly.

I haven't yet added the ability to turn off gestures, but that is easy, it will be literally one line of code.

There is one draw back I have noticed and that is that the load time for gestures are a little longer than they use to be, but I do have a plan using threading to speed this up substantially.

I am not sure how to use :"SkeletonFrame.OpenNextFrame()"
which I believe is how I can slow down the SKeletonFrame, which is running at 30fps and is way to fast for media browser. Right now i used a "Thread.Sleep()" which causes the skeletonframe to slow down, but also cause a really slow EventHandler load.

Hey Eddy, you wanna try it? It's alpha right now, but it is still pretty cool. Email me:

chefbennyj at gmail dot com
The administrator has disabled public write access.
  • Page:
  • 1
Time to create page: 0.420 seconds
Powered by Kunena Forum