如何将foo.txt文件内容通过管道传递给spd-say实现语音朗读?
解决spd-say读取文件内容朗读的问题
你之前的命令没用,核心原因是spd-say默认不读取标准输入(管道传递的内容属于标准输入),它只识别命令行里直接传入的文本参数。给你几个可行的解决方法:
用命令替换把文件内容作为参数传递:
spd-say "$(cat foo.txt)"这个命令会先读取
foo.txt的全部内容,将其作为完整字符串传给spd-say,即可正常触发朗读。用
xargs把标准输入内容转为命令行参数:xargs spd-say < foo.txtxargs会读取foo.txt的内容,自动将其转为spd-say的命令行参数,适合处理内容较长的文件(极端大文件可能会碰到参数长度限制,但普通场景完全够用)。
如果希望优化朗读流畅度(比如把换行换成空格),可以搭配tr命令处理:
tr '\n' ' ' < foo.txt | xargs spd-say
内容的提问来源于stack exchange,提问作者J. Mini
相关产品推荐
相关产品推荐

