Аудио вывод PyAudio становится очень изменчивым при увеличении размера буфера - PullRequest
1 голос
/ 27 января 2020

В настоящее время я пытаюсь внедрить отсроченную слуховую обратную связь в эту программу python, чтобы мы могли использовать ее для нашего старшего класса проектирования. Отсроченная аудио часть хороша, но когда дело доходит до исследования, задержанный эффект должен «увеличиваться», то есть начинаться с 0 мс и увеличиваться до желаемой величины, например 200 мс.

Вот устройства, которые я настроил (буфер начинается с 44, потому что это эквивалентно 1 мс задержки):

try:
    streamIn = device.open(
        format=paFloat32,
        channels=self._CHANNELS,
        rate=self._RATE,
        input=True,
        frames_per_buffer=44
    )

    streamOut = device.open(
        format=paFloat32,
        channels=self._CHANNELS,
        rate=self._RATE,
        output=True,
        frames_per_buffer=44
    )

И затем, когда дело доходит до потоковой передачи аудио, это это то, что у меня есть (буфер увеличивается на 44, потому что каждые 1 мс - это увеличение до 44 буфера):

delayDisplay = 1
count = 0
while self._streamIn.is_active():
    if self._buffer < self._actualBuffer:
        self._buffer = self._buffer + 44
        delayDisplay = delayDisplay + 1
        count = count + 1
    self._trigger.emit(delayDisplay/1000)
    audioData = self._streamIn.read(self._buffer)
    self._streamOut.write(audioData)

В настоящее время он работает. Звук задерживается с возрастающей скоростью, но когда он достигает примерно 180 мс, звук начинает прерываться и становится очень прерывистым.
Кто-нибудь знает, как это исправить, если для этого есть решение?

...