我试图在给定的持续时间内生成给定频率的正弦波,然后将其写入 .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)
任何帮助,将不胜感激。我对正弦波或其他东西做了一些根本上不正确的假设吗?
原文由 Badrinarayan Rammohan 发布,翻译遵循 CC BY-SA 4.0 许可协议
改变
到
(这假定
fs*t
结果是一个整数值。)或者,正如 Paul Panzer 在评论中所建议的那样,
您的
samples
只是整数序列 0, 1, 2, …fs*t
。相反,您需要样本的实际时间值(以秒为单位)。