感谢各路大神指导,自己买了一个TTL语音模块做了一个语音播报的小功能,分享给大家。

问答  收藏
23 / 318

语音模块用的是科星的文本转语音,使用最简单的 TCP 协议,编码格式为 GB2312
思路是利用工作流取参数,因为我这边涉及子表,所以加了个子流程取关联表的参数,我不会代码,这是用文心一言写的语句,我这边测试没问题,语法如果不对,我也解释不了 😄

860fd6f94ea1f1c76fa3c17e751ec518.mp4

image.png

最后用 python 发送播报内容
image.png

python 代码如下:

import socket
data = input["data" ]
data3 = input["data3" ] # 注意这里使用了圆括号而不是方括号
def send_message_to_server(hostname, port, message):
try:

创建一个 socket 对象

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:

连接到服务器

s.connect((hostname, port))

将消息编码为 GB2312(如果原始消息是 Unicode 字符串)

encoded_message = message.encode('gb2312')

发送数据

s.sendall(encoded_message)
print(f"Message '{message}' (encoded as GB2312) sent successfully.")

# 接收响应(可选),并假设服务器也使用GB2312编码发送响应  
        data = s.recv(1024)  
        decoded_data = data.decode('gb2312')  # 解码响应为GB2312  
        print(f"Received: {decoded_data}")  
except Exception as e:  
    print(f"An error occurred: {e}")

def api(hostname, port, message):

调用 send_message_to_server 函数

send_message_to_server(hostname, port, message)

由于 send_message_to_server 没有返回值(除了可能的异常),API 函数也返回 None

return None

示例用法

hostname = ' ' # 替换为你的域名
port = 50000 # 替换为你的端口号
message = "#" +data+"运输车辆为"+data3+",请尽快发货。" # 使用中文字符串作为示例

调用 API 函数发送消息

output = api(hostname, port, message)