Re: [orca-list] orca command-line configuration question



Hello,

I am sorry I have overlooked this conversation mentions my earlier experiment with using espeak directly within orca through python-espeak.

I would recommend not to use this in production if you have that choice.

Originally I have assumed that I can get orca talking directly to eSpeak so I can make it work on termux for Android, on raspberry pi and other configurations where speech-dispatcher might not be required or can't be made to run at all.

I have managed to wrap up that quickly in a few hours. I have even posted it here to the list for tinkerers like I am to play with or possibly to look at. However I have quickly discovered that this is much less responsive than orca talking to speech-dispatcher. And that turned to be something I was unable to resolve easily as python-espeak does not care about the audio handled by espeak. Audio is simply played to the default sound device using espeak runtime pulseaudio vs alsa detection the same way calling it via command line does.

Another experiment of such sort would be writing some wery basic gstreamer based player that would run in a background thread holding the audio device open all the time, using espeak via ctypes directly and feeding its audio to that gstreamer based player. It would have the same flav as speech-dispatcher has that it may not be possible to play multiple sounds at the same time on some devices.

Orca can now optionally produce progress bar update beeps via gstreamer so it would introduce no extra dependencies.

I have just not played with this more and since I can now run speech-dispatcher with proot on termux for android I am no longer motivated to experiment with that too much.

I haven't asked to apply these changes to orca master because I know they are not stable.

To talk a bit on the currently discussed audio output configuration:
There are single channel audio devices and multi channel audio devices.
Single channel devices only allow playing one sound at a time. For most audio devices alsa tries to compensate for not being to play more than one sound by automagically enabling dmix plugin. This is not working on all hardware. If it's not, you can see the behaviour like this: Espeakup is running as root it grabs the audio device and nothing can grab it and play another sound through it later. See this part in the Arch wiki to see how to manually enable dmix: https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture#Dmix
I think this will apply to most other distributions as well.

Another way on how to compensate for this is by running pulse audio as it should naturally handle multiple streams. Even while using pulseaudio user intervention might be needed as allowing multiple users to play sound at a same time is considered a security risk thus it's not configured by default. I like this blog post on the matter to better explain how to do it. http://billauer.co.il/blog/2014/01/pa-multiple-users/ I am using this pulseaudio tweak and Chrys, Storm and other guys running Fenrir are doing the same thing I guess.

Luke has developed a different solution for Vinux 5.0 which I think is working on that version but is not easily portable to other setups.

Greetings

Peter


Dňa 26. 4. 2019 o 12:23 Didier Spaier napísal(a):
Hello,

Some information and corrections.

spd-say is part of speech-dispatcher, so if speech-dispatcher is not
installed, neither is spd-say, or if it is "standalone", it won't work.
This has nothing to do with espeakup grabbing alsa.

espeakup being a bridge between speakup, and espeak or espeak-ng,
has nothing to do with alsa anyway, at least directly.

If alsa is properly set, there is no reason that espeak or espeak-ng
grabs alsa. It doesn't here

Sorry, AFAIK there is no other available option currently than
speech-dispatcher for Orca (Joanie, please correct me if that's wrong).

I am not optimistic about the use of Peter's patch, as it is against
an old Ora version but again. Peter, is it right?

Last libao can use a lot of audio backends, but you can set the default
driver in /etc/libao.conf. Here I set: default_driver=alsa

But esd, pulse and oss are also available as they are installed when I
configure libao.

So, I think that in case speech-dispatcher relies on libao, the audio
card used depends on the backend of libao rather than libao itself.

Best,

Didier

On 26/04/2019 11:45, Willem van der Walt wrote:
Thanks both to Zahari and Janina.
Yes, I am running espeakup/speakup.
Yes, spd-say does not work, likely because espeakup grabs alsa.
Yes, I am using alsa, not pulseaudio.
I do not really want to run speechd_up, but I suppose that might be another option.
No, I do not have the luxury of a second sound device, so that one cannot work here.
I might look at Peter's patch.
Kind regards, Willem


On Fri, 26 Apr 2019, Janina Sajka wrote:

Hi, Willem:

You need to get speech-dispatcher working. In that effort spd-say is
your friend from the cli. If you can pass it a string and hear speech,
you should be good to go with Orca.
You don't say, but I presume you're also running Speakup on this same
machine? If so, espeakup could be blocking speech-dispatcher. At least,
that's how things work on my machines and it's the reason I use a second
audio card for speech-dispatcher. If using alsa in such a configuration
you'll want to identify the appropriate device in
/etc/speech-dispatcher/speechd.conf. Here's the relevant line from my
file:

#AudioALSADevice "plughw:1"

Note this line is commented because I'm using libao, not alsa, which is
slected higher up in that file. libao simply chooses the first available
audio card when launched. In my case that turns out to be hw:1.

People using pulseaudio will have a different approach. I can't speak to
that, it's never worked for me.

hth

Janina

Willem van der Walt writes:
Good day,
I have revived my x-windows system, but still need to get orca running.
Actually, it seem to be running, but it is not talking as my
speech-dispatcher is not working.
I kind of remember that one had a choice to either directly use espeak or
use it through speech-dispatcher.
OK, so I am trying to run orca from a console, to set it up to use espeak
directly, but it wants to connect to the x server.
How can I make this change from the command line?
I am happy to edit configuration files if I know which one and where to look
for it.
I am running ubuntu 18.04, reached through an upgrade.
The orca version is 3.28.0
TIA, Willem


_______________________________________________
orca-list mailing list
orca-list gnome org
https://mail.gnome.org/mailman/listinfo/orca-list
Orca wiki: https://wiki.gnome.org/Projects/Orca
Orca documentation: https://help.gnome.org/users/orca/stable/
GNOME Universal Access guide: https://help.gnome.org/users/gnome-help/stable/a11y.html
Log bugs and feature requests at http://bugzilla.gnome.org
--

Janina Sajka

Linux Foundation Fellow
Executive Chair, Accessibility Workgroup:    http://a11y.org

The World Wide Web Consortium (W3C), Web Accessibility Initiative (WAI)
Chair, Accessible Platform Architectures    http://www.w3.org/wai/apa


_______________________________________________
orca-list mailing list
orca-list gnome org
https://mail.gnome.org/mailman/listinfo/orca-list
Orca wiki: https://wiki.gnome.org/Projects/Orca
Orca documentation: https://help.gnome.org/users/orca/stable/
GNOME Universal Access guide: https://help.gnome.org/users/gnome-help/stable/a11y.html
Log bugs and feature requests at http://bugzilla.gnome.org

_______________________________________________
orca-list mailing list
orca-list gnome org
https://mail.gnome.org/mailman/listinfo/orca-list
Orca wiki: https://wiki.gnome.org/Projects/Orca
Orca documentation: https://help.gnome.org/users/orca/stable/
GNOME Universal Access guide: https://help.gnome.org/users/gnome-help/stable/a11y.html
Log bugs and feature requests at http://bugzilla.gnome.org


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]