如何将当前选定的文本发送到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)"

如果一切正常,你必须听到一些。。。

09-25 20:55