Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 Не работает программа на Python обрабатывающая звук
В папке с программой лежит файл Ring05.wav размером 1107 килобайт

Код программы из обучающей статьи:
Код: [ скачать ] [ спрятать ]
Используется синтаксис Python
import wave
import struct

source = wave.open("Ring05.wav", mode="rb")
dest = wave.open("out.wav", mode="wb")

dest.setparams(source.getparams())

# найдем количество фреймов
frames_count = source.getnframes()

data = struct.unpack("<" + str(frames_count) + "h",
                     source.readframes(frames_count))

# собственно, основная строка программы - переворот списка
newdata = data[::-1]

newframes = struct.pack("<" + str(len(newdata)) + "h", *newdata)

# записываем содержимое в преобразованный файл.
dest.writeframes(newframes)
source.close()
dest.close()

 


Из вывода интерпретатора:
Код:
line 12, in <module>
    data = struct.unpack("<" + str(frames_count) + "h",
struct.error: unpack requires a buffer of 566272 bytes


566 килобайт, разве это много? В чём тут проблема?

 Re: Не работает программа на Python обрабатывающая звук
Может в статье они читали моно аудио файл, а у Вас стерео...
Попробуйте сделать другой wav с моно и прочитайте его своим питон-скриптом.

 Re: Не работает программа на Python обрабатывающая звук
zykov
Скачал вот тут самый маленький файл, при прослушивании через наушники мне показалось что он моно. Та же случилась ошибка

 Re: Не работает программа на Python обрабатывающая звук
crocro23
Когда кажется креститься проверять надо. Разумеется все файлы там стерео.

 Re: Не работает программа на Python обрабатывающая звук
crocro23
Не надо искать моно.
Откройте любой свой стерео wav любым аудио редактором и сконвертируйте его в моно.
(Или сами запишите на микрофон на компьютере или смартфоне.)

-- 23.11.2021, 18:30 --

Или вот нашел моно wav: http://www0.cs.ucl.ac.uk/teaching/GZ05/ ... 9-8000.wav

 Re: Не работает программа на Python обрабатывающая звук
zykov в сообщении #1540261 писал(а):
Или вот нашел моно wav:

Спасибо, теперь программа работает

 Re: Не работает программа на Python обрабатывающая звук
Если более одного канала (например если стерео), то надо что-то вроде:
Используется синтаксис Python
    fp = wave.open(path)
    nchan = fp.getnchannels()
    N = fp.getnframes()
    dstr = fp.readframes(N * nchan)

 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group