- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用“pyaudio”录制声音并获取音频的频谱图,但出现上述错误:“音频缓冲区并非处处有限”。它可能是重复的,但我没有找到解决错误的方法。这是我的代码:
CHUNK = 96000 # number of data points to read at a time
RATE = 16000 # time resolution of the recording device (Hz)
p=pyaudio.PyAudio() # start the PyAudio class
stream=p.open(format=pyaudio.paInt16,channels=1,rate=RATE,input=True,
frames_per_buffer=CHUNK) #uses default input device
# create a numpy array holding a single read of audio data
stop=0
while not stop: #to it a few times just to see
print('Recording')
audio=np.frombuffer(stream.read(CHUNK))
print(type(audio[0]))
print("max value: ",np.max(audio))
print("min value: ",np.min(audio))
sd.play(audio,RATE)
S = librosa.feature.melspectrogram(audio, sr=RATE)
S = 10 * np.log(S + 1e-15)
#em=get_emotion_audio(audio,RATE)
#print("[DETECTED] ",em)
stop=1
# close the stream gracefully
stream.stop_stream()
stream.close()
p.terminate()
这是我遇到的错误:
'''
Recording
<class 'numpy.float64'>
max value: nan
min value: nan
---------------------------------------------------------------------------
ParameterError Traceback (most recent call last)
<ipython-input-3-33fa263f625d> in <module>
19 print("min value: ",np.min(audio))
20 sd.play(audio,RATE)
---> 21 S = librosa.feature.melspectrogram(audio, sr=RATE)
22 S = 10 * np.log(S + 1e-15)
23 #em=get_emotion_audio(audio,RATE)
~\Anaconda3\lib\site-packages\librosa\feature\spectral.py in melspectrogram(y, sr, S, n_fft, hop_length, power, **kwargs)
1529
1530 S, n_fft = _spectrogram(y=y, S=S, n_fft=n_fft, hop_length=hop_length,
-> 1531 power=power)
1532
1533 # Build a Mel filter
~\Anaconda3\lib\site-packages\librosa\core\spectrum.py in _spectrogram(y, S, n_fft, hop_length, power)
1555 else:
1556 # Otherwise, compute a magnitude spectrogram from input
-> 1557 S = np.abs(stft(y, n_fft=n_fft, hop_length=hop_length))**power
1558
1559 return S, n_fft
~\Anaconda3\lib\site-packages\librosa\core\spectrum.py in stft(y, n_fft, hop_length, win_length, window, center, dtype, pad_mode)
159
160 # Check audio is valid
--> 161 util.valid_audio(y)
162
163 # Pad the time series so that frames are centered
~\Anaconda3\lib\site-packages\librosa\util\utils.py in valid_audio(y, mono)
168
169 if not np.isfinite(y).all():
--> 170 raise ParameterError('Audio buffer is not finite everywhere')
171
172 return True
ParameterError: Audio buffer is not finite everywhere
'''
最佳答案
解决方案是将这两行更改为:
audio=np.frombuffer(stream.read(CHUNK),dtype=np.int16)
S = librosa.feature.melspectrogram(audio.astype('float32'), sr=RATE)
关于python-3.x - 从录制的音频中获取频谱图,错误 : "ParameterError: Audio buffer is not finite everywhere",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55545290/
我对复值频谱执行 iFFT 并通过让第一个样本归零来更改相应的时域信号。最后,我通过 FFT 将其转换回频域。 我想知道这里使用两侧(对称)频谱或仅使用一侧频谱(仅正频率)之间的(物理)差异在哪里,因
我正在尝试提高使用 cython 计算 Jonswap 频谱的性能。但它似乎比原始代码慢得多。我该如何改进? 赛通代码: from libc.math cimport exp from libc.st
我目前可以使用 JavaScript Web Audio API 播放音轨。在播放此轨道时,我可以提取 FFT 频谱数据、峰值、RMS 值等。 但是,出于我的应用程序的目的,我需要能够在开始播放轨道之
我正在尝试将频谱保存在我的 FMOD_DSP_PARAMETER_FFT 中,但我只收到充满零的频谱,如果你能看到我的错误我会同意,我认为我没有很好地将 DSP 连接到 channel 或类似的东西,
我有一个复杂的信号,我想对其进行 FFT。使用 Mathematica 我得到以下结果: (* Some acquisition params *) fS = 100. 10^6; time = 10
我是一名优秀的程序员,十分优秀!