是否可以将时间序列从单声道转换为立体声?
Posted
技术标签:
【中文标题】是否可以将时间序列从单声道转换为立体声?【英文标题】: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]]
还是没那么简单?
【问题讨论】:
【参考方案1】:好吧,我想我明白了。具体来说,对于这个问题,我认为我的假设是数组需要重复两次是正确的。因此,一个简单的:
y = np.array([y, y])
够了。
但是!!!如果尝试使用librosa.output.write_wav()
写入波形文件,则 np 数组需要与 fortran 兼容。所以,
y = np.asfortranarray(np.array([y, y]))
是完整、正确的答案。干杯
如果有更好的答案欢迎评论!
【讨论】:
以上是关于是否可以将时间序列从单声道转换为立体声?的主要内容,如果未能解决你的问题,请参考以下文章