我正在编码WAVE音频文件的基本频率analisys,但是在从WAVE帧转换为整数时遇到麻烦。
这是我的代码的相关部分:
import wave track = wave.open('/some_path/my_audio.wav', 'r') byt_depth = track.getsampwidth() #Byte depth of the file in BYTES frame_rate = track.getframerate() buf_size = 512 def byt_sum (word): #convert a string of n bytes into an int in [0;8**n-1] return sum( (256**k)*word[k] for k in range(len(word)) ) raw_buf = track.readframes(buf_size) ''' One frame is a string of n bytes, where n = byt_depth. For instance, with a 24bits-encoded file, track.readframe(1) could be: b'\xff\xfe\xfe'. raw_buf[n] returns an int in [0;255] ''' sample_buf = [byt_sum(raw_buf[byt_depth*k:byt_depth*(k+1)]) - 2**(8*byt_depth-1) for k in range(buf_size)]
问题是:当我绘制sample_buf
单个正弦信号时,会得到
另一种破坏的正弦信号。我不知道为什么信号重叠udpside-down。
任何的想法?
PS:由于我是法语,所以我的英语很犹豫。如果有难看的错误,请随时进行编辑。