相关疑难解决方法(0)

如何用Python编写立体声wav文件?

以下代码将频率为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)

python wav wave

12
推荐指数
1
解决办法
2万
查看次数

我怎么能"听"内部主板扬声器上的声音

我们正在使用一个非常古老的程序来驱动一些设备测试.这些测试可以运行几天,我想知道测试何时完成.当测试完成时,可执行文件会以每秒约1次的蜂鸣声连续发出主板扬声器的蜂鸣声,直到操作员干预.

有没有办法可以"听"这个嘟嘟声并在MB开始发出哔哔声时发出通知?我希望有一个sysos库可以用来表明这一点.

我们在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)

python windows

10
推荐指数
1
解决办法
1130
查看次数

使用numpy的Fourier变换找到时间序列最可能的周期?

假设我有一个时间序列t,其中有100次测量,每个条目代表每天的测量值。我假设信号中存在一些周期性-可能每天,每周或每月重复一次。

将时间序列转换为傅立叶域可能有助于找到这样的周期性?

如何使用numpy的fft模块查找时间序列中最可能的时间段?

python numpy fft periodicity

7
推荐指数
1
解决办法
4119
查看次数

从 PyAudio 接收的数据的 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)

python signal-processing audio-processing pyaudio

5
推荐指数
1
解决办法
3490
查看次数

函数 numpy.fft.fftfreq 的含义

几天前,我遇到了这个关于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 的真正目的是什么

我想知道它是否是一种三角窗函数。

python numpy fft frequency audio-analysis

3
推荐指数
2
解决办法
4308
查看次数

如何在 Python 中解释离散傅里叶变换 (FFT) 的结果

关于这个主题有很多问题,我已经循环浏览了其中很多问题,获取了有关处理频率的概念性指针(此处此处)、有关 numpy 函数的文档(此处)、如何提取幅度和相位的信息(此处)、并走出网站,例如thisthis

然而,只有痛苦地用简单的例子向自己“证明它”,并检查不同函数的输出与它们的手动实现相比,才给了我一些想法。

答案试图记录和分享与 Python 中的 DFT 相关的细节,如果不以简单的术语进行解释,这些细节可能会构成进入障碍。

python numpy fft

3
推荐指数
1
解决办法
2855
查看次数