gpt4 book ai didi

Python 和 websockets - 发送音频流

转载 作者:行者123 更新时间:2023-11-28 17:41:11 30 4
gpt4 key购买 nike

我已经设置了套接字服务器并将消息发送到所有连接的客户端。我正在将数据从 python 发送到 javascript。
我想将我的麦克风输入发送给所有收听的客户。
所以在我的 Python 应用程序中,我执行以下操作

import pyaudio
import websocket
import json
import struct
import wave
import pickle

#record
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 40

HOST = 'ws://127.0.0.1:8080'

s = websocket.create_connection(HOST)

s.send('Hii')

p = pyaudio.PyAudio()

for i in range(0, p.get_device_count()):
print(i, p.get_device_info_by_index(i)['name'])

stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK,
input_device_index=1)

print("*recording")

i = 0
frames = []

while i < 20:
data = stream.read(CHUNK)
frames.append(data)
print(i)
i += 1

s.send(pickle.dumps(frames))

send('hi') 由其他连接发送和接收。我尝试发送没有编码的帧,这给了我

TypeError: an integer is required

如果我对帧进行编码(使用 pickle.dumps()),应用程序会运行,但服务器或客户端都会收到它们。而且 json.dumps() 不会'工作。

raise TypeError(repr(o) + " is not JSON serializable")
TypeError: b'\x7f\x03\xa1\x03\x7f\x03=\x03 ...

如果我将帧编码为字符串,脚本会运行并且不会遇到错误。

我正在尝试这个。但我真正想要实现的是将 send 放在循环内并将输入直接流式传输到服务器。当我这样做时,出现以下错误

ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine

我可以看到循环运行了两次然后遇到了错误。为什么?我需要压缩流吗?

有什么建议吗?

最佳答案

试试这个:

s.send(pickle.dumps(frames), opcode=websocket.ABNF.OPCODE_BINARY)

关于Python 和 websockets - 发送音频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23980622/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com