【问题标题】:Is it possible to convert a time series from mono to stereo?是否可以将时间序列从单声道转换为立体声?
【发布时间】:2020-07-01 06:36:07
【问题描述】:

我正在使用 librosa 加载音频文件,如果文件是单声道,我希望将其从单声道转换为立体声。

我确定不需要说,但音频时间序列是“np.ndarray [shape=(n,) or (2, n)]”。本质上,我真的在问我是否有shape=(n,)np.ndarray,如何将其转换为shape=(2,n)?这可能吗?我不熟悉这个术语。

或者,有没有办法只使用 librosa 和 only librosa 作为立体声文件加载文件(如果需要,它会为我进行转换)?存在 librosa.to_mono() 函数而不是 librosa.to_stereo 函数的事实让我感到害怕。

对于上下文,我正在尝试根据一些参数(通道数、样本大小和频率等)标准化音频文件。它们都将转换为.wav 文件。据推测,可以使用wave 库将符合.wav PMC 的文件转换为立体声,但我宁愿本质上不创建两个wav 文件(我想该函数需要重建wav 文件) .

有什么建议吗?

编辑:

好的,所以我发现了np.reshape() 函数。现在的问题是,我将如何重塑数组?

如果我有一个音频时间序列shape=(746572,),那么立体声形状应该是什么?它将是一个本质上是第一个数组两次的二维数组吗?所以

[[1, 2, 3, ..., 746572],
    [1, 2, 3, ..., 746572]]

还是没那么简单?

【问题讨论】:

    标签: python numpy audio wave librosa


    【解决方案1】:

    好吧,我想我明白了。具体来说,对于这个问题,我认为我的假设是数组需要重复两次是正确的。因此,一个简单的:

    y = np.array([y, y])

    够了。

    但是!!!如果尝试使用librosa.output.write_wav() 写入波形文件,则 np 数组需要与 fortran 兼容。所以,

    y = np.asfortranarray(np.array([y, y]))

    是完整、正确的答案。干杯

    如果有更好的答案欢迎评论!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多