簡體   English   中英

有沒有一種方法可以在不使用 winsound 的情況下產生特定頻率的嗶聲?

[英]Is there a way of producing a beep at a specific frequency without using winsound?

我一直在嘗試編寫一個以給定頻率生成“嗶”聲的程序。 我曾嘗試使用 winsound,但我無法隨心所欲地開始和停止聲音,只能播放一段時間。 是否有一個模塊可以在特定頻率下產生帶有啟動和停止脈沖的嗶聲? 我目前正在運行 Python 3.8.2(我有 pip,因此可以安裝未內置的模塊)。

這可以通過PyAudio - python 的 Portaudio 綁定來完成。

import pyaudio
from math import pi
import numpy as np

p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paFloat32, channels=1, rate=44100, output=1,)


def make_sinewave(frequency, length, sample_rate=44100):
    length = int(length * sample_rate)
    factor = float(frequency) * (pi * 2) / sample_rate
    waveform = np.sin(np.arange(length) * factor)

    return waveform

wave = make_sinewave(500, 1)

stream.write(wave.astype(np.float32).tostring())
stream.stop_stream()
stream.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM