Перейти к содержанию
    

Всем привет. Может у кого то есть рабочий код на Cortex m4, m7  - детектор голоса и шумоподавление. Играюсь сейчас с распознаванием голосовых команд, научил нейросеть, но столкнулся с проблемой окружающего шума и выделение голоса на его фоне. Требуется помощь. Благодарность гарантирую))  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на плате есть 2 цифровых микрофона. Интересует практическая реализация на С. Кто может помочь, буду очень признателен. Размер признательности обсудим))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это не те процы Cortex m4, m7 чтобы решать проблемы окружающего шума и выделение голоса на его фоне. Начните с поиска статей, дисеров на эту тему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, Dobermann сказал:

адаптивного фильтра должно хватить.

Это да, еще студентам поясняют. При условии когда "уровень" голоса больше мощности шума в его полосе на n_dB. Но чел ухо распознает без проблем когда "уровень" голоса много меньше мощности шума в его полосе на X*n_dB. А вот этого те процы Cortex m4, m7 ну никак не обеспечат такое распознавание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то в стандартах g-729b, g723 тема раскрыта чуть менее, чем полностью. Сложно, но эффективно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а реализация на С есть?))

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть. Все кодеры-декодеры представлены в базовых реализациях на цэ как с эмуляцией фиксированной точки, так и в плавающей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а ссылочку не напишите, если есть под рукой? Заранее спасибо.

 

Уже нашел сам. VAD алгоритм там есть, но какой то простой. AGC вообще не увидел в реализации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем вам кодеры-декодеры? У вас же думана обработка процем сигнала с микрофона. Или нет? Какой HW используете? Или проц.

Подскажу, есть что получше, но с 8 микрофонами.   

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А мне кодеры-декодеры и не нужны. У меня на проце нейросеть крутиться и распознает голосовые команды. Поэтому надо еще написать предварительную обработку сигнала с микрофонов. АРУ и шумоподавление. А времени особо нет, вот и ищу готовое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 минуты назад, Dobermann сказал:

а ссылочку не напишите, если есть под рукой? Заранее спасибо.

 

Уже нашел сам. VAD алгоритм там есть, но какой то простой. AGC вообще не увидел в реализации.

Ну там ару, как таковая присутствует в алгоритме анализа. Быстро разобраться не получится. Ну  вад завязан на анализ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну... алгоритмы шумоподавления есть...

Например, у меня крутится 2 штуки на m4, каждый занимает около 20МГц.

Тут возникает некоторая проблема, связанная с нейросетью - после шумодава она не будет понимать команды (если обучена оным без шума).

"Легкие" алгоритмы шумоподавления (один микрофон, один поток) они все основаны на методе "спектрального вычитания" который, в свою очередь, работает на основании оценок уровня шума. А последних пруд пруди. Однако, как правило, все эти  оценки, особенно при наличии нестационарного шума, дают оценку шума либо недооцененную, либо пере-. Это часто приводит к эффектам бульканья, водопада, сливного бочка  и т.д. Т.е. в выходном спектре сигнала будут появляться или спайки или наоборот, дырки. При этом все эти оценки, при разумном времени накопления, как правило приводят к тому, что сильно искажаются согласные звуки и часто теряются шипящие, которые определяют разборчивость речи. Кстати, шумоподавление не улучшает разборчивость речи. Просто улучшается "комфорт" прослушивания.

Можно, конечно же, научить сеть при наличии шумодава, но результат будет сильно зависеть от шума.

из практики могу сказать, что шумодав на 3-6дБ, при уровне распознования 90-95%, улучшает результат на 2-3%. При распозновании менее 90% (с таким распознованием приборы возвращают продавцу :) ), шумодав только ухудшает результат.

Отсюда вывод - шумодав не нужен и вреден!

Поэтому, как правило, сетку учат командам при наличии заранее известного разного шума.

При этом результат распознования такой же как и без шума.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня сетка реагирует на окружающий шум и пытается "распознать его"

Либо я с VAD где то налажал, либо еще что то.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...