Я получаю ошибку типа при попытке сделать базовую запись с микрофона с помощью pyaudio на OSX. Я только что установил portaudio с помощью brew и установил самую последнюю версию pyaudio с помощью pip. Вроде нормально устанавливаются. Однако при запуске моего кода я получаю:
Traceback (most recent call last):
File "micTest.py", line 37, in <module>
data = stream.read(CHUNK)
File "/usr/local/lib/python2.7/site-packages/pyaudio.py", line 608, in read
return pa.read_stream(self._stream, num_frames, exception_on_overflow)
TypeError: function takes exactly 2 arguments (3 given)
Рассматриваемый код:
import audioop
import pyaudio
import wave
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
CHUNK = 1024
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "file.wav"
audio = pyaudio.PyAudio()
print(audio.get_default_input_device_info())
# start Recording
stream = audio.open(format=FORMAT, channels=CHANNELS,
rate=RATE, input=True,
frames_per_buffer=CHUNK)
print "recording..."
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
mx = audioop.max(data, 2)
print mx
frames.append(data)
print "finished recording"
# stop Recording
stream.stop_stream()
stream.close()
audio.terminate()
waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.writeframes(b''.join(frames))
waveFile.close()
default_audio_device_info выглядит так:
{
'defaultSampleRate': 44100.0,
'defaultLowOutputLatency': 0.01,
'defaultLowInputLatency': 0.00199546485260771,
'maxInputChannels': 2L,
'structVersion': 2L,
'hostApi': 0L,
'index': 0L,
'defaultHighOutputLatency': 0.1,
'maxOutputChannels': 0L,
'name': u'Built-in Microph',
'defaultHighInputLatency': 0.012154195011337868
}
Понятия не имею, что здесь может пойти не так или почему «я» в методе чтения считается аргументом.