Audio Set是谷歌前段时间开源的一个数据集,可以说是音频界的imagenet了,拥有200多万的音频和500多个分类(截止2017年3月)。
官方下载地址:https://research.google.com/audioset/download.html
有关audioset数据集的简介:https://research.google.com/audioset/
官方提供了两种数据获取方式:一种是提供音频字典信息,由自己下载相关youtube音频;另一种以1Hz采样的128维音频特征数据,tfrecord格式数据。
1.提供的第一种下载格式比较复杂,具体可见:
https://www.jianshu.com/p/c4fc899342f7
2.提供的第二种下载格式就是tfrecord格式数据。参考地址如下:
http://yueshi.me/?p=294
我整理了一下代码,试着用python打开下载的tfrecord格式数据,是可以实现的。
# python3
import numpy as np
import tensorflow as tf
sess = tf.InteractiveSession()
filename = 'path/_2.tfrecord'
filename_queue = tf.train.string_input_producer([filename]) # 添加队列
reader = tf.TFRecordReader()
_, serialized_example = reader.read(filename_queue)
contexts, features = tf.parse_single_sequence_example(
serialized_example,
context_features={
'video_id': tf.FixedLenFeature([], tf.string),
'labels': tf.VarLenFeature(tf.int64)},
sequence_features={
'audio_embedding': tf.FixedLenSequenceFeature([], dtype=tf.string)
})
embedding_0 = tf.decode_raw(features['audio_embedding'], tf.uint8) # 转换格式
embedding = tf.reshape(embedding_0, [10, 128]) # 指定embedding的结构
batch = tf.train.shuffle_batch(
[embedding], batch_size=30, capacity=2000, min_after_dequeue=1000)
tf.global_variables_initializer().run() # 初始化变量
tf.train.start_queue_runners(sess=sess) # 启动队列
print(embedding_0.eval().shape) # 验证embedding的shape
audio_feature = batch.eval() # 读取数据
print(audio_feature)