реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Помогите понять по алгоритмам VAD, траблы с реализацией
ksv198
сообщение Sep 8 2015, 11:23
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964



Добрый день!
Есть проблема с реализацией VAD (Voice Activity Detection).
Пытаюсь реализовать на stm32f4xx; входной поток имеет умеренные параметры: 8000 Гц частота дискретизации/ 16 бит /моно (обычный не сжатый PCM).
Сам сигнал имеет ограничение по полосе 0 - 4000 Гц (речь), спектр реального сигнала смотрел в Audacity.
При применении наиболее распространённых критериев ZCD (zero crossing detector) и STE (short time energy) получается много (недопустимо) ложных
срабатываний. Сработку вызывает, например, дыхание в микрофон, шум ветра. Кроме того, критерий ZCD довольно слабо отражает наличие/отсутствие речи.
Как обрабатываю: поток принимается в буфер на 512 сэмплов (буферов несколько), режется на фреймы по 8 мс (64 сэмпла, впрочем пробовал и по 16 мс -128 сэмплов,
результаты очень мало отличаются), затем считаю количество пересечений нуля и энергию. Пробовал с прямоугольным окном и окном Хэммминга, разница не очень ощутима.
Вопрос собственно в чём - какой ещё способ (критерий) применить для VAD, для улучшения распознаваемости речи/паузы?
Сигнал сам по себе не зашумлён, SNR больше 20 дБ.
Начитался по этой теме уже довольно много, смущает несходимость теории в статьях с получаемым результатом. Кроме того есть непонятка с выбором фреймов - неперекрывающиеся или
перекрывающиеся на полфрейма, что лучше? Вычислительных ресурсов вроде бы хватает, могу безболезненно выделить до 15% процессорного времени контроллера (168 МГц).
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Sep 8 2015, 12:05
Сообщение #2


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Может взять готовый? Например из G.729 annex B. Там, я помню, был какой-то навороченный перечень условий для срабатывания. Слабо себе представляю, как его построить самостоятельно.
Go to the top of the page
 
+Quote Post
ksv198
сообщение Sep 8 2015, 12:13
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964



Цитата(Fat Robot @ Sep 8 2015, 15:05) *
Может взять готовый? Например из G.729 annex B. Там, я помню, был какой-то навороченный перечень условий для срабатывания. Слабо себе представляю, как его построить самостоятельно.


Да уже подумывал об этом. А насколько он прожорлив, сколько процессорного времени ему надо, памяти, есть информация?
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Sep 8 2015, 13:15
Сообщение #4


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Стандарту 20 лет как-никак. Так что особой прожорливости ожидать не стоит. Я думаю, что в 4-6 mips вы уложитесь при аккуратной реализации.

Референсные исходники и тестовые векторы есть на сайте ITU. Ваша задача:
- выбросить из кодера все, что не относится к VAD.
- заменить компилируемую библиотеку операций с фикс. точкой на "родные" операции и функции вашего целевого процессора.

Цитата(ksv198 @ Sep 8 2015, 13:13) *
Да уже подумывал об этом. А насколько он прожорлив, сколько процессорного времени ему надо, памяти, есть информация?
Go to the top of the page
 
+Quote Post
ksv198
сообщение Sep 8 2015, 13:28
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964



Цитата(Fat Robot @ Sep 8 2015, 16:15) *
Стандарту 20 лет как-никак. Так что особой прожорливости ожидать не стоит. Я думаю, что в 4-6 mips вы уложитесь при аккуратной реализации.

Референсные исходники и тестовые векторы есть на сайте ITU. Ваша задача:
- выбросить из кодера все, что не относится к VAD.
- заменить компилируемую библиотеку операций с фикс. точкой на "родные" операции и функции вашего целевого процессора.

Спасибо, исходники смотрю уже, попробую, что получится.
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Sep 8 2015, 13:36
Сообщение #6


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Тогда уж посмотрите еще VAD из кодека gsm amr-2:

When deployed on a custom DSP running at a clock speed of 1.28 MHz and consuming less than 1 milliWatt of power, the low-resource VAD uses less than 30% of the available system resources. Т.е. совсем копейки по ресурсам.

Для AMR будет еще проще отцепить VAD от кодека. Исходники (flp, fxp) для 2х вариантов VAD, а также векторы есть на сайте 3gpp

При таких ресурсах можно использовать все 3 варианта VAD одновременно с мажорированием решений.

Успехов.

Цитата(ksv198 @ Sep 8 2015, 14:28) *
Спасибо, исходники смотрю уже, попробую, что получится.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 20:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016