通信交互 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()
posted @   记录——去繁就简  阅读(441)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示