Высокочастотный звук Python - PullRequest
0 голосов
/ 31 января 2020

Я начал писать скрипт, который должен генерировать звук любой частоты. Я нашел несколько примеров и попытался их запустить. Потом я случайно установил 16000 Гц и как-то мой компьютер играл, хотя и не должен. Кто-нибудь знает, почему я слышу такой высокий т. звук? Я имею в виду, что в коде должна быть ошибка.

SAMPLE_RATE = 44100
S_16BIT = 2 ** 16

def generate_sample(freq, duration, volume):

    amplitude = np.round(S_16BIT * volume)
    total_samples = np.round(SAMPLE_RATE * duration)
    w = 2.0 * np.pi * freq / SAMPLE_RATE
    k = np.arange(0, total_samples)

    return np.round(amplitude * np.sin(k * w))


freq_array = np.array([260.00, 290.00, 329.63, 350.00, 392.00, 440.00, 800.00, 16000.00])

tones = []
for freq in freq_array:

    tone = np.array(generate_sample(freq, 1.0, 1.0), dtype=np.int16)
    tones.append(tone)


def fmain():
    p = pa.PyAudio()

    stream = p.open(format=p.get_format_from_width(width=2), channels=2, rate=SAMPLE_RATE, output=True)

    stream.write(tones[7])
    stream.stop_stream()
    stream.close()
    p.terminate()


fmain()

UPD: 30 кГц также можно услышать по некоторым причинам.

1 Ответ

0 голосов
/ 31 января 2020

Нет ошибок, верхний предел человеческого уха составляет 20000 Гц или 20 кГц, 16 кГц находится в пределах допустимого диапазона.

https://en.wikipedia.org/wiki/Hearing_range

...