Speech-dispatcher 停止工作,spd-say 启动,但在几个词之后停止

Speech-dispatcher 停止工作,spd-say 启动,但在几个词之后停止

我的语音调度程序有问题。如所述:speech-dispatcher停止工作。spd-say启动,但在说了几句话后停止。

更准确地说:

  1. 我有一篇较长的文字。(这https://github.com/systemd/systemd/blob/master/NEWS从 246 更改 到 245 更改)
  2. 我将其输入到 spd-say 中:spd-say -l de -r 50 -t male1 "$(cat temp.txt)"
  3. 我注意到它正在用德语读英语。所以我照做了killall speech-dispatcher。这实际上给我带来了麻烦。
  4. 我运行了sudo service speech-dispatcher restart。然后spd-say -l en -r 50 -t male1 "$(cat temp.txt)"它再也没有完成第二句话。Firefox 中的朗读功能也不再起作用了。

我认为使用 killall 通常不是一个好主意,并且我错过了 spd-say 的以下选项:

-w, --wait          Wait till the message is spoken or discarded
-S, --stop          Stop speaking the message being spoken
-C, --cancel            Cancel all messages

有人可以帮助我让语音调度程序重新工作而无需重新启动或注销吗,并告诉我它是如何在 gnome 会话中集成的,这似乎是这里的问题,因为系统范围的语音调度程序被禁用。

修改 1:刚刚启动了虚拟机,它在输入相同文本示例和其他文本示例时失败。我尝试输入少一点的文本,删除开头的空格和星号,但它仍然在第二句中间中止。在另一个例子中,它在第一个句子之后停止(此处:https://docs.ansible.com/ansible/latest/network/dev_guide/developing_plugins_network.html)。好的一面是:当我在 Firefox 中没有选项可以读取页面或文件上的文本时,我开始使用此命令。我刚刚注意到它至少可以很好地读取 systemd 更改日志。

编辑 2:Firefox 可以再次运行了,在我费尽心思尝试解决最初的问题之后,它只需要重新启动。

答案1

您需要使用 spd-say -w 来防止这种情况发生。

如果没有它,spd-say 会向 Speech-dispatcher 发送说某事的请求,Speech-dispatcher 会说“好的,我会这样做!”,然后 spd-say 会退出。如果此时 Speech-dispatcher 还没有说完,spd-say 退出后它就会停止。

我不知道为什么架构决定这样做。因为是这样,所以我认为 spd-say 应该使用 --no-wait 而不是 --wait 更有意义,但我认为我们都同意文档在这一点上没有它应该的那么清楚。

相关内容