如何创建小波变换

2024-10-01 11:27:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从一首歌中创建一个图表。wav

我正在使用下面的代码,但它给出了一个错误

有人能帮我或给我一个简单的建议吗

import matplotlib.pyplot as plt
import numpy as np
import wave
import struct
import math

def main(args):

    arquivoWav = wave.open('meh.wav', 'r')
    print ("Número canais: "), arquivoWav.getnchannels()
    print ("Número bytes: " ),arquivoWav.getsampwidth()
    print ("Taxa de amostragem: "), arquivoWav.getframerate()
    print ("Número de frames: "), arquivoWav.getnframes()
    print ("Compactação: "),arquivoWav.getcompname()

    frames= arquivoWav.readframes(arquivoWav.getnframes())

    deltaX= 1.0 / arquivoWav.getframerate()

    tempo = np.arange(start=0, stop= arquivoWav.getnframes()*deltaX, step= deltaX, dtype=np.float)

    wavDataList = [struct.unpack("<h", frames[nLoop] + frames[nLoop+1])[0]    for nLoop in range(0,len(frames),2) ]

    wavArray= np.array(wavDataList)


    plt.plot(tempo[0:100],wavArray[0:100])
    plt.grid()
    plt.show()


    arquivoWav.close()
    return 0

if __name__ == '__main__':
    import sys
    sys.exit(main(sys.argv))

错误是这样的

File "C:/Users/trans/Music/sem título1.py", line 22, in <listcomp>
wavDataList = [struct.unpack("<h", frames[nLoop] + frames[nLoop+1])[0]    for nLoop in range(0,len(frames),2) ]
TypeError: a bytes-like object is required, not 'int'

Tags: inimportframesmainnpsyspltstruct