Okular中的“朗读文本”功能无法正常工作。我该如何使其正常运行?

我目前正在使用Ubuntu 18.04和Okular来查看PDF文档。我觉得如果能够使用“文字转语音”功能会很方便。我尝试按照这里给出的所有指示进行操作:http://freesoftwaremagazine.com/articles/listen_your_books_epub_pdf_okular/(这是我在网上找到的唯一来源),但我仍然无法使文字转语音功能正常工作。请问你能告诉我应该怎么做才能让它正常工作吗?如果由于已经被弃用而不可能实现,你能否推荐一个好的替代方案? 我尝试从终端打开应用程序来听取音频。当我选择了一部分文本并点击“朗读文本”时,终端上显示的输出如下:
using null output device, none available
qt.speech.tts.flite: "Failed to start audio output (error 1)"

你确定这个 pdf 文件包含文本吗?可能有一些页面是由[扫描]图像组成的。安装 poppler-utils 并运行 pdftotext your-file.pdf /dev/stdout - 终端窗口是否有任何输出?如果有输出,您可以安装 espeak 并运行 pdftotext your-file.pdf /dev/stdout | espeak。我现在测试了它可以正常工作。您可以将输出文本存储在文件中,并从该文件中使用 grep 段落到 espeak。提示:pdftotext your-file.pdf(不带输出文件名和重定向)将写入文件 your-file.txt - sudodus
@sudodus 是的,我确保了 PDF 中包含文本。谢谢!我会尝试使用 espeak 和 pdftotext。 - Sreram
3个回答

我成功地按照这个指示集进行了操作。

Install the dispatcher:

sudo apt-get install speech-dispatcher 

Install the synthesizer:

sudo apt-get install espeak

Install the speech plugin for Okular:

sudo apt-get install qtspeech5-speechd-plugin

Note: in this moment the version of Qt is 5. In the future, when you still read this article, you may find the version changed and the package version or name changed as well. This article is based only on current version.

Run the dispatcher first:

speech-dispatcher -d

You must run Okular after speech-dispatcher.


这对我也起作用了。 - milia

Qt Multimedia模块默认情况下未安装,因此您需要手动安装它。
sudo apt install qml-module-qtmultimedia

对我来说不起作用。 - milad
对我来说不起作用。 - soham
这对我来说很有效,谢谢。 - milia

程序包

安装两个包

sudo apt install poppler-utils espeak
复制并粘贴文本 如果你可以的话
  • 直接从 pdf 文档中复制粘贴一段文本,或者
  • 创建一个名为 your-file.txt 的文本文件,使用以下命令:

    pdftotext your-file.pdf
    

    然后在文本编辑器中打开该文本文件,并从中复制一段文本。

然后你可以将这段文字粘贴到一个正在运行espeak的终端窗口中。
$ espeak
或者如果有烦人的警告输出
$ espeak 2>/dev/null
按下回车键,espeak将等待终端输入,因此请从您的pdf文件中复制粘贴一些文本到okular(或从其他程序中复制粘贴,如我在firefox中所示的问题标题)。
The “Speak Text” feature in Okular is not working. How do I get it to work?
按Enter键开始朗读。复制并粘贴其他文本片段,然后按Enter键进行听取。使用Ctrl+C退出espeak。 请参阅屏幕截图:

enter image description here

将文本导入到espeak中 您可以将输出重定向到espeak,并听取来自pdf文件的所有文本。
pdftotext your-file.pdf /dev/stdout | espeak
或者如果您有一个文本文件,可以直接从中读取。
< your-file.txt espeak
或者如果你想要一个会说话的时钟
LC_TIME=C date '+%A, %B, %-d, %Y; %H and %M' | espeak

8这不会使Okular的文本转语音功能工作! - Muhammad Yusuf
@MuhammadYusuf,不是的,但这是一个变通方法,对于原帖的作者来说很有用。 - sudodus
2你真的希望我们每次都复制粘贴吗?这太荒谬了,绝对不能算是正确的答案。 - milad