Как создать чирикант, который останавливается на определенной частоте? - PullRequest
0 голосов
/ 06 июня 2018

SciPy предоставляет функцию чириканья для генерации сигнала, который постепенно меняет частоту.Как мне сгенерировать один из этих сигналов, который останавливается на определенной частоте и продолжается с этой частотой?

Я попытался сделать это с помощью следующего, но чирикант, кажется, превышает предел f1, и это создаетпрерывистый переход в финал f1 разрешение

import numpy as np
from scipy.io import wavfile

samplerate = 44100
length = 5
chirplength = 3

f0 = 440
f1 = 880

signal = np.arange(chirplength*samplerate)/(chirplength*samplerate)
signal = np.interp(signal, [0, 1], [f0, f1])
signal = np.append(signal, np.repeat(f1, (length-chirplength)*samplerate))
signal = np.sin(signal * 2 * np.pi * np.arange(length*samplerate)/samplerate)
signal = np.float32(signal)
wavfile.write("audio.wav", samplerate, signal)

1 Ответ

0 голосов
/ 06 июня 2018

Вы пытаетесь интегрировать путем умножения на рампу, которая, очевидно, не будет работать.

Попробуйте заменить

signal = np.sin(signal * 2 * np.pi * np.arange(length*samplerate)/samplerate)

на

signal = np.sin(signal.cumsum() * 2 * np.pi / samplerate)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...