Можно ли использовать wav2vec для сравнения аудио (получить сходство)
Я поднимаю этот вопрос, потому что у меня есть сценарий, в котором нам нужно сравнить звук у детей и взрослых.
Звук может быть не на определенном языке, поэтому преобразование речи в текст невозможно.
У меня есть некоторый опыт сравнения изображений, в прошлый раз, когда я получил вектор характеристик изображения, а затем использовал алгоритм косинусного сходства, чтобы получить оценку сходства, он работает нормально.
Могу ли я использовать wav2vec или другую модель для получения вектора характеристик звука и использовать косинусное сходство для вычисления подобия?
Обновлять:
После некоторого исследования я обнаружил, что этот фрагмент кода может получить эту функцию и выглядит как вектор. Следующим шагом я попытаюсь провести несколько экспериментов, используя расчет косинусного подобия.
import torch
import fairseq
cp_path = '/content/wav2vec_large.pt'
model, cfg, task = fairseq.checkpoint_utils.load_model_ensemble_and_task([cp_path])
model = model[0]
model.eval()
wav_input_16khz = torch.randn(1,10000)
z = model.feature_extractor(wav_input_16khz)
print("z:", z)
c = model.feature_aggregator(z)
Вывод "z":
z: tensor([[[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],
[0.0287, 0.0229, 0.0000, ..., 0.0346, 0.0000, 0.0005],
[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0702, 0.0000],
...,
[0.0000, 0.0000, 0.0000, ..., 0.0119, 0.0218, 0.0197],
[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, ..., 0.0435, 0.0282, 0.0000]]],
grad_fn=<LogBackward0>)
Обновление 2:
Похоже, что это невозможно сделать таким образом, вектор, созданный файлом wav разной длины, приводит к разной длине вектора, поэтому его нельзя использовать в вычислении косинуса sim.
RuntimeError: The size of tensor a (692) must match the size of tensor b (60) at non-singleton dimension 2