通信交互 socket套接字 音頻傳輸
服務(wù)端:
#音頻文件傳輸
import socket,wave
hostname = socket.gethostname()
port = 8888
#開始
# 基本架構(gòu)
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()
#實(shí)時(shí)音頻傳輸
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()
# 打開聲卡,設(shè)置 采樣深度為16位、聲道數(shù)為2、采樣率為16、輸入、采樣點(diǎn)緩存數(shù)量為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
#基本架構(gòu)
s = socket.socket()
s.connect((hostname,port))
with wave.open('output.wav') as f:
#讀取音頻幀數(shù)
nframes = f.getnframes()
#讀取采樣頻率
framerate = f.getframerate()
#讀取全部幀
frames = f.readframes(nframes)
print(nframes,framerate)
#以數(shù)組形式保存
framerates = np.frombuffer(frames,dtype='short')
s.sendall(framerates)
s.close()
#實(shí)時(shí)音頻傳輸
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) # 讀出聲卡緩沖區(qū)的音頻數(shù)據(jù)
s.sendall(audio_data)
s.close()

浙公網(wǎng)安備 33010602011771號(hào)