我是python和Raspberry pi的新手。我参与了一个项目,我必须在wav文件中嵌入一点流。起初我打开了wav文件,它是一个2通道,16位的wav文件。为了更改样本值,我应该将这些样本值转换为float。我试过一个代码。但是当我运行模块时,它会给出错误,因为“name struct”没有定义。而且在这里我试图将数据转换为整数,因为我不知道如何转换成float。如果有人可以帮我纠正这个程序或建议另一个代码,那么这将是一个很大的帮助。谢谢。
from struct import unpack
import numpy as np
import wave
wavfile = wave.open('/home/pi/desktop/codes/mysong.wav','r')
number_of_frames = wavfile.getnframes()
no_channels = wavfile.getnchannels()
raw_data = wavfile.readframes(number_of_frames)
total_samples = number_of_frames * no_channels
fmt = "%ih" % total_samples
integer_data = struct.unpack(fmt,raw_data)
答案 0 :(得分:0)
正如@jonrsharpe所说,你要么:
# if using from ... import ...
from struct import unpack
...
# then change this to
integer_data = unpack(fmt,raw_data)
...
# if using import ...
import struct
...
# then this will work fine
integer_data = struct.unpack(fmt,raw_data)
但请勿混合使用一起匹配进口。