У меня есть сценарий python, в котором я получаю байты, соответствующие звуку (я вызываю API-интерфейс другой программы, которая возвращает байты звука в формате wav). Я хочу обработать сигнал с помощью numpy на этом аудио. В настоящее время я записываю байты в файл и загружаю файл wav обратно с помощью librosa. Но из-за промежуточного дискового ввода-вывода возникает задержка. Могу ли я получить ndarray из этих байтов аудио без записи в файл? Ниже мой код, в котором я пишу в файл и читаю ndarray
def func1():
audioBytes = api_call_to_another_program()
fp = open("tmp.wav", "wb")
fp.write(audioBytes)
return path
def func2(path, sample_rate=someNumber):
myNdArray = librosa.core.load(path, sr=sample_rate)[0]
# some signal processing stuff..
Я хочу что-то вроде этого
def func1():
audioBytes = api_call_to_another_program()
interRep = someFunction(audioBytes) # an intermediate representation for compressing the data a bit
return interRep
def func2(interRep):
myNdArray = inverseOfSomeFunction(interRep)
# some signal processing stuff..






Начните с документации по np.frombuffer (). (при условии, что вам нужны необработанные байты -> массив; не уверен, какие особые вещи выполняются в файлах wav; я думаю, что в scipy есть какой-то wav-reader, который можно использовать с некоторой оболочкой как bytesio, чтобы не читать из файла: непроверенный).