可以仅使用频谱图图像重建音频吗?

2024-03-06

所以我正在创建一些带有 librosa 的频谱图以保存为图像,之后我打算直接对图像进行修改(即添加随机噪声等),然后我想从该图像重建音频。

不管怎样,一些研究让我找到了类似过程的例子(参见here https://stackoverflow.com/questions/61132574/can-i-convert-spectrograms-generated-with-librosa-back-to-audio or here https://stackoverflow.com/questions/34710011/how-do-i-go-from-sound-to-spectrum-then-back-to-sound-in-python)但没有什么像我想做的那样,即获取频谱图的 png/jpg 图像并将其转换回可用的音频文件。

这是我用来生成规格图像的完整代码:

import librosa
from librosa import display
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas

filename = librosa.util.example_audio_file()
y, sr = librosa.load(filename)
window_size = 1024
window = np.hanning(window_size)
stft = librosa.core.spectrum.stft(y, n_fft=window_size, hop_length=512, window=window)
out = 2 * np.abs(stft) / np.sum(window)

fig = plt.Figure()
canvas = FigureCanvas(fig)
ax = fig.add_subplot(111)
fig.subplots_adjust(left=0,right=1,bottom=0,top=1)
ax.axis('tight')
ax.axis('off')

p = librosa.display.specshow(librosa.amplitude_to_db(out, ref=np.max), ax=ax, y_axis='log', x_axis='time')
fig.savefig('spectrogram.png')

这会产生这个精确的图像:频谱图.png https://i.stack.imgur.com/e5tU7.png

但是像 librosa.istft 或 librosa.griffinlim 这样的函数期望 librosa.core.spectrum.stft 的输出,并且我无法仅从图像文件反转整个过程。假设我有这张图片,有什么方法可以重新构建音频(即使它是有损的)?还需要哪些类型的其他信息?我该怎么做?

提前致谢。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以仅使用频谱图图像重建音频吗? 的相关文章

随机推荐

  • 放大 AMCharts 时丢失 Timeserie

    当我放大图表时 serie2 消失了 如果我通过从右侧选择光标进行缩放 但是从左侧缩放工作正常 无论如何 我期待看到 2 系列 但似乎有时不是 See my 截屏 https i stack imgur com MXsX1 png 知道为什
  • 在opencv c++中绘制旋转矩形

    我想用c 在opencv中绘制一个旋转的矩形 我用 rectangle 函数如下 rectangle RGBsrc vertices 0 vertices 2 Scalar 0 0 0 CV FILLED 8 0 但是这个函数画了一个0角的
  • 从 C# 安装项目运行另一个程序

    我已经用 C 创建了一个设置和部署项目 现在我有另一个 Windows 更新 exe 我想在安装我的项目之前成功运行和安装它 我已将 exe 与我的项目打包在一起 我之前如何运行该exe 您想要将自定义操作添加到运行可执行文件的安装项目 本
  • 根据等于 x.x.x.x/x 的 IP 字符串计算 IP 范围

    给定 IP 字符串 我如何计算 IP 范围x x x x x最常见的情况可能是198 162 1 1 24但可以是任何东西 任何法律允许的东西 我要拿198 162 1 1 24并将其转换为 198 162 1 1 198 162 1 12
  • 音频 - 快进 30 秒

    我有一个音频播放器 可以播放从 Core Date 检索到的音频 播放和暂停工作正常 我正在尝试实现 向前跳转 30 秒 按钮 并寻求有关如何实现该操作的任何指示 我的 播放 暂停 按钮的代码 IBAction func playPress
  • Python Selenium Webdriver - 动态更改下载目录

    为了在定义 selenium webdriver 之前显式定义下载目录 我们使用以下代码 chromeOptions webdriver ChromeOptions prefs download default directory C da
  • 使用 Mayavi 制作 3D 图表,并使用 Matplotlib 风格的轴

    我一直在用 Mayavi 进行 3D 绘图 我可以绘制我想要的散点图 但似乎无法让轴看起来正确 我发现了以下内容上一个问题 https stackoverflow com questions 4739360 any easy way to
  • JOOQ 嵌套条件

    嗨 我想弄清楚如何在 jooq 中写这样的东西 select from table where a query or b query or a query and e query or g query or z query 我不知道如何在
  • 将相等的矩形拟合成更大的矩形

    我有一个大矩形dimensions L W and n smaller rectangles每个都有相同的尺寸l w 每个小矩形都有相同的dimensions 我的目标是适合所有人n of smaller将矩形合并到大矩形中 同时尽可能最有
  • Rails 5.2 中范围内的连接与 Rails 5.1 有何不同?

    将 Rails 从 5 1 升级到 5 2 后 我开始收到以下错误 NoMethodError undefined method expr for nil NilClass from gems path activerecord 5 2 0
  • 该捆绑包无效。 Apple 目前不接受使用此版本的 SDK 4.2 构建的应用程序 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 亲爱的关心
  • Hibernate:映射3个表

    我正在尝试使用 Hibernate 映射一些现有表 这很简单 我们有具有多种语言名称的类别 DDL如下 create table language id integer not null auto increment code varcha
  • 有没有办法在logback中为单个日志文件定义多个滚动策略?

    我正在尝试设置一个 logback 配置 该配置创建一个解压缩的日志文件作为第一卷 然后从那时起将压缩文件写入不同的目录 我相信最好的方法是在单个附加程序中创建多个rollingPolicy 元素 谁能指导我一个有人成功做到这一点的例子
  • 向 Azure IoT 中心分区发送消息

    有谁知道是否有一个库允许您使用 Azure 将消息发送到 IoT 中心上的特定分区 我以前能够使用 azuresblite 库实现这一点 不幸的是我无法使用它 https github com ppatierno azuresblite h
  • 声明堆栈变量而不指定名称并获取指针

    众所周知 定义一个堆变量new获取指针而不指定名称 Var p new Var name 1 但我必须清除指向的变量p with delete p稍后在节目中 我想声明一个堆栈变量 以便在函数退出后自动清除它 但我只想获取指针 以及以下内容
  • 弹出窗口中的动态 iframe

    我试图通过下面的 href 链接实现两件事 首先 我想启动一个弹出窗口 完毕 接下来 我希望弹出窗口显示 iframe 这也很容易完成until我意识到我需要将 href 链接文本作为 iframe src 中的参数传递 例如 iframe
  • 如何绘制 CSV 数据

    我有一个 python 代码 其中使用 pandas 读取 csv 文件并将日期和时间存储在一列中Datetime 现在我想在 y 轴上绘制传感器值 在 x 轴上绘制日期时间 我怎样才能做到这一点 我的代码如下 import pandas
  • 从 DialogFragment 调用 registerReceiver

    EDIT 我添加了这一行 getActivity registerReceiver new BroadcastReceiver new IntentFilter SENT 但现在出现运行时错误 错误内容如下 09 03 04 12 41 8
  • 如何确定类型是否可以仅使用 const 引用进行调用?

    我想写一个 C 元函数is callable
  • 可以仅使用频谱图图像重建音频吗?

    所以我正在创建一些带有 librosa 的频谱图以保存为图像 之后我打算直接对图像进行修改 即添加随机噪声等 然后我想从该图像重建音频 不管怎样 一些研究让我找到了类似过程的例子 参见here https stackoverflow com