Можно ли преобразовать временной ряд из моно в стерео?

Я загружаю аудиофайл с помощью librosa и хотел бы потенциально преобразовать его в стерео из моно, если файл моно.

Я уверен, что это не нужно говорить, но временной ряд аудио - это np.ndarray [shape=(n,) or (2, n)]. По сути, я действительно спрашиваю, есть ли у меня np.ndarray из shape=(n,), как мне преобразовать его в shape=(2,n)? Это возможно? Я не знаком с этой терминологией.

В качестве альтернативы, есть ли способ просто загрузить файл, используя librosa и только librosa, как стереофайл (при необходимости он выполняет преобразование для меня)? Тот факт, что существует функция librosa.to_mono(), а не функция librosa.to_stereo, меня пугает.

Для контекста я пытаюсь стандартизировать аудиофайлы на основе некоторых параметров (количество каналов, размер выборки и частота и т. д.). Все они будут преобразованы в файлы .wav. Предположительно, файл, совместимый с .wav PMC, можно преобразовать в стерео с помощью библиотеки wave, но я бы предпочел по существу не создавать два файла wav (я полагаю, функция потребует реконструкции файла wav).

Какие-нибудь советы?

Редактировать:

Итак, я узнал о функции np.reshape(). Теперь вопрос в том, как мне изменить форму массива?

Если у меня есть временной ряд аудио, равный shape=(746572,), какой должна быть стереоформа? Будет ли это двумерный массив, который, по сути, дважды является первым массивом? Так

[[1, 2, 3, ..., 746572],
    [1, 2, 3, ..., 746572]]

Или это не так просто?


person John Lexus    schedule 01.07.2020    source источник


Ответы (1)


Ладно, думаю, я понял. В частности, для этой проблемы я думаю, что моя гипотеза о том, что массив нужно повторять дважды, верна. Поэтому простой:

y = np.array([y, y])

Достаточно.

Однако!!! Если вы пытаетесь записать в волновой файл с помощью librosa.output.write_wav(), массив np должен быть совместим с Fortran. Так,

y = np.asfortranarray(np.array([y, y]))

Это полный, правильный ответ. Ваше здоровье

Если есть лучший ответ, пожалуйста, прокомментируйте!

person John Lexus    schedule 01.07.2020