我有语音调度程序的问题。如前所述:speech-dispatcher
停止工作。spd-say
开始,但几句话后停止。
更准确地说:
- 我有更长的文字。(此https://github.com/systemd/systemd/blob/master/NEWS从 CHANGES WITH 246 到 CHANGES WITH 245)
- 我把它喂给 spd-say:
spd-say -l de -r 50 -t male1 "$(cat temp.txt)"
- 我注意到它正在用德语阅读英语。所以我做到了
killall speech-dispatcher
。这实际上给我带来了麻烦。 - 我跑了
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 再次工作,在我尝试解决最初的问题后,它只需要重新启动。
你需要 -w 和 spd-say 来防止这种情况。
没有它,spd-say 会将请求发送给语音调度程序,语音调度程序会说“好的,我会这样做!” 不久之后,spd-say 将退出。如果此时 Speech-Dispatcher 还没有说完,它会在 spd-say 退出后停止。
我不知道为什么做出架构决策也是这样做的。因为是这样,所以 spd-say 的 --no-wait 比 --wait 对我来说更有意义,但我认为我们都同意文档在这一点上并不像它可能应该的那样清楚成为。