Я обновляю библиотеку с 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[:]
внутри функции. Я пытался выяснить, как решить эту ошибку, но, исходя из моего ограниченного понимания, объекты типа «только для чтения» похожи на байты и очень похожи на «вид памяти». Поэтому я не уверен, что мне следует делать, чтобы перейти от одного к другому.