Вопрос возник правильно ли я сделал частотную модуляцию в правом канале.
import numpy as np import pyaudio import numpy, scipy, matplotlib from matplotlib import pyplot as plt # задаем параметры сигнала freq_left = 10000 # частота левого канала freq_right = 10000 # частота правого канала duration = 1 # длительность сигнала в секундах sample_rate = 44100 # частота дискретизации # создаем массивы данных для левого и правого каналов num_samples = int(duration * sample_rate) #time_array = np.arange(num_samples) / float(sample_rate) time_array = np.arange(num_samples) / float(sample_rate) sin_data_left = np.sin(2 * np.pi * freq_left * time_array) sin_data_right = np.sin(2 * np.pi * freq_right * time_array) sin_data = np.sin(2 * np.pi * 2 * time_array) # объединяем массивы в один двумерный массив # создаем объект PyAudio и открываем поток для воспроизведения p = pyaudio.PyAudio() stream = p.open(format=pyaudio.paFloat32, channels=2, rate=sample_rate, output=True) stream_mic = p.open(format=pyaudio.paFloat32, channels=1, rate=sample_rate, input=True, frames_per_buffer=sample_rate) while True: frames = [] data = stream_mic.read(sample_rate) frames.append(data) audio_data = np.frombuffer(b''.join(frames),dtype=np.float32)#преобразовал байты с микрофона в float32 frames = [] #modulation = 5 * np.sin(2 * np.pi * freq_right * time_array + 2 * np.sin(2 * np.pi * sin_data * time_array)) modulation = np.sin(2*np.pi*freq_right*np.arange(len(audio_data))/sample_rate)*audio_data stereo_data = np.column_stack((sin_data_left, modulation)) from scipy.io.wavfile import write write("left.wav", sample_rate, stereo_data) plt.plot(time_array,modulation ) plt.show() stream.stop_stream() stream.close() p.terminate()