Почему мой компьютер не определяет правильную частоту звука?

Я разрабатываю приложение для анализа звукового спектра в реальном времени в Linux на С++ и использую БПФ для расчета величин. Приложение получает звук с простого дешевого микрофона, подключенного к ПК.

Я попытался протестировать приложение с помощью онлайн-генераторов звука, просто воспроизведя сгенерированный звук на динамиках, и заметил, что оно всегда показывает половину частоты воспроизводимого звука. Например. если я генерирую звук 440 Гц, он определяет его как ~ 220 Гц.

Сначала я подумал, что просто сделал какие-то неправильные расчеты, но потом попробовал протестировать другие приложения, которые могут измерять частоту (например, gtkguitune). И я заметил то же самое! Даже эти приложения всегда будут отображать только ~ половину Гц фактического звука, генерируемого динамиками.

У кого-нибудь есть объяснение, почему это может быть?


person IanDess    schedule 03.11.2015    source источник
comment
Какова ваша частота дискретизации для вашего БПФ?   -  person paisanco    schedule 04.11.2015
comment
Быстро просматривая вопрос, слова «частота» и «половина» заставляют меня думать об частоте Найквиста с точки зрения выборка, но я не уверен, что это проблема. Возможно, стоит поделиться своей реализацией с точки зрения выборки с микрофона, а затем выполнить БПФ.   -  person George Profenza    schedule 04.11.2015
comment
@paisanco моя частота дискретизации звука составляет 44100, моя частота дискретизации БПФ составляет 1470 (44100/1470 = 30, то есть я выполняю БПФ 30 раз в секунду). Я действительно новичок в обработке звука и DSP в целом, поэтому я понятия не имею, слишком ли это много/слишком мало и т. д.   -  person IanDess    schedule 04.11.2015
comment
@GeorgeProfenza да, но странно то, что это не только мое приложение, если вы прочитаете мой пост выше, вы увидите, что это происходит и в других приложениях.   -  person IanDess    schedule 04.11.2015


Ответы (1)


Похоже, что это могут быть стерео сэмплы, интерпретированные как моно.

person Mark Borgerding    schedule 04.11.2015