linux - 将选定的文本发送到节日

标签 linux bash

如何将当前选定的文本发送到节日等应用程序?我很久以前看过一个视频教程,其中解释了如何操作,但我再也找不到了。

最佳答案

通过 TCP

的节日和进程间通信

Festival 在服务器模式下工作,打开一个 TCP 端口来监听(默认端口 1314)。

你可以运行(在 GNU/Linux 系统上):

netstat -tanp | grep LISTEN
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address   State    PID/Program name
tcp        0      0 0.0.0.0:22        0.0.0.0:*         LISTEN   485/sshd
tcp        0      0 0.0.0.0:1314      0.0.0.0:*         LISTEN   28442/festival

所以我确定 Festival 服务器正在运行并使用 TCP 端口 1314。

(如果这里没有节日,您可能必须在另一个控制台中运行 festival --server)

阅读文档

每种服务器都使用自己的协议(protocol)。对于 Web 服务器(在端口 80 上),该协议(protocol)有详细记录。对于特定工具,例如 festival,您必须引用原始文档。

TCP 通信实验室。

为了测试 TCP 连接,有一个很棒的 swiss-knife 叫做 netcat:

使用 netcat 访问 Web 服务器的示例:

nc google 80 <<<$'HEAD / HTTP/1.0\r\n\r'

这打开一个 TCP 套接字到(其中一个)谷歌服务器并发送一个 HEAD/ 请求。答案可能是:

HTTP/1.1 200 OK
Date: Sun, 05 Jan 2014 08:59:00 GMT
Server: Apache/2.2.22 (Debian)
Last-Modified: Mon, 03 Jun 2013 08:07:06 GMT
ETag: "48b79-1b4e-4de3b73517e80"
Accept-Ranges: bytes
Content-Length: 6990
Connection: close
Content-Type: text/html

要向节日发送请求,您必须使用 LISP 语法,并将您的脚本简单地发送到套接字:

nc localhost 1314 <myscript >raw_output

nc localhost 1314 <<< "(tts_text \"Hello world\" nil)(quit)"

如果一切正常,您一定会听到一些声音...

关于linux - 将选定的文本发送到节日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20930525/

相关文章:

arrays - 使用变量作为数组名称在 bash 中创建数组

bash - 在 bash 脚本中将 csv 转换为 CRLF 行结尾

java - 使用-cp运行java程序

连接因对等套接字写入错误而重置

python - 使用 stdout/stderr 以外的管道与子进程通信

linux - bash 函数与别名冲突

bash - 如何配置 bash 完成来扩展部分路径,如 emacs "minibuffer-complete"?

bash - 如果其中一个文件失败,如何退出 find -exec

php - 在 Linux 系统上包含相对路径的文件问题

c++ - 使用 Eclipse CDT 进行复杂配置