TypeError: аргумент 1 должен быть байтовым объектом, доступным только для чтения, а не из памяти - PullRequest
0 голосов
/ 18 ноября 2018

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

...