Thanks very much! It occurred to me late last night that I last saw a speech command taking flags in the COM interface. The .Net 3.0 assembly may have some other method to set up such but I haven't found it yet. I like the .Net assembly interface but I cannot understand why they would have removed the flags from Speak or why they didn't include an overload to accept such. MS, the happiest place in the world... cdh -----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Ken Perry Sent: Friday, April 04, 2008 11:25 PM To: programmingblind@xxxxxxxxxxxxx Subject: RE: .Net 3.0 Speech functionality Ok Chris this might help. On the following page search for pitch and then read the rest of the document. Note I tried this with 5.1 and while the tags were not supported they also were not spoken I think this is a problem I ran into last time because they had the frame work in 5.1 but they were not supporting it till 5.3. since you are using 5.3 something like my example after this web link might work for you. http://msdn2.microsoft.com/en-us/library/ms717077(VS.85).aspx My stupid example. speech.Speak("<pitch absmiddle=\"-10\">lowest is -10</pitch> <pitch absmiddle=\"10\">highest is 10</pitch>", SpeechVoiceSpeakFlags.SVSFIsXML); Now in 5.3 I don't know how you turn on the xml flags I am using 5.1 so its probably a abit different since I am using comm. I should download .net 3.0 but shrug no need for it yet. Ken -----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Chris Hofstader Sent: Friday, April 04, 2008 1:45 PM To: programmingblind@xxxxxxxxxxxxx Subject: RE: .Net 3.0 Speech functionality Hey Ken, I just did my best to dig through the dregs of the Ad Lib code and couldn't find any place where SAPI speech is called directly. I don't think I have any source prior to the switch to the Chant library which is probably why I can't find any SAPI functions. Enjoy, cdh -----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Ken Perry Sent: Friday, April 04, 2008 1:44 PM To: programmingblind@xxxxxxxxxxxxx Subject: RE: .Net 3.0 Speech functionality You don't send it as an argument you set the xml flag and you send the pitch change in the string of text. For example I don't have the exact sentext but its something like speak ("<pitch value=5>My text",flags) And you have to have the xml flag turned on. Ken -----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Chris Hofstader Sent: Friday, April 04, 2008 10:01 AM To: programmingblind@xxxxxxxxxxxxx Subject: RE: .Net 3.0 Speech functionality Unfortunately emphasis is separate from pitch and the Speak function that takes the emphasis argument makes fairly subtle changes to the speech and there is no Speak that accepts a pitch as an argument. I'm playing around with the PromptBuilder.AppendSsmlMarkup method right now. Pitch can be changed from within the prosody item but I can't seem to figure out how to write the string passed to the AppendSsmlMarkup method without causing the Speak function to crash. Loving life... cdh -----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Ken Perry Sent: Friday, April 04, 2008 12:26 PM To: programmingblind@xxxxxxxxxxxxx Subject: RE: .Net 3.0 Speech functionality Hmm I am not sure prompts are what you want to use though if your output is dynamic that is not really what prompts are all about. I would think you just would need the speak function with ssml to get all the different emphasis wouldn't you? Ken -----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Chris Hofstader Sent: Friday, April 04, 2008 3:40 AM To: programmingblind@xxxxxxxxxxxxx Subject: RE: .Net 3.0 Speech functionality Thanks Ken, The little bit of documentation and the few articles I could find that discuss PromptBuilder say that it makes an SSML object that, through the Speak method, gets sent to the SAPI synth. What I cannot find, though, is any documentation on how to set up the parameters to pass to PromptBuilder to make it speak what I want. For instance, my math program can say, "x superscript squared" or it can say, "x squared" with the squared in a higher pitch. As you know, I'm a nazi when it comes to decreasing syllables and using text augmentations instead as it will increase productivity and PromptBuilder seems to be the only .Net way to do this. cdh -----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Ken Perry Sent: Friday, April 04, 2008 2:00 AM To: programmingblind@xxxxxxxxxxxxx Subject: RE: .Net 3.0 Speech functionality Well first off if they only rapped the old API which I am going to go find out if they did Pitch will only work if you use an xml tag to set it per item you speech same for emphasis. As for speech prompts you do realize that those are pre recorded prompts. So for example you might record "This is the best software in the world" Then you could play it as a speech prompt. I will go see if I can dig up an example of how to do pitch with 3.0 I am thinking though its going to be no better than 5.1 was. Ken -----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Chris Hofstader Sent: Thursday, April 03, 2008 4:49 AM To: programmingblind@xxxxxxxxxxxxx Cc: 'Will Pearson' Subject: .Net 3.0 Speech functionality Hi, [I'm typing this from memory so please excuse any misspellings of the .Net terms as I don't have a file open from which I can copy and paste them.] I've been pulling my hair out trying to find some answers to questions regarding the System.Speech.Synthesis namespace in .Net 3.0 and higher. I am fairly certain that I have the latest SDK installed and I've just switched over to VS 2008 which seems to be happier with .Net 3.x than was VS 2005. The System.Speech.Synthesis namespace contains a class called SpeechSynthesizer which has a method, Speak. The Speak method is overloaded to take any of three different types: string, Prompt or PromptBuilder. The string entry point is self explanatory, one passes in a string and Speak causes SAPI to read the text aloud. By using some of the other items in the SpeechSynthesizer class, one can increase speech rate, volume and a few other minor changes to the way the speech sounds when one calls Speak. Most of the more interesting augmentations, however, seem to require using the Prompt or PromptBuilder overloads for the Speak method. Hence, my quandary, I know what I want to do but cannot find any documentation that describes or even offers an example of how a Prompt is built. Yes, I've already searched google and various open source sites to try to find an answer so I'm not relying entirely on MS documentation. Searching the Microsoft docs, however, did bring me to find System.Speech.TTSEngine which seems to have methods and member variables and methods for the more interesting spoken text augmentations like pitch, countour, emphasis, etc. The MS documentation, though, says that TTSEngine items should not be called directly from an application (to make matters worse, I couldn't find an explanation as to why or how these methods and member variables can be accessed). I will be deeply grateful to anyone who can help me figure this out either explicitly or by sending me pointers to useful documentation, articles and such. Thanks, Cdh PS: What do I do to bring the VS scripts over to 2008? The seriously broken (when JAWS is running) find feature of the help system is driving me absolutely nuts. __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind __________ NOD32 3002 (20080404) Information __________ This message was checked by NOD32 antivirus system. http://www.eset.com __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind __________ NOD32 3003 (20080404) Information __________ This message was checked by NOD32 antivirus system. http://www.eset.com __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind __________ NOD32 3003 (20080404) Information __________ This message was checked by NOD32 antivirus system. http://www.eset.com __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind __________ NOD32 3004 (20080405) Information __________ This message was checked by NOD32 antivirus system. http://www.eset.com __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind