如何将当前选定的文本发送到festival这样的应用程序?有一个视频教程,我看了很久以前,其中解释了如何,但我再也找不到它。
最佳答案
通过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不在这里,您可能必须在另一个控制台中运行
festival --server
)阅读文档
每种服务器都使用自己的协议。对于web服务器(在端口80上),协议有很好的文档记录。对于具体的工具,比如festival,您必须参考原始文档。
TCP通信实验室。
为了测试TCP连接,有一个很棒的瑞士小刀叫做
netcat
:使用
netcat
访问web服务器的示例:nc google 80 <<<$'HEAD / HTTP/1.0\r\n\r'
这将打开一个到(其中一个)google服务器的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
要向festival发送请求,必须使用
LISP
语法,并将脚本简单地发送到套接字:nc localhost 1314 <myscript >raw_output
或
nc localhost 1314 <<< "(tts_text \"Hello world\" nil)(quit)"
如果一切正常,你必须听到一些。。。