Основная частота + обнаружение голоса в С#

Я пытаюсь обнаружить голосовой ввод с микрофона в режиме реального времени.

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

Как получить основную частоту? Если я получу основную частоту, могу ли я указать, что если частота находится между определенными значениями, то мы говорим голосом? Есть ли другой способ сделать это с вещами, которые у меня уже есть?

Спасибо заранее


person André    schedule 23.10.2009    source источник
comment
Спектрограмма или спектр? Это не одно и то же.   -  person endolith    schedule 05.12.2009


Ответы (2)


Существует множество различных алгоритмов для оценки частоты, и правильный выбор зависит от ваших потребностей. делаю. Какие входные данные вы ожидаете? Что вы хотите сделать с этим вводом? Какая у вас вычислительная мощность?

Обнаружение основной частоты не поможет вам определить, говорит ли конкретный человек, если это то, что вы пытаетесь сделать. Частота вашего голоса постоянно меняется. Придется делать «отпечаток» формант человека и т.д.

Простое нахождение пика БПФ не даст хороших результатов для голоса. Посмотрите кепстральный анализ.

person endolith    schedule 05.12.2009

Возьмите самый высокий пик на спектрограмме, который находится в пределах диапазона голоса (скажем, от 400 до 10 кГц). Это должно дать вам основную частоту.

В качестве альтернативы вам может понадобиться интегрировать гистограмму частот. Это потому, что иногда у вас есть слова, которые начинаются с шипящих (звуки "с") и фрикативных звуков (звуки "ф" и "т") или содержат их, которые имеют довольно высокие частоты и широкий спектр. Вы же не хотите пропустить начало речи, потому что оно началось не с гласной.

Другим фактором является то, что еще вы могли бы подобрать, кроме голоса. Много фонового шума? Какой? Если его нет, то достаточно просто наличия звука. Если, например, есть музыка, то у вас совершенно другая задача. Если вы пытаетесь отличить голос от некоторых других звуков, у меня возникнет соблазн попробовать нейросетевой подход — скорее всего, ему понадобится такой уровень сложности.

person Frank Ames    schedule 23.10.2009
comment
Это распространенное заблуждение, но основная частота не обязательно является самым большим пиком в спектре. В голосе это зависит от того, как гармоники сочетаются с формантами, и может меняться в зависимости от частоты и качества звука. - person tom10; 26.10.2009