Python 3.4 で Pydub を使用して、いくつかのオーディオ ファイルのピッチを検出しようとしています。
私は、リアルタイムアプリケーションに対して堅牢なピッチ検出アルゴリズム (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 ビット リトル エンディアン PCM、44100Hz、モノラル) にアルゴリズムを適用すると、正しいピッチが得られます。
AudioSegment._data は期待どおりに返されませんか?