You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python通过Socket实现互联网传输PyAudio音频数据

实现方案

我们基于TCP Socket实现音频流实时传输,音频参数和你现有录音代码保持一致,无需修改原有录音逻辑核心,分为服务端(接收音频并播放)和客户端(录制音频并发送)两个脚本,运行前确保两台设备在同一局域网下,或者服务端配置了公网端口映射。

依赖安装

首先确保安装所需库:

pip install pyaudio

1. 服务端代码(接收端,运行在接收语音的设备上)

import socket
import pyaudio

# 音频参数 和客户端保持完全一致
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100

# Socket配置
HOST = '0.0.0.0'  # 监听所有网卡地址
PORT = 50007  # 端口号可自行修改,客户端要和这里一致

# 初始化PyAudio
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                output=True,
                frames_per_buffer=CHUNK)

# 启动Socket服务
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen(1)
    print(f"等待客户端连接,端口:{PORT}")
    conn, addr = s.accept()
    with conn:
        print(f"已连接客户端:{addr}")
        while True:
            data = conn.recv(CHUNK)
            if not data:
                break
            stream.write(data)

# 关闭资源
stream.stop_stream()
stream.close()
p.terminate()

2. 客户端代码(发送端,运行在录制语音的设备上)

这里复用了你原有录音的核心逻辑,只修改了存储部分为Socket发送:

import socket
import pyaudio

# 音频参数 和服务端保持完全一致
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 10  # 录音时长按需修改

# Socket配置 填服务端的IP地址
HOST = '127.0.0.1'  # 本地测试用127.0.0.1,跨设备填服务端的局域网/公网IP
PORT = 50007  # 和服务端端口一致

# 初始化PyAudio
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)

# 连接服务端
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    print("开始录音并发送")
    for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
        data = stream.read(CHUNK)
        s.sendall(data)
    print("发送完成")

# 关闭资源
stream.stop_stream()
stream.close()
p.terminate()

使用说明

  • 先运行服务端脚本,再运行客户端脚本
  • 跨设备使用时,需要关闭服务端设备的防火墙,或者开放对应端口的访问权限
  • 如果需要持续实时传输,把客户端的for循环替换为while True:即可,停止传输直接中断脚本就行
  • 如果需要实现双向语音聊天,分别在两台设备上同时运行服务端和客户端即可,监听和发送用不同端口

内容的提问来源于stack exchange,提问作者snipersnake004

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 04:18:01