Чтобы применить речевую аналитику в реальном времени, используя технологии больших данных, я пытаюсь использовать KAFKA в начале. Поэтому сначала я конвертирую файл .wav в байты с помощью WAVIO API, а затем отправляю сообщения, содержащие [data (тип nparray), rate (integer) и sampwidth (integer)] в kafka, после того как эти сообщения будут использованы потребителем, который преобразуетих снова в файл .wav.
Проблема в том, как я могу отправить и получить эти [данные, скорость, объем выборки] в и из kafka в одном сообщении (каждое сообщение представляет файл .wav)?
Для производителя:
producer = KafkaProducer(bootstrap_servers='localhost:9092')
x = wav2bytes("bush_read") # return tuple containing(data, rate, sampwidth)
#here I'm sending 3 messages
producer.send("TestTopic", key=b'data', value=b'%s' % (x[0])) # data -> nparray
producer.send("TestTopic", key=b'rate', value=b'%d' % (x[1])) # rate -> int
producer.send("TestTopic", key=b'sampwidth', value=b'%d' % (x[2])) #sampwidth -> int
send("TestTopic","bush_read")
Для потребителя:
for message in consumer:
msg = message # I want somthing like this
file = bytes2wav("name", msg.data, msg.rate, msg.sampwidth )