Как использовать aubio для получения частоты каждого тона в серии тонов в питоне

Я нашел пример кода для получения высоты тона с помощью aubio, но я не уверен, что изменить, чтобы заставить его отображать высоту тона с точностью до секунды:

import sys 
from aubio import source, pitch, freqtomidi

if len(sys.argv) < 2:
    print "Usage: %s <filename> [samplerate]" % sys.argv[0]
    sys.exit(1)

filename = sys.argv[1]
downsample = 1 
samplerate = 44100 / downsample
if len( sys.argv ) > 2: samplerate = int(sys.argv[2])

win_s = 4096 / downsample # fft size
hop_s = 512  / downsample # hop size


s = source(filename, samplerate, hop_s)
samplerate = s.samplerate

tolerance = 0.8 


pitch_o = pitch("yin", win_s, hop_s, samplerate)
pitch_o.set_tolerance(tolerance)

pitches = []
confidences = []

total_frames = 0 
while True:
    samples, read = s() 
    pitch = pitch_o(samples)[0]
    pitch = int(round(pitch))
    confidence = pitch_o.get_confidence()
    #if confidence < 0.8: pitch = 0.
    print "%f %f %f" % (total_frames / float(samplerate), pitch, confidence)
    pitches += [pitch]
    confidences += [confidence]
    total_frames += read
    if read < hop_s: break                                                                                                                                                                                  

Кроме того, это возможно для меня, чтобы сделать это непосредственно из вывода вместо файла WAV?

1 ответ

Этот сценарий (также в aubio/python/demos/demo_pitch.py) извлекает кандидата на высоту тона для каждогоаудиокадра(здесь 512./44100 * 1000 = 11,6 мс).

отображать высоту тона в секундах

Что вы подразумеваете под "во втором шаге"? "Общая" высота для каждого последовательного 1-секундного длинного сегмента? Вы могли бы взять np.median(pitches),

Новый шаг после каждого изменения ноты? Вы можете обработать вывод и сгруппировать схожие кандидаты на подачу в заметки.

Или просто использовать aubionotes непосредственно.

сделать это прямо из вывода

Из какого "выхода" ты имеешь ввиду?

Смотрите также непрерывный запуск aubiopitch для файлового дескриптора.

Пожалуйста, задавайте свои вопросы aubio @ https://github.com/aubio/aubio.

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