python - 如何将提取的音高值保存在 csv 文件中?

标签 python audio signal-processing feature-extraction feature-selection

好吧,我想我应该提一下,这是我第一次在 Python 中尝试音频信号处理。我有一个音频数据集,我正在使用 Aubio 库提取音高特征,并使用 Python 中的 python_speech_features 库提取 MFCC 特征。问题是,对于单个音频文件,我得到了大约 84 个音高值向量和 12 个 MFCC 值特征向量。

提取的音高特征向量的图像


那么如何将这么多的值保存在一个 csv 文件中呢?我将大约 700 个音频文件分隔在不同的目录中,以表达情感。我应该取所有这些值的平均值并将它们保存在 csv 中的音频文件中吗?像这样:



另外,我将如何使用这些值进行分类呢?
任何帮助将不胜感激,谢谢。

最佳答案

你的问题没有一个简单的答案。

我知道对于每个数据样本,您都提取一组特征,每个样本都相同,不是吗?
我想你在 for 内工作循环,像这样:

import numpy as np
all_features = []
for path in path_list:
     x = open_file(path) #an hypothetical function to open your files
     features = extract_features(x) #an hypothetical function to extract features
     all_features.append(features)

如果您的代码看起来像我的简单示例,那么您已经创建了一个列表 all_features其元素all_features[i]包含从样本中提取的特征i .另外我想你提取的featuresnumpy向量。如果不是,则应将其转换为 numpy矢量(类似于 features = np.array(features) )。

好的,现在您已准备好创建数据集:
data = np.vstack(all_features)

垂直堆栈np.vstack生成形状为 (n_samples, n_features) 的矩阵.警告:所有特征向量必须具有相同的形状!

现在你想保存数据集,有很多可能性,这是我最喜欢的三个选项:
1) 使用 pandas创建 csv文件:
import pandas as pd
df = pd.DataFrame(data)
df.to_csv(filename+'.csv', index=False, header=header) #header is a list of string to name columns of csv
#see https://pandas.pydata.org/pandasdocs/stable/generated/pandas.DataFrame.to_csv.html

2)将内存转储到pickle文件中:
import six.moves.cPickle as pickle    
with open(filename+'.pkl', 'wb') as f:
    pickle.dump(data, f)

3)保存为numpy文件:
np.save(filename+'.npy', data)

关于分类问题,如果您想使用监督方法(MLP、RF、SVM、KNN 等),您需要一个类标签(基本事实),即形状等于相关样本数量的向量每个样本为一个整数(例如二进制分类中的 0,1,或 4 类分类中的 0,1,2,3)。这很大程度上取决于你想要什么,你的训练目标是什么。

一旦你有了数据矩阵和标签向量,如果你有足够的样本,每种机器学习方法都可以进行分类。为了这个目的,我建议你使用相同的扩充标准,有一个想法看看这个paper ,它可以给你同样的想法。

希望对你有帮助,辛苦了!

关于python - 如何将提取的音高值保存在 csv 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51466153/

相关文章:

python - 使用 matplotlib 堆积条形图

python - 使用 MCP3002 模数转换器控制 LED 亮度

python - 如何使用 fft 创建音频低通滤波器

java - 可以使用java从android SD卡读取文件

c++ - 错误 C2057 : expected constant expression

python - 类型错误 : 'int' object has no attribute '__getitem__' error because of possible erratum in book

python - 嵌套字典理解

ios - 使用 AVAudioEngine 重复播放音频文件

python - 如何使用 matplotlib 绘制变化数组的方差?

opencl - Raspberry Pi 3 OpenCL GPU 支持吗?