Как записать WAV-файл из данных с помощью WAVIO API - PullRequest
2 голосов
/ 01 ноября 2019

Я использую WAVIO python API для записи данных в файл .wav. Чтобы протестировать этот API, сначала я читаю файл данных .wav, а затем хочу сгенерировать .wav, содержащий те же данные входного файла .wav, но я получил ошибку при записи данных в выходной файл wav.

import numpy as np
import wavio

wa = wavio.read("s24.wav")  #Read a .wav file
print("x= "+str(wa.data))   #Data
print("rate= "+str(wa.rate))    #Rate
print("sampwidth= "+str(wa.sampwidth))  #sampwidth
wavio.write("sine24_output", wa.data, wa.rate,wa.sampwidth)   #Error is here

Ошибка:

Трассировка (последний последний вызов):

  File "C:/Users/user/Desktop/Wav2Bytes/wavii.py", line 24, in <module>
    wavio.write("sine24_output", wa.data, wa.rate,wa.sampwidth)   #Write a .wav file. Error is here
  File "C:\Program Files (x86)\Python\lib\site-packages\wavio.py", line 363, in write
    vmin, vmax = scale
TypeError: cannot unpack non-iterable int object

1 Ответ

0 голосов
/ 01 ноября 2019

Вам не хватает имени аргумента sampwidth. Согласно документам , есть 5 аргументов, если вы не укажете имя sampwidth, вместо этого для scale будет установлено значение wa.sampwidth. В любом случае просто используйте это:

wavio.write("sine24_output", wa.data, wa.rate,sampwidth=wa.sampwidth)

...