извините, если это было задано раньше, я проверил, но не смог найти ответ на мою проблему. Я пытаюсь воспроизвести звук с использованием pyaudio с использованием многопроцессорности, поэтому я могу получить вход (в конечном счете, с платы NI, но только клавиатуру на данный момент) одновременно. Я попытался использовать модуль многопроцессорности и получил этот код (функция gensin возвращает два массива numpy, вектор времени и вектор sin). Я новичок в обоих многопроцессорной и pyaudio модуля, так что любая помощь будет очень признателен :)Использование модульной многопроцессорности с pyaudio
def play_sound(frequency,duration,sampRate):
#generate the sin wave
t, wave = gensin(frequency,duration,sampRate)
#open the audio file
p = pyaudio.PyAudio()
#create a stream to play
stream = p.open(format = pyaudio.paFloat32,
channels = 1,
rate = sampRate,
output = True)
stream.write(wave.astype(np.float32).tostring())
p.close(stream)
frequency = 1200
duration = 0.5
sampRate = 64000
p1 = multiprocessing.Process(target=play_sound,name='audioOut',args=(frequency,duration,sampRate))
Когда я затем выдать команду
p1.run()
он играет хорошо, но я не думаю, что я могу получить параллелизм таким образом.
, но когда я пытаюсь
if __name__ == '__main__':
p1.start()
p1.join()
Я получаю следующее сообщение об ошибке:
Process play sounds:
Traceback (most recent call last):
File "/Applications/anaconda/python.app/Contents/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/Applications/anaconda/python.app/Contents/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "<ipython-input-5-d9030c79195e>", line 13, in play_sound
output = True)
File "/Applications/anaconda/lib/python2.7/site-packages/pyaudio.py", line 747, in open
stream = Stream(self, *args, **kwargs)
File "/Applications/anaconda/lib/python2.7/site-packages/pyaudio.py", line 442, in __init__
self._stream = pa.open(**arguments)
IOError: [Errno Internal PortAudio error] -9986
Я бегу Йосемити на 2013 Macbook Pro, этот код выполняется в IPython, но это не делает работайте в сценарии python, и я получаю тот же номер ошибки PortAudio. Я пытался использовать бильярд вместо многопроцессорности, и это ничего не меняло. Любые советы были бы очень полезны. Благодаря :).
Что, кажется, работает использует бильярд и, сразу после импорта, установка billiard.forking_enable ('False'). Проблема решена :) – user3235916