Как сделать генератор шумов разных типов с помощью PyAudio? - PullRequest
0 голосов
/ 17 февраля 2019

Основной вопрос - как заставить одновременно воспроизводить разные частоты, вырезанные ранее?

В моем коде я попытался сделать коричневый шум (срезанный до 1000 Гц), создать списки из полученных значений и после этого воспроизведениячастоты со random.choice.

Но, может быть, есть более простой и правильный способ?

import numpy as np
import pyaudio
import random
import time


freq = np.linspace(0, 10000, 5000)
brown_noise = -(1/1000)*freq+1

brown_norm = brown_noise/np.max(brown_noise)*100


sum_val = []
for j, val in enumerate(brown_norm):
    if val <= 0:
        val_list = [0]
    else:
        val_list = list(np.linspace(0, int(val), int(val)))
    sum_val = sum_val + val_list

sum_val = np.array(sorted(sum_val))/100


start_time = time.time()
measure_time = 0

stream = pyaudio.PyAudio().open(format=pyaudio.paInt8, channels=1, rate=32000, output=True)
while measure_time < 2:
    measure_time = time.time()-start_time
    value = int(random.choice(sum_val)*512)
    stream.write(chr(value))


stream.close()
pyaudio.PyAudio().terminate()

В результате хочется услышать разницу между разными типами шумов.

...