问题标签 [librosa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
12121 浏览

python-3.x - 在 python 中加载 FLAC 文件,与 scipy 或 librosa 相同

我想将一些 flac 声音文件输入到 keras 模型中。使用 wavfiles 我可以做到(一个音频文件使用两次的人为示例)

我如何使用 flac 文件来执行此操作?

0 投票
1 回答
2058 浏览

python - 3种python库中的MFCC和delta系数

我最近做了关于 MFCC 的功课,但我无法弄清楚使用这些库之间的一些区别。

我使用的 3 个库是:

python_speech_features

语音Py

LibROSA

第一部分:梅尔滤波器组

图1

只有 Speechpy 中的形状会得到 (, 512),其他的都是 (, 257)。librosa的身材有点变形。

第二部分:MFCC

图2

我已经尽力设定条件公平。Speechpy的图形变得更暗。

第三部分:Delta系数

图3

我不能直接将mfcc设置为speechpy中的参数,否则会很奇怪。而这些参数最初的作用与我的预期不一样。

我想知道是什么因素造成了这些差异。只是我上面提到的东西吗?还是我犯了一些错误?希望详细点,谢谢。

0 投票
1 回答
3810 浏览

python - 控制频谱图大小的参数

我正在尝试按照以下说明获取频谱图。

每个音频片段的持续时间为 5 秒。从音频中提取大小相等的帧(连续帧之间有重叠),每个帧由 1024 个样本组成。mel-scale 分为 128 个 bin。因此,音频段的频谱图的尺寸为 192×128。

n_mels=128据我所知,该指令隐含n_fft=1024melspectrogram 功能中。因此,我尝试使用以下代码获取频谱图:

的形状和采样率y是我得到的频谱图形状是。大小是正确的,但我得到的帧数不是指令中提到的帧数。(220500,)sr44100(128, 431)128 mel-scale431192

为了获得 192 帧,我将采样率更改为22050并不断调整hop_lenght直到频谱图有192帧:

但是,我不确定这是否是获得我想要的频谱图维度的正确方法。似乎这个过程只是反复试验。我想知道是否有更科学的方法来获得具有我想要的形状的频谱图而无需猜测参数值?

0 投票
2 回答
343 浏览

audio-processing - librosa中音频样本的单位是什么?

这些天来,我正在使用 librosa,它是一种音频处理库。作为加载音频文件的基本步骤,可以使用以下功能。

  1. 然后将音频文件表示为音频时间序列。我认为时间序列的每个值都是音频的幅度。但是,我想知道幅度的单位是什么。
  2. 此外,幅度、功率、dB 和能量之间的关系是什么?
0 投票
2 回答
1694 浏览

python - 为什么 librosa 库中的频谱图的持续时间是实际音轨的两倍?

我正在使用以下代码从大约 30 秒的录制音频信号中获取梅尔频谱图:

获得的频谱图:梅尔频谱图

你能解释一下为什么时间轴描绘了两倍的持续时间(应该是 30 秒)。代码出了什么问题?

0 投票
1 回答
1706 浏览

python - 如何从谷歌云存储桶中读取音频文件并在数据实验室笔记本中使用 ipd

我想在我从谷歌云存储桶中读取的数据实验室笔记本中播放声音文件。这个怎么做?

0 投票
1 回答
1585 浏览

python - 使用 librosa 进行特征提取

我正在使用从 Github 获得的以下代码。此代码提取 mfccs、色度、melspectrogram、tonnetz 和光谱对比特征以feat.np 的形式提供输出。我想提取一些其他功能,例如 rmse、zerocross,但是当我添加相关代码时,我在连接时会出错。

这段代码工作正常,但是当我想提取其他特征时,比如 rmse、零交叉率等。当我添加

我收到以下错误

我如何提取其他特征并进行连接。

0 投票
1 回答
3078 浏览

numpy - 将 PCM 波形数据转换为 numpy 数组,反之亦然

情况

我正在通过使用WebRTC-VAD(一个 Python 适配器)来使用来自 WebRTC 的 VAD(语音活动检测)。来自 GitHub存储库的示例实现使用 Python 的wave 模块从文件中读取 PCM 数据。请注意,根据评论,该模块仅适用于单声道音频和 8000、16000 或 32000 Hz 的采样率。

我想做的事

从具有不同采样率的任意音频文件(MP3 和 WAV 文件)中读取音频数据,将其转换为 WebRTC-VAD 使用的 PCM 表示,应用 WebRTC-VAD 检测语音活动,最后通过生成 Numpy-Arrays 处理结果再次来自 PCM 数据,因为它们在使用Librosa时最容易使用

我的问题

WebRTC-VAD 模块只有在使用wave模块时才能正常工作。该模块将 PCM 数据作为bytes对象返回。当给它喂食已经获得的 Numpy 数组时,它不起作用,例如通过使用librosa.load(...). 我还没有找到在两种表示之间进行转换的方法。

到目前为止我做了什么

我编写了以下函数来从音频文件中读取音频数据并自动转换它们:

使用 Librosa 读取/转换任何音频数据的通用函数(--> 返回 Numpy 数组):

将任意数据读取为 PCM 数据的函数(--> 返回字节):

如您所见,我首先使用 librosa 读取/转换音频数据,从而绕道而行。这是必需的,因此我可以读取具有任意编码的 MP3 文件或 WAV 文件,并使用 Librosa 自动将其重新采样为 16kHz 单声道。然后我正在写入一个临时文件。在删除文件之前,我再次读出了内容,但这次使用的是wave模块。这给了我 PCM 数据。

我现在有以下代码来提取语音活动并生成 Numpy 数组:

如您所见,我再次绕过临时文件先写入 PCM 数据,然后使用 Librosa 再次读取临时文件以获得 Numpy 数组。该webrtc_split函数是示例实现中的实现,只有很少的小改动。为了完整起见,我将其发布在这里:

我的问题

我使用wave模块写入/读取临时文件并使用 Librosa 读取/写入这些文件以获取 Numpy 数组的实现对我来说似乎过于复杂。然而,尽管花了一整天的时间在这件事上,我没有找到直接在两种编码之间进行转换的方法。我承认我不完全了解 PCM 和 WAVE 文件的所有细节,对 PCM 数据使用 16/24/32 位的影响或字节序。我希望我上面的解释足够详细,而不是太多。有没有更简单的方法在内存中的两种表示之间进行转换?

0 投票
1 回答
1454 浏览

python - 为什么 scipy 和 librosa 在读取 wav 文件时不同?

所以我试图从波形文件中获取样本,我注意到它是一个不同的值,具体取决于我使用的是 scipy 还是 librosa。

打印语句如下:

该文件的采样率为 48000。

为什么它们可能不同?librosa 是否使用不同的标准化?

0 投票
1 回答
1363 浏览

python - 如何应用二进制掩码和 STFT 来生成音频文件?

所以这里的想法是:您可以使用短时傅里叶变换 (stft) 从音频文件生成频谱图。然后有些人生成了一种称为“二进制掩码”的东西,以从反向 stft 生成不同的音频(即去除背景噪声等)。

以下是我的理解:

stft 是一个应用于音频文件的简单方程,它生成的信息可以很容易地显示在频谱图上。通过取 stft 矩阵的逆,并将其乘以相同大小的矩阵(二进制矩阵),您可以创建一个包含信息的新矩阵,以生成带有掩蔽声音的音频文件。

进行矩阵乘法后,如何创建新的音频文件?

这并不多,但这是我在代码方面得到的:

谢谢,这里有一些幻灯片让我走到了这一步。如果您能给我一个 Python 中的示例/演示,我将不胜感激