gpt4 book ai didi

python - 在音频分析中绘制频谱图

转载 作者:太空狗 更新时间:2023-10-30 01:53:01 26 4
gpt4 key购买 nike

我正在使用神经网络进行语音识别。为此,我需要获取那些训练音频文件 (.wav) 的频谱图。如何在 python 中获取这些频谱图?

最佳答案

有很多方法可以做到这一点。最简单的方法是查看 Kernels 中提出的方法关于 Kaggle 竞赛 TensorFlow Speech Recognition Challenge (只按投票最多的人排序)。 This one特别清晰和简单,包含以下功能。输入是从 wav 文件中提取的样本的数字向量、采样率、以毫秒为单位的帧大小、以毫秒为单位的步长(步幅或跳跃)大小和一个小的偏移量。

from scipy.io import wavfile
from scipy import signal
import numpy as np

sample_rate, audio = wavfile.read(path_to_wav_file)

def log_specgram(audio, sample_rate, window_size=20,
step_size=10, eps=1e-10):
nperseg = int(round(window_size * sample_rate / 1e3))
noverlap = int(round(step_size * sample_rate / 1e3))
freqs, times, spec = signal.spectrogram(audio,
fs=sample_rate,
window='hann',
nperseg=nperseg,
noverlap=noverlap,
detrend=False)
return freqs, times, np.log(spec.T.astype(np.float32) + eps)

输出在 SciPy manual 中定义, 除了频谱图使用单调函数 (Log()) 重新缩放外,它比较小的值更能抑制较大的值,同时使较大的值仍然大于较小的值。这样,spec 中的极值将不会主导计算。或者,可以将值限制在某个分位数,但首选对数(甚至平方根)。还有许多其他方法可以标准化频谱图的高度,即防止极值“欺负”输出:)

freq (f) : ndarray, Array of sample frequencies.
times (t) : ndarray, Array of segment times.
spec (Sxx) : ndarray, Spectrogram of x. By default, the last axis of Sxx corresponds to the segment times.

或者,您可以在 github repo 上查看 train.py 和 models.py 代码来自 Tensorflow example on audio recognition .

Here is another thread解释并给出了在 Python 中构建频谱图的代码。

关于python - 在音频分析中绘制频谱图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47954034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com