Мне поручено преобразовать клиент из Node в Python для целей автоматизации. Я все сделал до сих пор, но я был в некотором роде заблокирован в связи с последним потоком файла wav в websocket.
Вот пример узла, который мне нужно преобразовать в python:
const startStreaming = () => {
var fileStream = fs.createReadStream(filePath).pipe(soxTransform).pipe(wavTransform).pipe(slow.slowStream(delay))
fileStream.on('data', (data) => {
ws.send(data)
})
fileStream.on('end', () => {
if (endStream) {
ws.send(Buffer('\0'))
} else {
resolve("success")
}
})
}
Я пробовал несколько вещей, моя главная мысль - использовать генератор или сделать что-то вроде этого:
def read_file(path):
data = open(path, 'rb')
while data:
sent = ws.send(data)
if not sent:
# The socket has disconnected if the send fails
break
data = data[sent:]
ws.send(Buffer('\0'))
ws.close()
ws.connect(host)
path = './audio.wav'
read_file(path)
Любое понимание помогло бы, мне никогда не приходилось иметь дело с потоковой передачей звука в python или узле, и даже когда я успешно отправляю аудио на сервер, когда я воспроизводю его на стороне сервера, это в основном просто случайное аудио.