Ubuntu – The “Speak Text” feature in Okular is not working. How to get it to work

okularsoftware-recommendationtext to speech

I'm currently using Ubuntu 18.04 and Okular for viewing pdf documents. I thought it would be convenient if I could use the text to speech feature. I tried following all the instructions given here: http://freesoftwaremagazine.com/articles/listen_your_books_epub_pdf_okular/ (which was the only source I could find online) and I'm yet unable to get the text-to-speech feature working. Can you please tell me what should I do to get this working? If it is not possible because it was deprecated, can you please recommend a good alternative?

I tried opening the application from the terminal to listen to the audio. This was the output on the terminal when I selected a part of the text and clicked "Speak Text":

using null output device, none available
qt.speech.tts.flite: "Failed to start audio output (error 1)"

Best Answer

Program packages

Install two packages

sudo apt install poppler-utils espeak

Copy and paste text

If you can

  • copy and paste a piece of text from a pdf document directly or
  • create a text file your-file.txt with

    pdftotext your-file.pdf
    

    and open the text file in a text editor and copy a piece of text from there,

then you can paste the piece of text into a terminal window, where espeak is running.

$ espeak

or if there is annoying warning output

$ espeak 2>/dev/null

Press Enter and espeak will wait for input from the terminal, so copy and paste some text from your pdf file in okular (or from some other program as illustrated with your question's title in my firefox,

The “Speak Text” feature in Okular is not working. How do I get it to work?

Press Enter to start reading aloud. Copy and paste some other pieces of text and press Enter to listen to them. Quit from espeak with ctrl C.

See the screenshot:

enter image description here

Pipe text into espeak

You can redirect the output into espeak and listen to all the text from a pdf file,

pdftotext your-file.pdf /dev/stdout | espeak

or if you have a text file, read from it directly,

< your-file.txt espeak

or if you want a talking clock

LC_TIME=C date '+%A, %B, %-d, %Y; %H and %M' | espeak