如何读取Google开源的audioset的tfrecord文件--转载与整理

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)

你可能感兴趣的:(python脚本编写)