python - .m4a 文件的频谱图
问题描述
为了解决我的主要问题,我录制了一些.m4a
音频文件(示例)。我想首先得到这样的频谱图:
由 Audacity 生成。
从这里我可以导入文件:
from pydub import AudioSegment
seg = AudioSegment.from_file("voice.m4a")
print("Information:")
print("Channels:", seg.channels)
print("Bits per sample:", seg.sample_width * 8)
print("Sampling frequency:", seg.frame_rate)
print("Length:", seg.duration_seconds, "seconds")
我知道这些频谱图绘图功能:
- scipy.signal.spectrogram
- matplotlib.pyplot.specgram
这里有很多例子。但我不知道之间的步骤。如果您能帮助我知道我应该如何获得上述情节,我将不胜感激。它不一定是 PyBud。任何其他库(甚至是自由软件的其他语言!)也可以。提前感谢您的支持。
PS下一步将像这里一样实时分析环境噪声。因此,我们也将高度赞赏这方面的任何帮助。
解决方案
这是直接来自文档的示例(参见第 10 页):
# Example for plotting a spectrogram using this function
import audiosegment
import matplotlib.pyplot as plt
#...
seg = audiosegment.from_file("voice.m4a")
freqs, times, amplitudes = seg.spectrogram(window_length_s=0.03, overlap=0.5)
amplitudes = 10 * np.log10(amplitudes + 1e-9)
# Plot
plt.pcolormesh(times, freqs, amplitudes)
plt.xlabel("Time in Seconds")
plt.ylabel("Frequency in Hz")
plt.show()
- 您需要安装 [AudioSegment 库](例如
pip install AudioSegment
) - 还需要安装 FFmpeg 库。在 Windows 上可以使用 Chocolatey:
choco install ffmpeg
推荐阅读
- python - 使用 psycopg2 导入 csv 时如何更新现有行
- nginx - 调试 NGINX 站点配置文件
- sql - 基本查询的 SQL 方言有何不同?
- c - 对于 sizeof(x) VS while ([x] != '\0') 在 C
- python - 如何在 Django View 上使用 JSON 数据
- python - return array(a, dtype, copy=False, order=order) ValueError: could not convert string to float: 'STRING' when building machine learning model
- wagtail - 鹡鸰上传的文件直接 URL
- node.js - 如何模拟模块函数,以便在代码中的某处调用时引发异常
- .htaccess - 可以重定向子域,但不能重定向子域的 slug
- r - 计算 R 中缺失值的数量