0

I'm trying to execute shell-commands in emacs which play sounds or otherwise involve audio output, but I'm not having much luck.

When I execute:

(shell-command
 (concat "espeak -v mb-en1 -k5 -s150 " "'" "hello" " " "world" "'" " --stdout|paplay"))

No audio output is generated and I find the following message:

Connection failure: Connection refused
pa_context_connect() failed: Connection refused
1 (#o1, #x1, ?\C-a)

A different though related problem, if I try:

(shell-command
                (concat "mplayer -really-quiet " "/usr/share/sounds/speech-dispatcher/test.wav" " 2> /dev/null"))

Again, I don't actually get any audio output and I find the message:

(Shell command succeeded with no output)
0 (#o0, #x0, ?\C-@)

Both commands work as expected from the actual terminal shell (i.e. they produce audio output).

Edit: Ok, this seems to be part of a more general problem. On my home computer I finally got everything to work by allowing greater permissions to pulse-audio. However, now on my office computer, I'm having trouble getting notify-send to work when issued in shell-command in Emacs. I'm getting the same odd 0 (#o0, #x0, ?\C-@) message when I try to do this.

8
  • 1
    How was your Emacs process launched? Was it from a menu in your desktop environment? If so, try running Emacs from a terminal and see if it works. It might be a problem related to the environment being richer in an actual terminal shell. Dec 3, 2014 at 7:31
  • 1
    Also, try removing 2>/dev/null from your mplayer command, so that you can see whether there are errors. Dec 3, 2014 at 7:32
  • @Francesco: Thanks. Emacs was run as a daemon, autostarting as a process by systemd, and running as a process owned by my username. I then launched an emacsclient instance. The errors from mplayer had to do with connecting to ALSA. Dec 3, 2014 at 14:20
  • 1
    Since this question is about your operating system and only peripherally about Emacs, Unix & Linux would be a better place for it. Do not repost there unless your question is closed here; you can flag your question to request that moderators migrate your question. Dec 4, 2014 at 0:43
  • 1
    What distribution are you running? What else can you tell us about your environment: apparently you're using systemd, which desktop environment do you use? Have you set up SELinux or other hardening mechanism? How do you start Emacs: from your GUI session, or do you start a daemon first? Dec 4, 2014 at 0:44

1 Answer 1

-1

Running paprefs and checking the box next to "enable network access to local sound devices" and under that also the "don't require authentication" box worked as a workaround for the problem.

4
  • You are aware that this enables any system in your local network to play sound on your speakers?
    – user227
    Dec 3, 2014 at 14:25
  • Do you have suggestions on a more limited way of granting permissions such that I can actually get audio output via shell-commands from Emacs? Dec 3, 2014 at 18:32
  • Though, actually, now I'm having trouble with notify-send (see above edit). Dec 3, 2014 at 18:40
  • 2
    Start Emacs through your desktop environment, so that it gets proper permissions to access PulseAudio and your DBus session bus (for notify-send).
    – user227
    Dec 3, 2014 at 18:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.