Исходные аудиоданные Pydub

Я использую Pydub в Python 3.4, чтобы попытаться определить высоту звука некоторых аудиофайлов.

У меня есть алгоритм обнаружения рабочего шага (метод McLeod Pitch Method), который является надежным для приложений реального времени (я даже сделал приложение для определения высоты тона Android с ним: https://github.com/sevagh/Pitcha ).

Моя проблема в том, что я не получаю никакого значимого вывода из алгоритма, когда я применяю его к AudioSegment._data.

Код:

from pydub import AudioSegment sound = AudioSegment.from_wav(file="./8700hz.wav") #sampling rate = sound.frame_rate = 44100hz mpm = Mpm(sound.frame_rate, len(sound._data)) print(mpm.get_pitch(sound._data)) 

Вывод:

 Pitch: 150.000002396 

Если я играю один и тот же wav-файл из своих динамиков, записываю его с микрофона и применяю алгоритм на захвате микрофона (подписанный 16-битный маленький endim PCM, 44100Hz, mono), я получаю правильный шаг.

Не возвращает ли AudioSegment._data то, что я ожидаю?

One Solution collect form web for “Исходные аудиоданные Pydub”

sound._data – это bytestring . Я не уверен, что ожидает Mpm , но вам может понадобиться преобразовать bytestring в array следующим образом:

 import array from pydub import AudioSegment from pydub.utils import get_array_type sound = AudioSegment.from_wav(file="./8700hz.wav") bit_depth = sound.sample_width * 8 array_type = get_array_type(bit_depth) numeric_array = array.array(array_type, sound._data) 
Python - лучший язык программирования в мире.