Преобразование байтов в ndarray в Python

У меня есть сценарий 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, чтобы не читать из файла: непроверенный).

sascha 03.05.2018 16:04
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
618
0

Другие вопросы по теме