通信交互 socket套接字 音频传输
服务端:
#音频文件传输
import socket,wave
hostname = socket.gethostname()
port = 8888
#开始
# 基本架构
s = socket.socket()
s.bind((hostname,port))
s.listen()
a,b = s.accept()
content = a.recv(921600)
with open('text.wav','wb') as f:
f.write(content)
s.close()
#实时音频传输
import socket,pyaudio
s = socket.socket()
s.bind((socket.gethostname(),8888))
s.listen()
a,b = s.accept()
#
wav = pyaudio.PyAudio()
chunk_size = 1024 # 512
audio_format = pyaudio.paInt16
channels = 1
rate = 20000
write = wav.open(format=audio_format, channels=channels, rate=rate, output=True,
frames_per_buffer=chunk_size) #输出
while 1:
audio_data = a.recv(350)
write.write(audio_data)
s.close()
# 打开声卡,设置 采样深度为16位、声道数为2、采样率为16、输入、采样点缓存数量为2048
# write = wav.open(format=pyaudio.paInt16, channels=2, rate=16000, input=True, frames_per_buffer=2048)
客户端:
#音频文件传输
import socket,wave
import numpy as np
hostname = socket.gethostname()
port = 8888
#基本架构
s = socket.socket()
s.connect((hostname,port))
with wave.open('output.wav') as f:
#读取音频帧数
nframes = f.getnframes()
#读取采样频率
framerate = f.getframerate()
#读取全部帧
frames = f.readframes(nframes)
print(nframes,framerate)
#以数组形式保存
framerates = np.frombuffer(frames,dtype='short')
s.sendall(framerates)
s.close()
#实时音频传输
import socket,pyaudio
s = socket.socket()
s.connect((socket.gethostname(),8888))
#
wav = pyaudio.PyAudio()
chunk_size = 1024 # 512
audio_format = pyaudio.paInt16
channels = 1
rate = 20000
read = wav.open(format=audio_format, channels=channels, rate=rate, input=True,
frames_per_buffer=chunk_size) #录入
while 1:
audio_data = read.read(2048) # 读出声卡缓冲区的音频数据
s.sendall(audio_data)
s.close()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?