Я пытаюсь обучить реализации Keras VGGish.
https://github.com/tensorflow/models/tree/master/research/audioset
Цель VGGish - классифицировать аудиоданные.
VGGish принимает в качестве входных данных серию спектрограмм mel (в основном, это изображения), каждая спектрограмма представляет собой 1 секунду, и возвращает серию вложений формы (batch size, 128)
. Таким образом, для обработки аудиофайла длиной 10 секунд вы сначала конвертируете его в виде пакета из 10 мел спектограмм, и вы получите выходную форму (10, 128)
.
Теперь я хотел бы добавить классификатор поверх VGGish, что означает добавление слоев. Поскольку форма (10, 128)
является временным рядом, я хотел бы свернуть в первом измерении или использовать LSTM, в зависимости от того, что подходит.
Проблема в том, что форма вложения определяется как (batch size, units=128)
.
Короче говоря, вы вводите партию n
секунд. Что я хотел бы сделать, так это возможность вводить пакет из n
файлов по 10 секунд и работать на уровне файлов, а не на втором уровне.
Это действительно вызывает у меня головную боль.
Начало VGGish выглядит так:
input_shape = (vggish_params.NUM_FRAMES,vggish_params.NUM_BANDS)
img_input = Input( shape=input_shape)
reshaped = Reshape((vggish_params.NUM_FRAMES,vggish_params.NUM_BANDS,1))(img_input)
# Block 1
x = Conv2D(64, (3, 3), activation='relu', padding='same', name='conv1')(reshaped)
x = MaxPooling2D((2, 2), strides=(2, 2), name='pool1')(x)
Слой Reshape позволяет Conv 2D. Выходной слой для встраивания выглядит так:
x = Dense(128, activation='relu', name='fc2')(x)
В целом, я бы хотел добавить одно измерение. Под этим я подразумеваю ввод пакетов аудиоклипов n
секунд вместо пакетов из n-секундных клипов.
Я действительно понятия не имею, как это сделать, и я не знаю, возможно ли это вообще. Я пришел сюда за помощью, потому что я действительно озадачен.
Есть идеи?
Приветствия.