首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Python中的音频文件创建频谱图图像,就像FFMPEG一样?

如何从Python中的音频文件创建频谱图图像,就像FFMPEG一样?
EN

Stack Overflow用户
提问于 2020-04-30 20:52:34
回答 1查看 804关注 0票数 0

我的代码:

代码语言:javascript
复制
import matplotlib.pyplot as plt
from matplotlib.pyplot import specgram
import librosa
import librosa.display
import numpy as np
import io
from PIL import Image

samples, sample_rate = librosa.load('thabo.wav')
fig = plt.figure(figsize=[4, 4])
ax = fig.add_subplot(111)
ax.axes.get_xaxis().set_visible(False)
ax.axes.get_yaxis().set_visible(False)
ax.set_frame_on(False)
S = librosa.feature.melspectrogram(y=samples, sr=sample_rate)
librosa.display.specshow(librosa.power_to_db(S, ref=np.max))
buf = io.BytesIO()
plt.savefig(buf,  bbox_inches='tight',pad_inches=0)

# plt.close('all')
buf.seek(0)
im = Image.open(buf)
# im = Image.open(buf).convert('L')
im.show()
buf.close()

制作的谱图

使用FFMPEG

showspectrumpic=s=224x224:mode=separate:legend=disabled -i thabo.wav -lavfi ffmpeg spectrogram.png

制作的谱图

请帮帮忙,我想要一个与FFMPEG生成的语谱图完全相同的语谱图,用于从谷歌的可教学机器导出的语音识别模型。Offline recognition

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-03 04:46:29

您可以直接将音频通过管道传输到ffmpeg,这将避免中间文件,如果您希望避免图像文件输出,ffmpeg也可以将其输出到管道。

使用三个ffmpeg实例进行演示

代码语言:javascript
复制
ffmpeg -i input.wav -f wav - | ffmpeg -i - -filter_complex "showspectrumpic=s=224x224:mode=separate:legend=disabled" -c:v png -f image2pipe - | ffmpeg -y -i - output.png

当然,第一个和最后一个ffmpeg实例将替换为您的工作流的特定流程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61523846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档