Что самый легкий путь состоит в том, чтобы считать wav-файлы с помощью Python [сводка]?

Я хочу использовать Python, чтобы получить доступ к wav-файлу и записать его содержание в форме, которая позволяет мне анализировать его (скажем, массивы).

  1. Я слышал, что "audiolab" является подходящим инструментом для того (он преобразовывает массивы numpy в wav и наоборот).
  2. Я установил "audiolab", но у меня была проблема с версией numpy (я не мог "от numpy.testing импортировать Тестер"). Я имел 1.1.1. версия numpy.
  3. Я установил более новую версию на numpy (1.4.0). Но затем я получил новый набор ошибок:

    Traceback (новый вызов в последний раз): Файл "test.py", строка 7, в импорте scikits.audiolab Файл "/usr/lib/python2.5/site-packages/scikits/audiolab/init.py", строка 25, в от pysndfile импортирует formatinfo, sndfile Файл "/usr/lib/python2.5/site-packages/scikits/audiolab/pysndfile/init.py", строка 1, в от _sndfile импортируют Sndfile, Формат, available_file_formats, available_encodings Файл "numpy.pxd", строка 30, в scikits.audiolab.pysndfile. _ sndfile (scikits/audiolab/pysndfile / _ sndfile.c:9632) ValueError: numpy.dtype, кажется, не корректный текстовый объект

  4. Я сдался для использования audiolab и думал, что могу использовать "волновой" пакет для чтения в wav-файле. Я задал вопрос об этом, но люди рекомендовали использовать scipy вместо этого. Хорошо, я решил сфокусироваться на scipy (я имею 0.6.0. версия).

  5. Но когда я пытался сделать следующее:

    от scipy.io импортируют wavfile
    x = wavfile.read ('/usr/share/sounds/purple/receive.wav')

Я получаю следующее:

Traceback (most recent call last):
  File "test3.py", line 4, in <module>
    from scipy.io import wavfile
  File "/usr/lib/python2.5/site-packages/scipy/io/__init__.py", line 23, in <module>
    from numpy.testing import NumpyTest
ImportError: cannot import name NumpyTest
  1. Так, я сдался для использования scipy. Я могу использовать просто волновой пакет? Мне не нужно много. У меня просто должно быть содержание wav-файла в человекочитаемом формате и, чем я выясню, что сделать с этим.
7
задан Roman 14 January 2010 в 09:51
поделиться

2 ответа

audiolab - лучший способ, но он работает не во всех средах, и разработчик не работает над этим. Я все еще использую Python 2.5, поэтому могу его использовать.

Вы установили libsndfile ?

1
ответ дан 6 December 2019 в 06:03
поделиться

А волновой модуль пробовали? У него меньше зависимостей:

http://docs.python.org/library/wave.html

def everyOther (v, offset=0):
   return [v[i] for i in range(offset, len(v), 2)]

def wavLoad (fname):
   wav = wave.open (fname, "r")
   (nchannels, sampwidth, framerate, nframes, comptype, compname) = wav.getparams ()
   frames = wav.readframes (nframes * nchannels)
   out = struct.unpack_from ("%dh" % nframes * nchannels, frames)

   # Convert 2 channles to numpy arrays
   if nchannels == 2:
       left = array (list (everyOther (out, 0)))
       right = array (list  (everyOther (out, 1)))
   else:
       left = array (out)
       right = left
11
ответ дан 6 December 2019 в 06:03
поделиться
Другие вопросы по тегам:

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