如何使用Python生成正弦波?
作者:互联网
我正在尝试在给定的持续时间内生成给定频率的正弦波,然后将其写入.wav文件.我正在使用numpy的sin函数和scipy的wavfile函数.我听到的声音听起来绝对不是正弦波.
import numpy as np
from scipy.io import wavfile
fs = 44100
f = int(raw_input("Enter fundamental frequency: "))
t = float(raw_input("Enter duration of signal (in seconds): "))
samples = np.arange(t * fs)
signal = np.sin(2 * np.pi * f * samples)
signal *= 32767
signal = np.int16(signal)
wavfile.write(str(raw_input("Name your audio: ")), fs, signal)
任何帮助,将不胜感激.我是否对正弦波或某些东西做出了一些根本上不正确的假设?
解决方法:
更改
samples = np.arange(t * fs)
至
samples = np.linspace(0, t, int(fs*t), endpoint=False)
(这假定fs * t为整数值.)
或者,正如保罗·潘泽(Paul Panzer)在评论中建议的那样,
samples = np.arange(t * fs) / fs
您的样本只是整数0、1、2,… fs * t的序列.相反,您需要样本的实际时间值(以秒为单位).
标签:scipy,trigonometry,waveform,python,numpy 来源: https://codeday.me/bug/20191110/2013964.html