我正在将一个库从Python 2更新到Python 3.7,该库接受来自麦克风的声音输入并将其转换为音高。但是,运行程序时出现此错误:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/analyse.py", line 58, in detect_pitch
dp = analyseffi.detect_pitch(chunk2, min_frequency, max_frequency, samplerate, sens, ratio)
TypeError: argument 1 must be read-only bytes-like object, not memoryview
似乎与以下代码有关:
# Read raw microphone data
rawsamps = stream.read(1024)
# Convert raw data to NumPy array
samps = numpy.frombuffer(rawsamps, dtype=numpy.int16)
# Show the volume and pitch
print(analyse.musical_detect_pitch(samps))
通过将chunk2
放在函数中来获取错误消息中的chunk2 = samps.data[:]
。我一直在尝试解决错误,但是基于我的有限理解,“只读字节状对象”与“ memoryview”非常相似。所以我不确定从一个转换到另一个的方法。