RE: .Net 3.0 Speech functionality

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

Ok, today's proof that I'm a moron comes in the form of the SpeakSsml member
function in the SpeechSynthesizer class.  

I copied Ken's example in and got an exception when I called this method but
I think we are probably pretty close.

Thanks for the help so far...

cdh

-----Original Message-----
From: programmingblind-bounce@xxxxxxxxxxxxx
[mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Ken Perry
Sent: Friday, April 04, 2008 11:36 PM
To: programmingblind@xxxxxxxxxxxxx
Subject: RE: .Net 3.0 Speech functionality


I did some tests and that page and example I sent out was bang on.  In old
sapi the rate, volume, and spell tags works fine but the emph and the pitch
don't' seem to so you will have to try it in 5.3.  I know I am doing it
right though so give that at try.  You probably don't have to set it into
xml flag mode because I am betting 5.3 does that by default.

Ken 

-----Original Message-----
From: programmingblind-bounce@xxxxxxxxxxxxx
[mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Chris Hofstader
Sent: Friday, April 04, 2008 10:49 AM
To: programmingblind@xxxxxxxxxxxxx
Subject: RE: .Net 3.0 Speech functionality

Thanks so much!!!  When I first posted the question yesterday, I made a bet
that you would be the one with the answer.  And I was right.  I owe you a
free lunch.

-----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: