Я использую следующий код для генерации синусоидального звука в Python:
import pyaudio
import numpy as np
p = pyaudio.PyAudio()
volume = 0.5 # range [0.0, 1.0]
fs = 44100 # sampling rate, Hz, must be integer
duration = 600.0 # in seconds, may be float
f = 50.0 # sine frequency, Hz, may be float
# generate samples, note conversion to float32 array
samples = (np.sin(2*np.pi*np.arange(fs*duration)*f/fs)).astype(np.float32)
# for paFloat32 sample values must be in range [-1.0, 1.0]
stream = p.open(format=pyaudio.paFloat32,
channels=1,
rate=fs,
output=True)
# play. May repeat with different volume values (if done interactively)
stream.write(volume*samples)
stream.stop_stream()
stream.close()
p.terminate()
Таким образом, код создает сэмпл заданной длительности и выводит его в виде аудиопотока.Для этого сэмпл сначала загружается в память, поэтому при работе с большими сэмплами у меня возникает проблема с памятью.
Моя следующая цель - создать непрерывный выходной поток 50 Гц.Это возможно с pyAudio?Я все еще новичок в Python и в настоящее время я не знаю, как решить эту проблему.Было бы здорово, если бы кто-нибудь мог помочь мне с этим!
Заранее спасибо
Мои настройки: Python 3.5, Raspberry Pi 3, pyAudio v0.2.11