[Pharo-project] Voice reader support for Pharo
Hi all, I'm one of the newcomers registering recently on the mailing list. I'm trying to see if a colleague of mine, blind, could use Pharo and for that it would be necessary to be able to read aloud the contents of the Pharo morphs to a screen reader such as Orca (and a brltty output). Has anybody worked on that ? Thierry -- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
I am preffering currently to use Festival ( on linux) through OSProcess. Simple to push out sentences one by one.. wholeText splitToSentences do: [ :eaSentence | OSProcess command: 'echo "', eaSentence , '" | festival --tts'. ]. espeak is also good enough... but both of these currently I view them as initial level.. stuff.. need to figure out more.. On Fri, Mar 30, 2012 at 7:03 PM, Goubier Thierry <thierry.goubier@cea.fr>wrote:
Hi all,
I'm one of the newcomers registering recently on the mailing list. I'm trying to see if a colleague of mine, blind, could use Pharo and for that it would be necessary to be able to read aloud the contents of the Pharo morphs to a screen reader such as Orca (and a brltty output). Has anybody worked on that ?
Thierry -- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
On Sat, Mar 31, 2012 at 12:40:00AM +0530, S Krish wrote:
I am preffering currently to use Festival ( on linux) through OSProcess. Simple to push out sentences one by one..
wholeText splitToSentences do: [ :eaSentence |
OSProcess command: 'echo "', eaSentence , '" | festival --tts'. ].
You can also do something like this if you want to continue sending commands to a single running festival program: festival := PipeableOSProcess command: '/usr/bin/festival'. festival nextPutAll: '(voice_rab_diphone)'. { 'Hello world this is festival' . 'The festival process is still running so you can continue to send ', 'commands to it without starting a new instance each time' . 'When you are done using this process, you can close its input and ', 'allow it to exit normally'. 'Then do a close pipes to close the standard output so you will not ', 'leak file handles due to open pipes' . 'Standard output is left open on purpose to allow you to read output after ', 'the external process has exited' . 'That is the reason that you must close it explicitly after you are done ', 'using the external process' . 'Have fun!' } do: [:sentence | festival nextPutAll: '(SayText "', sentence, ' ")']. festival close. festival closePipes. Dave
Thanks for the examples, it shows really well how to interact with any existing voice synthesis system on the platform. Now I need to retrofit something to the Morph system; what is needed there is the ability to do a complete navigation among all morphs via the keyboard (Crtl-Tab in a morph window works) and, for each morph which has the focus, emit it's name on a braille keyboard (and a voice synthesis tool). Thierry Le 02/04/2012 01:25, David T. Lewis a écrit :
On Sat, Mar 31, 2012 at 12:40:00AM +0530, S Krish wrote:
I am preffering currently to use Festival ( on linux) through OSProcess. Simple to push out sentences one by one..
wholeText splitToSentences do: [ :eaSentence |
OSProcess command: 'echo "', eaSentence , '" | festival --tts'. ].
You can also do something like this if you want to continue sending commands to a single running festival program:
festival := PipeableOSProcess command: '/usr/bin/festival'. festival nextPutAll: '(voice_rab_diphone)'. { 'Hello world this is festival' . 'The festival process is still running so you can continue to send ', 'commands to it without starting a new instance each time' . 'When you are done using this process, you can close its input and ', 'allow it to exit normally'. 'Then do a close pipes to close the standard output so you will not ', 'leak file handles due to open pipes' . 'Standard output is left open on purpose to allow you to read output after ', 'the external process has exited' . 'That is the reason that you must close it explicitly after you are done ', 'using the external process' . 'Have fun!' } do: [:sentence | festival nextPutAll: '(SayText "', sentence, ' ")']. festival close. festival closePipes.
Dave
-- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
On Mon, Apr 2, 2012 at 2:43 PM, Goubier Thierry <thierry.goubier@cea.fr> wrote:
Thanks for the examples, it shows really well how to interact with any existing voice synthesis system on the platform.
Now I need to retrofit something to the Morph system; what is needed there is the ability to do a complete navigation among all morphs via the keyboard (Crtl-Tab in a morph window works) and, for each morph which has the focus, emit it's name on a braille keyboard (and a voice synthesis tool).
Yes, i think this is the difficult part of what you want to do. How to modify Morph in order to. You want to do that for every Morph or just the tools needed to develop Smalltalk code ? Maybe you can build a specific code browser with OmniBrower or Glamour that could do that. Another solution is use Coral, that integrate Pharo with a shell: https://www.youtube.com/watch?v=HLb_rMcNN6k Regards, -- Serge Stinckwich UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam Every DSL ends up being Smalltalk http://doesnotunderstand.org/
Le 02/04/2012 12:40, Serge Stinckwich a écrit :
On Mon, Apr 2, 2012 at 2:43 PM, Goubier Thierry<thierry.goubier@cea.fr> wrote:
Thanks for the examples, it shows really well how to interact with any existing voice synthesis system on the platform.
Now I need to retrofit something to the Morph system; what is needed there is the ability to do a complete navigation among all morphs via the keyboard (Crtl-Tab in a morph window works) and, for each morph which has the focus, emit it's name on a braille keyboard (and a voice synthesis tool).
Yes, i think this is the difficult part of what you want to do. How to modify Morph in order to. You want to do that for every Morph or just the tools needed to develop Smalltalk code ?
Every morph. So far I got the navigation to work, but I removed the theme tasklist call in PasteUpMorph>>navigationKey:. The tasklist is nice, but the fact that you need to press a return to go on selecting the window isn't. PasteUpMorph>>navigateWindowForward and navigateWindowBackward have the right behaviour. Now, if I find how to send text messages to brltty and connect that to the title (or name) of the Morph that has the focus, then the work is done.
Maybe you can build a specific code browser with OmniBrower or Glamour that could do that. Another solution is use Coral, that integrate Pharo with a shell: https://www.youtube.com/watch?v=HLb_rMcNN6k
I had a look and will keep it in mind when looking at scripting uses for Pharo, but my blind colleague is perfectly fine with multiple windows, as long as keyboard navigation and braille display works. Thierry
Regards,
-- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
On Mon, Apr 2, 2012 at 6:04 PM, Goubier Thierry <thierry.goubier@cea.fr> wrote:
Le 02/04/2012 12:40, Serge Stinckwich a écrit :
On Mon, Apr 2, 2012 at 2:43 PM, Goubier Thierry<thierry.goubier@cea.fr> Â wrote:
Thanks for the examples, it shows really well how to interact with any existing voice synthesis system on the platform.
Now I need to retrofit something to the Morph system; what is needed there is the ability to do a complete navigation among all morphs via the keyboard (Crtl-Tab in a morph window works) and, for each morph which has the focus, emit it's name on a braille keyboard (and a voice synthesis tool).
Yes, i think this is the difficult part of what you want to do. How to modify Morph in order to. You want to do that for every Morph or just the tools needed to develop Smalltalk code ?
Every morph.
So far I got the navigation to work, but I removed the theme tasklist call in PasteUpMorph>>navigationKey:. The tasklist is nice, but the fact that you need to press a return to go on selecting the window isn't. PasteUpMorph>>navigateWindowForward and navigateWindowBackward have the right behaviour.
Now, if I find how to send text messages to brltty and connect that to the title (or name) of the Morph that has the focus, then the work is done.
Great ! Don't forget to publish and document your changes. This could be great is Pharo Smalltalk could be used by other blind developers around the world !
Maybe you can build a specific code browser with OmniBrower or Glamour that could do that. Another solution is use Coral, that integrate Pharo with a shell: https://www.youtube.com/watch?v=HLb_rMcNN6k
I had a look and will keep it in mind when looking at scripting uses for Pharo, but my blind colleague is perfectly fine with multiple windows, as long as keyboard navigation and braille display works.
But there is more accessibility tools available when you are using a text-based environment like a shell. Regards, -- Serge Stinckwich UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam Every DSL ends up being Smalltalk http://doesnotunderstand.org/
Le 02/04/2012 13:10, Serge Stinckwich a écrit :
Great ! Don't forget to publish and document your changes. This could be great is Pharo Smalltalk could be used by other blind developers around the world !
I'll do! Just give me the time. So far, it seems I need to talk to the brlAPI lib through FFI, or write brltty protocol packets over TCP. I wonder which one it will be.
But there is more accessibility tools available when you are using a text-based environment like a shell.
I believed that as well, until I met my colleague... So now I put back on my HCI hat : he's happy and proficient (and very experienced) with interactive GUIs, and I know it won't be hard for him to use the full Morphic GUI as soon as I get his braille keyboard to work. Thierry -- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
Great..! On Mon, Apr 2, 2012 at 4:56 PM, Goubier Thierry <thierry.goubier@cea.fr>wrote:
Le 02/04/2012 13:10, Serge Stinckwich a écrit :
Great ! Don't forget to publish and document your changes. This could
be great is Pharo Smalltalk could be used by other blind developers around the world !
I'll do! Just give me the time. So far, it seems I need to talk to the brlAPI lib through FFI, or write brltty protocol packets over TCP. I wonder which one it will be.
But there is more accessibility tools available when you are using a
text-based environment like a shell.
I believed that as well, until I met my colleague...
So now I put back on my HCI hat : he's happy and proficient (and very experienced) with interactive GUIs, and I know it won't be hard for him to use the full Morphic GUI as soon as I get his braille keyboard to work.
Thierry
-- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
thierry are you planning to attend the PharoConf end of may because it would be great. I know that Alain Plantec should be present and probably Gary Chambers. Stef On Apr 2, 2012, at 1:26 PM, Goubier Thierry wrote:
Le 02/04/2012 13:10, Serge Stinckwich a écrit :
Great ! Don't forget to publish and document your changes. This could be great is Pharo Smalltalk could be used by other blind developers around the world !
I'll do! Just give me the time. So far, it seems I need to talk to the brlAPI lib through FFI, or write brltty protocol packets over TCP. I wonder which one it will be.
But there is more accessibility tools available when you are using a text-based environment like a shell.
I believed that as well, until I met my colleague...
So now I put back on my HCI hat : he's happy and proficient (and very experienced) with interactive GUIs, and I know it won't be hard for him to use the full Morphic GUI as soon as I get his braille keyboard to work.
Thierry -- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
Le 02/04/2012 18:59, Stéphane Ducasse a écrit :
thierry are you planning to attend the PharoConf end of may because it would be great. I know that Alain Plantec should be present and probably Gary Chambers.
Stef
Well, I didn't know about PharoConf; since it's in Lille, I'll look if I can attend. For now, am I right if I say that calling a C library in 64 bits Linux isn't really working ? So far, the FFI examples in Pharo 1.3 are not able to get the X window id, even with a LD_LIBRARY_PATH=/usr/lib32/. So I'm not sure trying to connect to a hand-compiled 32 bits version of the brlapi lib would work. (I thought that maybe, with xbrlapi, I could reroute Pharo stdout to the braille keyboard, but it didn't work: easy solution failed! :() It seems I'll have to connect to the brltty TCP server directly. Thierry
On Apr 2, 2012, at 1:26 PM, Goubier Thierry wrote:
Le 02/04/2012 13:10, Serge Stinckwich a écrit :
Great ! Don't forget to publish and document your changes. This could be great is Pharo Smalltalk could be used by other blind developers around the world !
I'll do! Just give me the time. So far, it seems I need to talk to the brlAPI lib through FFI, or write brltty protocol packets over TCP. I wonder which one it will be.
But there is more accessibility tools available when you are using a text-based environment like a shell.
I believed that as well, until I met my colleague...
So now I put back on my HCI hat : he's happy and proficient (and very experienced) with interactive GUIs, and I know it won't be hard for him to use the full Morphic GUI as soon as I get his braille keyboard to work.
Thierry -- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
-- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
in 2005 we bound together MBrola and tagger brill (see the doc I sent you) because klatt does not work for french. Now we did not tried since. But we are interested in supporting you in your attempt. So let us know us any problems you may get. Stef On Mar 30, 2012, at 3:33 PM, Goubier Thierry wrote:
Hi all,
I'm one of the newcomers registering recently on the mailing list. I'm trying to see if a colleague of mine, blind, could use Pharo and for that it would be necessary to be able to read aloud the contents of the Pharo morphs to a screen reader such as Orca (and a brltty output). Has anybody worked on that ?
Thierry -- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
Will try the MBrola/Tagger brill.. But here is something I have been trying in a set of pics..! The Photo-Book or better called Drawing-book ( an amateurish ebook with pics) with read aloud capability is funky.. and quite attractive for my six yr old daughter, converts her quick drgs into a read aloud book... and also to a bunch of interns. Took a few hours to hook up these. But has serious use too for better user guide/ presentations than pdf docs et als.. if products like to use this presentation... now in 2D and probably later in 3D with openGL.. PS: I think one could go for a packaged Pharo named: "Fundoos (Pharo) Smalltalk" , fundoos - a local slang in colleges for something fun.. Give the teenagers something packaged to play with .. eventually like the Toy Story of iPad... interactive fun.. that motivates them to try more out of the platform base.. later. On Sat, Mar 31, 2012 at 1:43 AM, Stéphane Ducasse <stephane.ducasse@inria.fr
wrote:
in 2005 we bound together MBrola and tagger brill (see the doc I sent you) because klatt does not work for french.
Now we did not tried since. But we are interested in supporting you in your attempt. So let us know us any problems you may get. Stef
On Mar 30, 2012, at 3:33 PM, Goubier Thierry wrote:
Hi all,
I'm one of the newcomers registering recently on the mailing list. I'm trying to see if a colleague of mine, blind, could use Pharo and for that it would be necessary to be able to read aloud the contents of the Pharo morphs to a screen reader such as Orca (and a brltty output). Has anybody worked on that ?
Thierry -- Thierry Goubier CEA list Laboratoire des Fondations des Systèmes Temps Réel Embarqués 91191 Gif sur Yvette Cedex France Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
participants (5)
-
David T. Lewis -
Goubier Thierry -
S Krish -
Serge Stinckwich -
Stéphane Ducasse