PyAudio выводит сигнал, обработанный из данных, предоставленных пользовательским источником - PullRequest
0 голосов
/ 29 июня 2018

Я использую систему сбора пользовательских сигналов, которая обеспечивает непрерывные данные. У меня проблемы с потоковой передачей данных, обрабатываемых в режиме реального времени с использованием pyaudio. Код выглядит так:

import pyaudio as pya
import numpy as np
import threading
import MyAcq

fs = 50000  
NbEch = 5000
CHUNK = 1000
NbCHUNK = NbEch/CHUNK

def processing(Acq, strm):    
    while MyAcq.AcqActiv:    
    data = Acq.get_data(NbEch)      
    Sig = MyAcq.MyProcess(data).astype('float32')
    for i in range(NbCHUNK) :
        Buffer = Sig[i*CHUNK + np.arange(CHUNK)]
        strm.write(Buffer)            

if __name__ == '__main__':

    Acq = MyAcq.MyAcqSystem()
    Acq.start()
    pa = pya.PyAudio()
    stream = pa.open(format = pya.paFloat32,
                     channels = 1,
                     rate = fs,
                     frames_per_buffer = CHUNK,
                     input = False,
                     output = True)

    t = threading.Thread(target = processing, args =(Acq, stream))
    t.start()

    MyAcq.close()
    stream.stop_stream()    
    stream.close()  
    pa.terminate()

Хотя поток входных данных непрерывен, выходной сигнал прерывается и искажается. Я не понял, как использовать режим обратного вызова. Использование очереди для обмена обработанным сигналом больше не было успешным.

Любая подсказка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...