到 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的主要内容,如果未能解决你的问题,请参考以下文章

iOS中的Librosa Python库集成[关闭]

为啥 scipy 和 librosa 在读取 wav 文件时不同?

使用 librosa.resample 后出现“wave.Error:未知格式:3”。 librosa 的输出有啥问题吗?

使用 librosa 理解 STFT

Python之librosa库语音信号处理

为啥 librosa 中的情节不同?