以下代码将频率为400Hz的简单正弦写入单声道WAV文件.如何更改此代码以生成立体声 WAV文件.第二个频道应该是不同的频率.
import math
import wave
import struct
freq = 440.0
data_size = 40000
fname = "WaveTest.wav"
frate = 11025.0 # framerate as a float
amp = 64000.0 # multiplier for amplitude
sine_list_x = []
for x in range(data_size):
sine_list_x.append(math.sin(2*math.pi*freq*(x/frate)))
wav_file = wave.open(fname, "w")
nchannels = 1
sampwidth = 2
framerate = int(frate)
nframes = data_size
comptype = "NONE"
compname = "not compressed"
wav_file.setparams((nchannels, sampwidth, framerate, nframes,
comptype, compname))
for s in sine_list_x:
# write the audio frames to …Run Code Online (Sandbox Code Playgroud) 我们正在使用一个非常古老的程序来驱动一些设备测试.这些测试可以运行几天,我想知道测试何时完成.当测试完成时,可执行文件会以每秒约1次的蜂鸣声连续发出主板扬声器的蜂鸣声,直到操作员干预.
有没有办法可以"听"这个嘟嘟声并在MB开始发出哔哔声时发出通知?我希望有一个sys或os库可以用来表明这一点.
我们在Windows XP x86上运行.我还没有在机器上安装Python.
伪代码:
already_beeping = True
while True:
speaker_beeping = check_speaker() # returns True or False
if speaker_beeping == True:
if already_beeping == False:
send_notification()
already_beeping = True
else:
pass
else:
already_beeping = False
time.sleep(10)
Run Code Online (Sandbox Code Playgroud) 假设我有一个时间序列t,其中有100次测量,每个条目代表每天的测量值。我假设信号中存在一些周期性-可能每天,每周或每月重复一次。
将时间序列转换为傅立叶域可能有助于找到这样的周期性?
如何使用numpy的fft模块查找时间序列中最可能的时间段?
我的主要任务是实时识别麦克风中的人类嗡嗡声。作为识别一般信号的第一步,我对手机上的应用程序生成的 440 Hz 信号进行了 5 秒的记录,并尝试检测相同的频率。
我使用 Audacity 绘制并验证了同一个 440Hz wav 文件的频谱,我得到了这个,这表明 440Hz 确实是主频率:( https://i.stack.imgur.com/c3DWD.png )
为了使用 python 执行此操作,我使用PyAudio库并参考此博客。到目前为止,我使用 wav 文件运行的代码是这样的:
"""PyAudio Example: Play a WAVE file."""
import pyaudio
import wave
import sys
import struct
import numpy as np
import matplotlib.pyplot as plt
CHUNK = 1024
if len(sys.argv) < 2:
print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
sys.exit(-1)
wf = wave.open(sys.argv[1], 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
data = wf.readframes(CHUNK)
i …Run Code Online (Sandbox Code Playgroud) 几天前,我遇到了这个关于FFT使用的答案
在答案中有一段这样的代码:
w = np.fft.fft(data)
freqs = np.fft.fftfreq(len(w))
Run Code Online (Sandbox Code Playgroud)
我在 numpy 文档(这里)中阅读了函数fftfreq,我发现它返回一个包含以下内容的数组:
f = [0, 1, ..., n/2-1, -n/2, ..., -1] / (d*n) if n is even
f = [0, 1, ..., (n-1)/2, -(n-1)/2, ..., -1] / (d*n) if n is odd
Run Code Online (Sandbox Code Playgroud)
在我的情况下,d var 等于 1 和n是偶数。
所以我的问题是:fftfreq 的真正目的是什么?
我想知道它是否是一种三角窗函数。