到 Librosa 的 AudioSegment
Posted
技术标签:
【中文标题】到 Librosa 的 AudioSegment【英文标题】:AudioSegment to Librosa 【发布时间】:2020-07-15 13:47:19 【问题描述】:我,我正在使用pydub
模块编写代码以从音频文件中获取数据,但我想使用librosa
模块执行相同的操作,如何转换我的代码并使用librosa
获得相同的结果
这是我的代码:
import numpy as np
from pydub import Audiosegment
audiofile = AudioSegment.from_file(filename)
data = np.fromstring(audiofile._data,np.int16)
channels = []
for c in range(audiofile.channels):
channels.append(data[c::audiofile.channels])
fs = audiofile.frame_rate
return channels, fs
【问题讨论】:
【参考方案1】:你可以使用:
from pydub import AudioSegment
sound = AudioSegment.from_file("file.wav")
samples = sound.get_array_of_samples()
arr = np.array(samples).astype(np.float32)/32768 # 16 bit
arr = librosa.core.resample(arr, sound.frame_rate, 22050, res_type='kaiser_best')
print(arr)
输出:
array([-0.0065596 , -0.00243502, 0.00489785, ..., -0.04385557,
-0.04421588, -0.05063475], dtype=float32)
在 librosa 中测试:
y, sr = librosa.load('file.wav', sr=22050)
print(y)
输出:
array([-0.0065596 , -0.00243502, 0.00489785, ..., -0.04385557,
-0.04421588, -0.05063475], dtype=float32)
【讨论】:
以上是关于到 Librosa 的 AudioSegment的主要内容,如果未能解决你的问题,请参考以下文章
为啥 scipy 和 librosa 在读取 wav 文件时不同?
使用 librosa.resample 后出现“wave.Error:未知格式:3”。 librosa 的输出有啥问题吗?