Получите информацию о времени из MFCC, сгенерированную с помощью librosa.feature.mfcc

Я извлекаю MFCC из аудиофайла с помощью функции Librosa (librosa.feature.mfcc) и правильно возвращаю массив numpy с формой, которую я ожидал: 13 значений MFCC для всей длины аудиофайла, который составляет 1292 окна (в 30 секунд).

Чего не хватает, так это информации о времени для каждого окна: например, я хочу знать, как выглядит MFCC во время 5000 мс, затем 5200 мс и т. д. Должен ли я вручную рассчитывать время? Есть ли способ автоматически получать точное время для каждого окна?

Вы должны рассчитать его самостоятельно.

Lukasz Tracewski 11.12.2020 14:37

ок, спасибо.. я так и подозревал :(

GiulioG 11.12.2020 15:07

Это очень просто, я могу скинуть вам пример, если хотите.

Lukasz Tracewski 11.12.2020 15:19

Ну, если не бросишь... :)

GiulioG 11.12.2020 20:20
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
4
513
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

«Информация о времени» недоступна напрямую, так как зависит от частоты дискретизации. Чтобы предоставить такую ​​информацию, librosa создал бы свои собственные классы. Это скорее загрязнит интерфейс и сделает его гораздо менее интероперабельным. В текущей реализации feature.mfcc возвращает вам numpy.ndarray, что означает, что вы можете легко интегрировать этот код в любом месте Python.

Чтобы связать MFCC с синхронизацией:

import librosa
import numpy as np

filename = librosa.util.example_audio_file()
y, sr = librosa.load(filename)

hop_length = 512 # number of samples between successive frames
mfcc = librosa.feature.mfcc(y=y, n_mfcc=13, sr=sr, hop_length=hop_length)

audio_length = len(y) / sr # in seconds
step = hop_length / sr # in seconds
intervals_s = np.arange(start=0, stop=audio_length, step=step)

print(f'MFCC shape: {mfcc.shape}')
print(f'intervals_s shape: {intervals_s.shape}')
print(f'First 5 intervals: {intervals_s[:5]} second')

Обратите внимание, что длина массива mfcc и intervals_s одинакова — проверка работоспособности, что мы не ошиблись в наших вычислениях.

MFCC shape: (13, 2647) 
intervals_s shape: (2647,)
First 5 intervals: [0.         0.02321995 0.04643991 0.06965986 0.09287982] second

Другие вопросы по теме