首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在hdf5文件python中保存提取的特征列表

如何在hdf5文件python中保存提取的特征列表
EN

Stack Overflow用户
提问于 2019-09-25 07:01:17
回答 3查看 2.8K关注 0票数 1

我正在从音频文件中提取一些特征,并将它们保存在列表中,然后将列表保存在hdf5文件中,但这会导致错误。以前,我直接将特征保存在一个hdf5文件中,但它只是覆盖所有的值,只保存最后一个值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ampList = []
 mffcslist = []
 centroidlist = []
 i = 0


    ampList.append(Xdb)        # saving extracted feature in a list
    mffcslist.append(mfccs)    
    centroidlist.append(spectral_centroids)

with h5py.File('C:/Users/Aweem Ashar/Desktop/feature.h5', 'a') as f:
    f.close()

    for i in range(len(audio_path)):
        #print(ampList[i])

        f.create_dataset("amplitude", data=ampList[i])
        f.create_dataset("MffC", data=mffcslist[i])
        f.create_dataset("spectral", data=centroidlist[i])

    # plt.show()      # To view Wave graph
EN

回答 3

Stack Overflow用户

发布于 2019-09-25 14:55:21

当我写我的评论时,我没有仔细地看你的代码。我刚刚意识到你是一次加载一个元素的列表数据。有更好/更快的方法可以用Numpy数组来实现。我不知道您使用的是哪种类型的数据,所以在ampList中用几个浮点数创建了一个非常简单的示例。我使用np.asarray()将列表转换为一个Numpy数组,然后一次性加载到dataset中。更简单,更紧凑。此方法(使用np.asarray())将适用于任何具有公共类型(全部为浮点型或全部为整型)元素的列表。

我的简单示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import h5py
import numpy as np

ampList = [ 20., 11., 33., 40., 100. ]

with h5py.File('SO_58092765.h5','w') as h5f:
    h5f.create_dataset("amplitude", data=np.asarray(ampList) )

更好的方法:

上面的示例解决了您的基本问题(如何将列表数据复制到HDF数据集中)。但是,我认为对于您的场景,有一种更好的方法。我假设您有每个音频文件的振幅、MffC和频谱数据,并且将这些数据与音频文件名关联起来会很方便。如果是这样的话,这就是HDF5和混合格式数据类型如此强大的地方。

我创建了第二个示例(如下所示)来展示如何在单个数据集中保存混合数据。我假设了以下数据类型(为了使示例更有趣):

浮点形状音频文件名: String

  • amplitude:
  • MffC: Integer
  • Spectral (
  • ):Float
  • of shape (3,)

此示例创建2个HDF5文件:

  • SO_58092765_3ds.h5:将每个列表保存为单独的dataset.
  • SO_58092765_1ds.h5:将所有列表数据保存在单个数据集中,每个列表将写入单独的Field/Column.

第二种方法使用Numpy数据类型(dtype)来定义HDF5数据集中每列数据的名称和数据类型。然后使用该数据类型创建一个空的数据集。通过引用字段名称将每个列表写入dataset。

第二个示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import h5py
import numpy as np

fileList = [ 'audio1.mp3', 'audio2.mp3', 'audio11.mp3', 'audio21.mp3','audio22.mp3' ]
ampList =   [ 20., 11., 33., 40., 100. ]
mffcslist = [ 12,   8,   9,  14,  33 ]
centroidlist = [ (0.,0.,0.), (1.,0.,0.), 
                 (0.,1.,0.), (0.,1.,0.),
                 (1.,1.,1.),]

# create SO_58092765_3ds.h5: 
with h5py.File('SO_58092765_3ds.h5','w') as h5f:
    h5f.create_dataset("amplitude", data=np.asarray(ampList) )
    h5f.create_dataset("MffC", data=np.asarray(mffcslist) )
    h5f.create_dataset("spectral", data=np.asarray(centroidlist) )   

# create SO_58092765_1ds.h5 with ds_dtype:
ds_dtype =  np.dtype( [("audiofile",'S20'), ("amplitude",float), 
                       ("MffC",int), ("spectral",float, (3,)) ] )

with h5py.File('SO_58092765_1ds.h5','w') as h5f:
    ds = h5f.create_dataset("test_data", shape=(len(ampList),), dtype=ds_dtype )

    ds['audiofile'] = np.asarray(fileList)
    ds['amplitude'] = np.asarray(ampList)
    ds['MffC'] = np.asarray(mffcslist)
    ds['spectral'] = np.asarray(centroidlist)
票数 2
EN

Stack Overflow用户

发布于 2019-09-30 02:59:20

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import matplotlib.pyplot as plt
from glob import glob
import librosa as lb
import sklearn
import librosa.display
import librosa
import h5py
import numpy as np
dir = 'C:\\Users\\Aweem Ashar\\Desktop\\recordingd'
audio_path = glob(dir + '/*.wav')
ampList = []
mffcslist = []
centroidlist = []
for file in range(0, len(audio_path)):
    x, sr = lb.load(audio_path[file])
    print(type(x), type(sr))
    librosa.display.waveplot(x, sr=sr)
    X = librosa.stft(x)
    Xdb = librosa.amplitude_to_db(abs(X))
    librosa.display.specshow(Xdb, sr=sr, x_axis='time', y_axis='hz')
    spectral_centroids = librosa.feature.spectral_centroid(x, sr=sr)[0]
    spectral_centroids.shape
    frames = range(len(spectral_centroids))
    t = librosa.frames_to_time(frames)

    def normalize(x, axis=0):
        return sklearn.preprocessing.minmax_scale(x, axis=axis)
    librosa.display.waveplot(x, sr=sr, alpha=0.4)
    plt.plot(t, normalize(spectral_centroids), color='r')
    mfccs = librosa.feature.mfcc(x, sr=sr)
    print(mfccs.shape)
    librosa.display.specshow(mfccs, sr=sr, x_axis='time')
    ampList.append(Xdb)
    mffcslist.append(mfccs)
    centroidlist.append(spectral_centroids)
with h5py.File('C:/Users/Aweem Ashar/Desktop/feature.h5', 'w') as f:
    f.create_dataset("amplitude", data=np.asarray(ampList))
    f.create_dataset("MFCC", data=np.asarray(mffcslist))
    f.create_dataset("SpectralCentroid", data=np.asarray(centroidlist))
票数 1
EN

Stack Overflow用户

发布于 2019-09-30 13:55:54

Aweem,我不熟悉librosasklearn,所以不能调试你所有的代码。在处理新事物时,请使用最低限度完整的可验证示例(MCVE)来确认使用简单数据集的行为。它们更容易诊断。

为此,我在您的第二篇文章中简化了for循环;重新组织并删除了我认为不必要的内容。而且,你也不需要遍历所有的图像。更改glob()调用以获取1个(或几个)图像。Xdb的形状(保存到ampList)应该显示为什么Numpy asarray()尝试广播该形状(以及为什么会出现错误)。如果没有,请发布输出以供审查。

最后,您应该向create_dataset("amplitude")添加一个注释,以验证其他两个create_dataset()调用是否正常工作。祝好运。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dir = 'C:\\Users\\Aweem Ashar\\Desktop\\recordingd'
# change this to get 1 wav file:
audio_path = glob(dir + '/*.wav') 
ampList = []
mffcslist = []
centroidlist = []
for file in range(0, len(audio_path)):
    x, sr = lb.load(audio_path[file])
    print(x, sr)
    X = librosa.stft(x)
    Xdb = librosa.amplitude_to_db(abs(X))
    print (Xdb.shape)
    ampList.append(Xdb)

    spectral_centroids = librosa.feature.spectral_centroid(x, sr=sr)[0]
    print (spectral_centroids.shape)   
    centroidlist.append(spectral_centroids)

    mfccs = librosa.feature.mfcc(x, sr=sr)
    print (mfccs.shape)
    mffcslist.append(mfccs)  

with h5py.File('C:/Users/Aweem Ashar/Desktop/feature.h5', 'w') as f:
    f.create_dataset("amplitude", data=np.asarray(ampList))
    f.create_dataset("MFCC", data=np.asarray(mffcslist))
    f.create_dataset("SpectralCentroid", data=np.asarray(centroidlist))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58092765

复制
相关文章
Python提取PDF文件中的表格文本保存为Excel文件
提取PDF文件中的表格文字,保存为Excel文件,PDF中每个表格的文本写入Excel文件中的一个工作表。
Python小屋屋主
2021/01/24
3K0
Python提取Word文件中的目录标题保存为Excel文件
《Python程序设计(第3版)》,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020年6月第1次印刷,2021年1月第6次印刷,山东省一流本科课程“Python应用开发”配套教材,清华大学出版社2020年度畅销图书(本书第二版为2019、2020年度畅销图书)
Python小屋屋主
2021/03/16
2.5K0
Python提取Word文件中的目录标题保存为Excel文件
利用python实现语音文件的特征提取
语音识别是当前人工智能的比较热门的方向,技术也比较成熟,各大公司也相继推出了各自的语音助手机器人,如百度的小度机器人、阿里的天猫精灵等。语音识别算法当前主要是由RNN、LSTM、DNN-HMM等机器学习和深度学习技术做支撑。但训练这些模型的第一步就是将音频文件数据化,提取当中的语音特征。
AI那点小事
2020/04/20
1.8K0
利用python实现语音文件的特征提取
python保存列表
保存为.npy格式 先将list转为np.array格式,再保存为.npy格式
py3study
2020/01/09
2.2K0
机器学习中的特征提取
特征提升特征抽取使用CountVectorizer并且不去掉停用词的条件下,对文本特征进行量化的朴素贝叶斯分类性能测试使用TfidfVectorizer并且不去掉停用词的条件下,对文本特征进行量化的朴素贝叶斯分类性能测试.分别使用CountVectorizer与TfidfVectorizer,并且去掉停用词的条件下,对文本特征进行量化的朴素贝叶斯分类性能测试特征筛选使用Titanic数据集,通过特征筛选的方法一步步提升决策树的预测性能总结
用户3577892
2020/06/12
1.5K0
机器学习中的特征提取
使用Python批量提取并保存docx文档中的图片
如果实在看不懂上面的代码,但是又有同样的功能需要,可以把test.docx文件复制一份并把扩展名改为zip,文件名为“test_副本.zip”,然后解压缩,可以直接在word\media文件夹中得到文档中的图片,如下图所示。当然也可以把这个过程使用Python实现自动化,使用标准库zipfile和os就可以实现。
Python小屋屋主
2018/12/18
3.1K0
Python进行特征提取
#过滤式特征选择 #根据方差进行选择,方差越小,代表该属性识别能力很差,可以剔除 from sklearn.feature_selection import VarianceThreshold x=[[100,1,2,3], [100,4,5,6], [100,7,8,9], [101,11,12,13]] selector=VarianceThreshold(1) #方差阈值值, selector.fit(x) selector.variances_ #展现属性的方差 selecto
陆勤_数据人网
2020/09/29
7270
【说站】Python中Tf-idf文本特征的提取
1、TF-IDF是如果词或词组出现在文章中的概率较高,而在其他文章中很少出现,那么它就被认为具有很好的类别区分能力,适合进行分类。
很酷的站长
2022/11/26
8750
【说站】Python中Tf-idf文本特征的提取
生物信息中的Python 05 | 从 Genbank 文件中提取 CDS 等其他特征序列
在基因结构分析或其他生物功能分析中会时常用到 CDS 序列,以及其他诸如 mRNA 序列,misc RNA序列等具有生物意义的序列片段。而NCBI 的基因库中已经包含有这些的信息,但是只有一部分是整理可下载的。而剩下的一部分可以通过 genbank给出的位点信息来提取,个人能力有限,这里只做抛转之用。下面以提取 CDS 为例,记录提取序列过程,其他特征序列类似。
白墨石
2021/01/13
4.9K0
生物信息中的Python 05 | 从 Genbank 文件中提取 CDS 等其他特征序列
Python批量提取PDF文件中的文本
首先需要执行命令pip install pdfminer3k来安装处理PDF文件的扩展库。 import os import sys import time pdfs = (pdfs for pdfs in os.listdir('.') if pdfs.endswith('.pdf')) for pdf1 in pdfs: pdf = pdf1.replace(' ', '_').replace('-', '_').replace('&', '_') os.rename(pdf1, pdf
Python小屋屋主
2018/04/16
6K0
python提取页面内的url列表
python提取页面内的url列表 from bs4 import BeautifulSoup import time,re,urllib2 t=time.time() websiteurls={} def scanpage(url): websiteurl=url t=time.time() n=0 html=urllib2.urlopen(websiteurl).read() soup=BeautifulSoup(html) pageurls=[] Upageurls={} pageurls=soup
艳艳代码杂货店
2021/11/01
8150
python提取页面内的url列表
python提取页面内的url列表 from bs4 import BeautifulSoup import time,re,urllib2 t=time.time() websiteurls={} def scanpage(url): websiteurl=url t=time.time() n=0 html=urllib2.urlopen(websiteurl).read() soup=BeautifulSoup(html) pageurls=[] Upageurls={} pageurls=soup
代码伴一生
2021/11/01
8090
近期分享干货,使用python实现语音文件的特征提取方法
python编程语言无疑是人工智能最重要的语言之一,但是其中语音识别是当前人工智能比较热门的方向,百度的小度机器人、阿里的天猫精灵等其他各大公司都推出了各自的语音助手机器人,其识别算法主要是由RNN、LSTM、DNN-HMM等机器学习和深度学习技术做支撑。但训练这些模型的第一步就是将音频文件数据化,提取当中的语音特征。
Python编程大咖
2019/03/26
1.2K0
近期分享干货,使用python实现语音文件的特征提取方法
6,特征的提取
用python中的字典存储特征是一种常用的做法,其优点是容易理解。但是sklearn的输入特征必须是numpy或scipy数组。可以用DictVectorizer从字典中加载特征转换成numpy数组,并且对分类特征会采用独热编码(one-hot)。
lyhue1991
2020/07/17
1.1K0
Python批量提取Word文件题库中的答案
问题描述:假设有Word文件“Python题库.docx”中有若干Python题目(目前有1000道,已在公众号内分享第一期1000道Python题库系列分享一(17道))和对应的答案。其中答案在一对
Python小屋屋主
2018/04/16
2.2K0
Python批量提取Word文件题库中的答案
python操作txt文件中数据教程[2]-python提取txt文件中的行列元素
原始txt文件 程序实现后结果-将txt中元素提取并保存在csv中 程序实现 import csv filename = "./test/test.txt" Sum_log_file = "./te
演化计算与人工智能
2020/08/14
2.9K0
python操作txt文件中数据教程[2]-python提取txt文件中的行列元素
特征提取——颜色特征
颜色空间HSV (Hue 色相,Saturation 饱和度,intensity 亮度)
AomanHao
2022/01/14
5050
特征提取——纹理特征
图像处理之特征提取(二)之LBP特征简单梳理 https://blog.csdn.net/coming_is_winter/article/details/72859957 https://blog.csdn.net/zouxy09/article/details/7929531 LBP特征理解。 http://blog.csdn.net/hqh45/article/details/24501097 LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子;它具有旋转不变性和灰度不变性等显著的优点。它是首先由T. Ojala, M.Pietikäinen, 和 D. Harwood 在1994年提出,用于纹理特征提取。而且,提取的特征是图像的局部的纹理特征;
AomanHao
2022/01/14
1.8K0
点击加载更多

相似问题

提取音频特征,如android上的MFCC

15

如何在python中从HDF5中提取数据?

20

将提取的特征保存在CNN中

10

从SuperPixels中提取特征的最佳方法,如gabor和HOG特征

15

如何在Python中提取以下频域特征?

198
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文