前言
准备用C++写一个简单的文字转语音的小东西,对C++ qt这个怎么弄不太清楚(现在看到qt5.8后有个叫QTextToSpeech的东西),发现python调用一些库来进行文字转语音的发声比较简单,准备用python来进行接受C++信息,转成语音。
python端
python文字转语音还比较简单,导入pyttsx3这个库,然后调用一下就可以了。用的socket通讯,python是作为服务端接受信息。
import socket # 导入 socket 模块
import pyttsx3 as py3
port = '127.0.0.1' #定义ip
ip = 12345 #定义端口
#申请socket服务端对象
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 创建 socket 对象
s.bind((ip, int(port))) # 绑定端口
s.listen(5) # 等待客户端连接
while True:
print("> 服务成功开启,等待连接")
client,addr = s.accept() # 建立客户端连接
data = client.recv(2048) #一次最多接受2048个字节
receive_data = data.decode('gb18030') #接受到的信息转成这个编码,这个编码范围广一些
engine = py3.init()
engine.say(receive_data)
engine.runAndWait()
client.close()
C++端
C++端作为客户端,发送消息给python。
- 用的VS2013环境,其中要把qt的web socket模块加上。
- 在调用的地方加上#include <QtNetwork/QtNetwork> 这是一个全局的,qtcpsocket在里面。
- 可能需要在配置,链接器,输入中添加Qt5Networkd.lib这个库。
这么用的
头文件里面添加了个QTcpSocket *m_tcpClient;
指针。
QString english_word = mWordList[index].mWord;//得到英语文本信息;
std::string res = english_word.toLocal8Bit().toStdString();//转成string类型;
char *buff = const_cast<char *>(res.c_str());//转成char类型发送;
m_tcpClient->close();//关闭之前在主程序初始化时写了m_tcpClient = new QTcpSocket(this);生成的一个m_tcpClient;这段代码就可以多次调用了;
delete(m_tcpClient);//释放指针空间;
m_tcpClient = new QTcpSocket(this);//新建对象;
m_tcpClient->connectToHost(QHostAddress("127.0.0.1"), 12345);//建立链接;
m_tcpClient->write(buff);//发送信号
OK。
标签:tcpClient,qt,python,C++,data,socket From: https://www.cnblogs.com/shucode/p/16653497.html