接数据.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import socket
  2. import time
  3. import numpy as np
  4. from scipy.io.wavfile import write
  5. # 配置 UDP 端口和绑定地址
  6. UDP_IP = "0.0.0.0" # 监听所有可用的网络接口
  7. UDP_PORT = 8899 # 监听的端口
  8. sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  9. sock.bind((UDP_IP, UDP_PORT))
  10. print("已经连接")
  11. data2 = []
  12. lastroll = None
  13. try:
  14. with open("1.bin","wb") as f:
  15. while True:
  16. data,_ = sock.recvfrom(1500) # 每次接收最大 1024 字节
  17. f.write(data[4:])
  18. roll = int.from_bytes(data[:4],'little')
  19. if lastroll is not None and roll != lastroll +1:
  20. print(roll,lastroll,len(data))
  21. else:
  22. print(len(data))
  23. lastroll=roll
  24. except KeyboardInterrupt:
  25. pass
  26. sock.close()
  27. with open("1.bin","rb") as f:
  28. d=f.read()
  29. data2=np.frombuffer(d,dtype=np.int16).reshape([-1,2])
  30. data2 = data2.astype(np.float32) * 32000.0 / np.max(np.abs(data2))
  31. data2 = data2.astype(np.int16)
  32. write("output.wav", 8000, data2)