как получить wav образцы из wav файла?

Я хочу знать, как вытащить образцы из .wav файла для выполнения оконного соединения двух .wav файлов.

Кто-либо может сказать, как сделать это?

5
задан MaxPowers 18 August 2012 в 09:45
поделиться

2 ответа

Модуль wave стандартной библиотеки - это ключ: после, конечно, import wave в верхней части вашего кода, wave.open ('the.wav', 'r') возвращает объект "wave read", из которого вы может читать кадры с помощью метода .readframes , который возвращает строку байтов, которые являются выборками ... в любом формате, в котором они есть в волновом файле (вы можете определить два параметра, относящиеся к разложению кадров на выборки, с помощью метод .getnchannels для количества каналов и .getsampwidth для количества байтов на выборку).

Лучший способ превратить строку байтов в последовательность числовых значений - использовать модуль array и тип (соответственно) 'B' , 'H' , 'L' для 1, 2, 4 байтов на образец (в 32-битной сборке Python; вы можете использовать значение itemsize вашего массива возразите, чтобы перепроверить это). Если у вас другая ширина выборки, чем массив , который может предоставить вам , вам необходимо разрезать байтовую строку (соответствующим образом заполнить каждый маленький фрагмент байтами, равными 0) и использовать модуль struct . вместо этого (но это неуклюже и медленнее, поэтому используйте вместо него array , если можете).

13
ответ дан 18 December 2019 в 09:47
поделиться

Вы можете использовать wave модуль. Сначала необходимо прочитать метаданные, такие как размер выборки или количество каналов. Используя метод readframes(), вы можете читать выборки, но только как байтовую строку. Исходя из формата выборки, вы должны преобразовать их в образцы с помощью struct.unpack().

В качестве альтернативы, если вам нужны сэмплы в виде массива чисел с плавающей точкой, вы можете использовать модуль io.wavfile SciPy.

2
ответ дан 18 December 2019 в 09:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: