RE: .Net 3.0 Speech functionality

  • From: "Chris Hofstader" <chris.hofstader@xxxxxxxxxxx>
  • To: <programmingblind@xxxxxxxxxxxxx>
  • Date: Sat, 5 Apr 2008 07:38:04 -0400

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

Other related posts: