[jawsscripts] Re: Speaking a text with a specified voice?

  • From: "Stefan Moisei" <vortex37@xxxxxxxxx>
  • To: <jawsscripts@xxxxxxxxxxxxx>
  • Date: Wed, 13 Feb 2013 09:20:00 +0200

Accessing eloquence directly from a jaws script could be done, I think, but 
it is not going to be easy. I see three options:
1. Load the eloquence dll and call the relevant functions. I think you can't 
do this directly. I've found a program which is able to dynamically create a 
com object and call dll functions.
2. There is a similar program to eloquence which works via sapi 4. It is 
called IBM ViaVoice. I think you can call sapi 4 from jaws scripts, too.
3. Write a separate program which calls eloquence directly using its dll, 
and then call that program from the jaws script.
The eloquence dll is eci.dll, its api is available on the internet.
As I've said, these solutions are pretty complex.
If it works, John's solution would be better, in my opinion
-----Original Message----- 
From: Octavian Rasnita
Sent: Wednesday, February 13, 2013 8:10 AM
To: jawsscripts@xxxxxxxxxxxxx
Subject: [jawsscripts] Re: Speaking a text with a specified voice?

Hmm, yep, it might be a good idea because accessing SAPI directly doesn't 
actually change the active voice synthesizer used by Jaws.

The possibility of stopping that voice is a must even if it is not done with 
Jaws standard keys like Control, but there is the other problem... the fact 
that if the current synthesizer is WinTalker, I will need to speak the 
English text with Eloquence.

Does anyone know if it is possible to access Eloquence directly as it is 
possible to access SAPI5?

--Octavian

----- Original Message ----- 
From: "Stefan Moisei" <vortex37@xxxxxxxxx>
To: <jawsscripts@xxxxxxxxxxxxx>
Sent: Tuesday, February 12, 2013 10:39 PM
Subject: [jawsscripts] Re: Speaking a text with a specified voice?


>I was thinking you could use a separate synthesizer to speak the Romanian
> messages and simply not change the jaws voice. When the Synthesizer is 
> done
> talking, jaws would have the same voice as before, since it was never
> changed.
> The only problem I see with this approach is that you can't stop the 
> speech
> using control. There is a method to stop sapi 5 speaking, but I don't know
> how to intercept the control key in a jaws script. KeyPressedEvent doesn't
> seem to intercept it.
> -----Original Message----- 
> From: Octavian Rasnita
> Sent: Tuesday, February 12, 2013 10:06 AM
> To: jawsscripts@xxxxxxxxxxxxx
> Subject: [jawsscripts] Re: Speaking a text with a specified voice?
>
> Thanks Stefan, but it doesn't work because I can change the active
> synthesizer using scripting functions, however the problem is that I don't
> know the moment in which to do that change.
>
> I want to do something similar to what Jaws is doing when it switches the
> language when it encounters a text in another language, if the "detect
> language" feature is active.
> But I want not only to change the current language of the current loaded
> synthesizer, but to also load a new synthesizer on the fly, then when it
> needs to speak in another language, stop the currently running synthesizer
> in that moment and load another synthesizer.
>
> For example, Maestro Translate does the translation using Google 
> translating
> service.
> When I press a hotkey to translate a text, if that translation is made 
> from
> English to Romanian, even if in that moment the user uses English 
> Eloquence,
> the translated text should be spoken in Romanian with the voice Ivona 
> Carmen
> for example.
> But if in the middle of speaking that romanian text the user wants to stop
> it, he should be able to press Control or another hotkey, and then if he
> wants to read the title of the window or a text from that window, or to 
> hear
> the time or do something else, he should be able to hear English Eloquence
> as before.
>
> Or if the user currently uses a SAPI4 synthesizer like WinTalker and
> translates something from Romanian to English, he should hear the English
> text spoken with English Eloquence, and after it finishes speaking that
> text, he should hear WinTalker again.
>
> But it seems that Jaws is not that flexible for beeing able to do that...
> :-)
>
> Jaws should consider somehow all the voice synthesizers as beeing a single
> synthesizer with many voices, and should be able to change easier among
> them.
>
> --Octavian
>
> ----- Original Message ----- 
> From: "Stefan Moisei" <vortex37@xxxxxxxxx>
> To: <jawsscripts@xxxxxxxxxxxxx>
> Sent: Monday, February 11, 2013 9:32 PM
> Subject: [jawsscripts] Re: Speaking a text with a specified voice?
>
>
>> Depending on your requirements, you could use sapi directly from a jaws
>> script, like so:
>>
>> var object o
>> o=CreateObject("sapi.spvoice")
>> o.Speak("test")
>> You would have to manually set the voice, rate and pitch on the object.
>> I think you can even get the available voices on the system and choose 
>> the
>> one you want. Search for "sapi.spvoice" to find out what you can do with
>> this object.
>> -----Original Message----- 
>> From: Octavian Rasnita
>> Sent: Monday, February 11, 2013 6:54 PM
>> To: jawsscripts@xxxxxxxxxxxxx
>> Subject: [jawsscripts] Re: Speaking a text with a specified voice?
>>
>> Yes of course. I used delay(5) as I shown in my first message.
>>
>> But you are right, I don't know how to find when the synthesizer finished
>> speaking so I don't know how much I need to wait.
>>
>> But actually the method is not very good, because if the text is 1
>> kilometer
>> long and Jaws should speak it for a long time, in that period I am not
>> able
>> to shut it down by using the Control key or in another way, but I need to
>> wait until it finishes.
>>
>> --Octavian
>>
>> ----- Original Message ----- 
>> From: "Geoff Chapman" <gch@xxxxxxxxxxxxxxxx>
>> To: <jawsscripts@xxxxxxxxxxxxx>
>> Sent: Monday, February 11, 2013 4:33 PM
>> Subject: [jawsscripts] Speaking a text with a specified voice?
>>
>>
>>> Hmmm.
>>>
>>> you obviously must've also tried single/multiple pause statements 
>>> between
>>> the
>>> Say (StrText)
>>> and the resetting of the voice profile, have you?
>>>
>>> like:
>>> SetActiveVoiceProfileByName ("Carmen2")
>>> SayString(sTrText)
>>> Pause ()
>>> Pause () ; varying amounts of these.
>>> SetActiveVoiceProfileByName ("Eloquence")
>>>
>>> That still doesn't really help you though probably in the need to find a
>>> function that informs jaws when the synthesizer has actually done
>>> speaking
>>> it's assigned text. especially if your texts are never the same lengths.
>>>
>>>
>>>
>>> ----- Original Message ----- 
>>> From: "Octavian Rasnita" <orasnita@xxxxxxxxx>
>>> To: <jawsscripts@xxxxxxxxxxxxx>
>>> Sent: Monday, February 11, 2013 6:36 PM
>>> Subject: [jawsscripts] Re: Speaking a text with a specified voice?
>>>
>>>
>>>>I gave the code in my first message. Here it is again:
>>>>
>>>> SetActiveVoiceProfileByName ("Carmen2")
>>>> SayString(sTrText)
>>>> SetActiveVoiceProfileByName ("Eloquence")
>>>>
>>>> The first line changes the voice to a specified voice profile, then it
>>>> should speak the message and then it should change the voice profile
>>>> back
>>>> to Eloquence.
>>>> But the third line is executed immediately, and when it is executed, 
>>>> the
>>>> previously synthesizer is stopped so it doesn't speak anything.
>>>>
>>>> Thanks.
>>>>
>>>> Octavian
>>>>
>>>> --Octavian
>>>>
>>>> ----- Original Message ----- 
>>>> From: "Dang Manh Cuong" <dangmanhcuong@xxxxxxxxx>
>>>> To: <jawsscripts@xxxxxxxxxxxxx>
>>>> Sent: Monday, February 11, 2013 10:22 AM
>>>> Subject: [jawsscripts] Re: Speaking a text with a specified voice?
>>>>
>>>>
>>>>> Hi
>>>>> I don't do that for a long time, but if you could send me your code, I
>>>>> think
>>>>> I could help you.
>>>>> Cuong.
>>>>> ----- Original Message ----- 
>>>>> From: "Octavian Rasnita" <orasnita@xxxxxxxxx>
>>>>> To: <jawsscripts@xxxxxxxxxxxxx>
>>>>> Sent: Sunday, February 10, 2013 11:22 PM
>>>>> Subject: [jawsscripts] Re: Speaking a text with a specified voice?
>>>>>
>>>>>
>>>>>> Thanks, but as I said, I tried in 2 ways:
>>>>>>
>>>>>> 1. SetActiveVoiceProfileByName ("Carmen2")
>>>>>>
>>>>>> 2. I also tried using SetSynth ("eloq") but it didn't help either.
>>>>>>
>>>>>> The problem is that when a new voice is activated, it shuts Jaws down
>>>>>> so
>>>>>> the
>>>>>> text spoken with the previous voice is not spoken at all.
>>>>>>
>>>>>> --Octavian
>>>>>>
>>>>>> ----- Original Message ----- 
>>>>>> From: "Dang Manh Cuong" <dangmanhcuong@xxxxxxxxx>
>>>>>> To: <jawsscripts@xxxxxxxxxxxxx>
>>>>>> Sent: Sunday, February 10, 2013 3:37 PM
>>>>>> Subject: [jawsscripts] Re: Speaking a text with a specified voice?
>>>>>>
>>>>>>
>>>>>>> Hi
>>>>>>> Use SetSynth to swich to the synthesizer of choice, and use
>>>>>>> SetVoicePerson
>>>>>>> to set name.
>>>>>>> HTH
>>>>>>> Cuong
>>>>>>> ----- Original Message ----- 
>>>>>>> From: "Octavian Rasnita" <orasnita@xxxxxxxxx>
>>>>>>> To: <jawsscripts@xxxxxxxxxxxxx>
>>>>>>> Sent: Sunday, February 10, 2013 3:07 PM
>>>>>>> Subject: [jawsscripts] Re: Speaking a text with a specified voice?
>>>>>>>
>>>>>>>
>>>>>>>> Thanks Stefan and Doug. Unfortunately it seems that there is no way
>>>>>>>> to
>>>>>>>> instruct JAWS to speach a piece of text with a specified
>>>>>>>> synthesizer,
>>>>>>>> although I was sure that this should be a simple thing.
>>>>>>>>
>>>>>>>> --Octavian
>>>>>>>>
>>>>>>>> ----- Original Message ----- 
>>>>>>>> From: "Doug Lee" <doug.lee@xxxxxxxxxxxxxxxx>
>>>>>>>> To: <jawsscripts@xxxxxxxxxxxxx>
>>>>>>>> Sent: Sunday, February 10, 2013 12:45 AM
>>>>>>>> Subject: [jawsscripts] Re: Speaking a text with a specified voice?
>>>>>>>>
>>>>>>>>
>>>>>>>>> SpeechInUse() actually tells you only whether or not speech, as
>>>>>>>>> opposed to Braille output, is being used by the JAWS user. It does
>>>>>>>>> not
>>>>>>>>> tell you when something is actually being said.
>>>>>>>>>
>>>>>>>>> On Sat, Feb 09, 2013 at 08:05:57PM +0200, Stefan Moisei wrote:
>>>>>>>>> Hi,
>>>>>>>>> The function SpeechInUse() should tell you if jaws is speaking or
>>>>>>>>> not.
>>>>>>>>>
>>>>>>>>> -----Original Message----- 
>>>>>>>>> From: Octavian Rasnita
>>>>>>>>> Sent: Saturday, February 09, 2013 5:29 PM
>>>>>>>>> To: jawsscripts@xxxxxxxxxxxxx
>>>>>>>>> Subject: [jawsscripts] Speaking a text with a specified voice?
>>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> Is it possible to create a JAWS script that speaks a text with a
>>>>>>>>> specified
>>>>>>>>> installed voice, then after it finishes, switch back to the 
>>>>>>>>> default
>>>>>>>>> voice?
>>>>>>>>>
>>>>>>>>> I tried:
>>>>>>>>>
>>>>>>>>> SetActiveVoiceProfileByName ("Carmen2")
>>>>>>>>> SayString(sTrText)
>>>>>>>>> SetActiveVoiceProfileByName ("Eloquence")
>>>>>>>>>
>>>>>>>>> But nothing is spoken. When the function
>>>>>>>>> SetActiveVoiceProfileByName()
>>>>>>>>> is
>>>>>>>>> called the second time, it stops immediately the speech.
>>>>>>>>>
>>>>>>>>> I have found this by doing:
>>>>>>>>>
>>>>>>>>> SetActiveVoiceProfileByName ("Carmen2")
>>>>>>>>> SayString(sTrText)
>>>>>>>>> Delay (50, TRUE )
>>>>>>>>> SetActiveVoiceProfileByName ("Eloquence")
>>>>>>>>>
>>>>>>>>> This time the text was spoken as wanted, but I wasn't able to use
>>>>>>>>> the
>>>>>>>>> computer for a few seconds after that, because of the Delay()
>>>>>>>>> function.
>>>>>>>>>
>>>>>>>>> I guess that it is not possible to calculate how much time it 
>>>>>>>>> would
>>>>>>>>> take
>>>>>>>>> to
>>>>>>>>> speak a certain text with a specified voice, but isn't possible to
>>>>>>>>> detect
>>>>>>>>> somehow when JAWS finished speaking, in order to be able to switch
>>>>>>>>> the
>>>>>>>>> voice
>>>>>>>>> in that moment?
>>>>>>>>>
>>>>>>>>> I also tried using SetSynth ("eloq") but it didn't help either.
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --Octavian
>>>>>>>>>
>>>>>>>>> __________???
>>>>>>>>>
>>>>>>>>> View the list's information and change your settings at
>>>>>>>>> //www.freelists.org/list/jawsscripts
>>>>>>>>>
>>>>>>>>> __________???
>>>>>>>>>
>>>>>>>>> View the list's information and change your settings at
>>>>>>>>> //www.freelists.org/list/jawsscripts
>>>>>>>>>
>>>>>>>>> -- 
>>>>>>>>> Doug Lee, Senior Accessibility Programmer
>>>>>>>>> SSB BART Group - Accessibility-on-Demand
>>>>>>>>> mailto:doug.lee@xxxxxxxxxxxxxxxx  http://www.ssbbartgroup.com
>>>>>>>>> "While they were saying among themselves it cannot be done,
>>>>>>>>> it was done." --Helen Keller
>>>>>>>>> __________�
>>>>>>>>>
>>>>>>>>> View the list's information and change your settings at
>>>>>>>>> //www.freelists.org/list/jawsscripts
>>>>>>>>>
>>>>>>>>
>>>>>>>> __________�
>>>>>>>>
>>>>>>>> View the list's information and change your settings at
>>>>>>>> //www.freelists.org/list/jawsscripts
>>>>>>>>
>>>>>>> ________________ Dang Manh Cuong HCMC University of Pedagogy: The
>>>>>>> Educational Psychology Mobile: +84 902-572-300 E-mail:
>>>>>>> dangmanhcuong@xxxxxxxxx Yahoo! ID: manhcuong0312 Skype name:
>>>>>>> dangmanhcuong
>>>>>>> facebook:
>>>>>>>
>>>>>>> __________�
>>>>>>>
>>>>>>> View the list's information and change your settings at
>>>>>>> //www.freelists.org/list/jawsscripts
>>>>>>>
>>>>>>
>>>>>> __________�
>>>>>>
>>>>>> View the list's information and change your settings at
>>>>>> //www.freelists.org/list/jawsscripts
>>>>>>
>>>>> ________________ Dang Manh Cuong HCMC University of Pedagogy: The
>>>>> Educational Psychology Mobile: +84 902-572-300 E-mail:
>>>>> dangmanhcuong@xxxxxxxxx Yahoo! ID: manhcuong0312 Skype name:
>>>>> dangmanhcuong
>>>>> facebook:
>>>>>
>>>>> __________�
>>>>>
>>>>> View the list's information and change your settings at
>>>>> //www.freelists.org/list/jawsscripts
>>>>>
>>>> __________�
>>>>
>>>> View the list's information and change your settings at
>>>> //www.freelists.org/list/jawsscripts
>>>>
>>>>
>>>
>>> __________�
>>>
>>> View the list's information and change your settings at
>>> //www.freelists.org/list/jawsscripts
>>>
>>
>> __________�
>>
>> View the list's information and change your settings at
>> //www.freelists.org/list/jawsscripts
>>
>> __________�
>>
>> View the list's information and change your settings at
>> //www.freelists.org/list/jawsscripts
>>
> __________�
>
> View the list's information and change your settings at
> //www.freelists.org/list/jawsscripts
>
> __________�
>
> View the list's information and change your settings at
> //www.freelists.org/list/jawsscripts
>
__________�

View the list's information and change your settings at
//www.freelists.org/list/jawsscripts

__________�

View the list's information and change your settings at 
//www.freelists.org/list/jawsscripts

Other related posts: