2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Создание датасета
Сообщение12.01.2020, 14:04 


12/01/20
18
Всем привет.
Делаю систему распознавания голосовых команд на базе нейросети Tensor flow lite. Работает она на МК с ядром Cortex m4
Интересует правильный алгоритм подготовки датасета образцов произношения голосовых команд и последующего обучения. На данный момент поступал так: собирал (записывал) образцы произношения команд, приводил все файлы к одному виду и затем этим датасетом обучал сетку. Записи делались в условиях тишины. Система заработала, команды распознаются, но только в условиях тишины. Как сделать систему более толерантную к окружающему шуму?
Какой вообще правильный алгоритм создания датасета и обучения сетки? Читал, что как то подмешивают шум - добавляют файлы с записями шумов в датасет, но толковой инфы не нашел. Заранее спасибо за ответы.

 Профиль  
                  
 
 Re: Создание датасета
Сообщение12.01.2020, 18:51 


10/03/16
3995
Aeroport
1. Введите критерий правильности распознавания, скажем взвншенное отношение числа неправильно понятых команд к числу всех команд в датасете. В качестве веса можно юзать обоатное число слогов в команде.
2. Начинайте добавлять к цифровым записям (.wav) команд белый шум разной амплитуды, и при каждой амплитуде измеряйте критерий распознавания. График, если можно, приаедите здесь. При какой минимальной амплитуде распознавание станет бессмысленным, ибо критерий упадет до 0.99? Чему эта амплитуда соответствует в реальности (запишите шум посторонних голосов, воды на кухне, шкворчащего стейка и т.п., и сделайте вывод).

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

 Профиль  
                  
 
 Re: Создание датасета
Сообщение12.01.2020, 20:34 


12/01/20
18
Вы предлагаете проводить эксперименты, это план "Б"))) Надеюсь услышать ответ от людей, которые уже делали подобные вещи.

 Профиль  
                  
 
 Re: Создание датасета
Сообщение12.01.2020, 21:21 


12/07/15
2948
г. Чехов
Думаю, вам стоит изучить мировой опыт:
https://www.kaggle.com/c/tensorflow-spe ... e/overview
(Тут есть готовый датасет с 65000 записями разных голосов, произносящие 12 видов команд)

 Профиль  
                  
 
 Re: Создание датасета
Сообщение12.01.2020, 21:42 


12/01/20
18
Mihaylo в сообщении #1434766 писал(а):
Думаю, вам стоит изучить мировой опыт:
https://www.kaggle.com/c/tensorflow-spe ... e/overview
(Тут есть готовый датасет с 65000 записями разных голосов, произносящие 12 видов команд)

Этот этап я уже давно прошел, там готовый датасет. У меня вопрос, надо ли как то искусственно подмешивать разные шумы к датасету или записывать его в тишине. А дальше обрабатывать шумодавными алгоритмами входные голосовые команды. Или как то по другому.

-- 12.01.2020, 22:48 --

https://drive.google.com/file/d/1TD7vBT ... sp=sharing
по ссылке видео демонстрация работы моего варианта, работает только в тишине.

 Профиль  
                  
 
 Re: Создание датасета
Сообщение12.01.2020, 21:53 


12/07/15
2948
г. Чехов
Вы спрашиваете, какой должен быть датасет. А по моей ссылке можно скачать и узнать.

 Профиль  
                  
 
 Re: Создание датасета
Сообщение12.01.2020, 22:03 


12/01/20
18
Mihaylo в сообщении #1434772 писал(а):
Вы спрашиваете, какой должен быть датасет. А по моей ссылке можно скачать и узнать.

ссылка отличная, только все эти датасеты я уже использовал, когда начинал разбираться. Они не дают ответа на мой вопрос. Я могу записать датасет в тишине и применить шумоподавление для входной команды. Но правильный ли это путь, я хз. Может есть еще какие то варианты повышения толерантности к фоновым шумам.

 Профиль  
                  
 
 Re: Создание датасета
Сообщение12.01.2020, 22:19 
Заслуженный участник


27/04/09
28128
Тут может быть так, что успехи на этом пути делаются в реальном времени, и многие из делающих их могут не захотеть делиться (или им допустим компания не позволит). Ну и тем более на этом форуме эмэльщики такого уровня весьма разреженны, в случае вашей темы лимитирующий фактор — скорее наверно этот. А совет поэкспериментировать, ну, не так уж он плох, пока не нашлось других. Понятно, что в случае если бы уже был некий справочник на такую тему, то такой совет был бы немного лишним, но сейчас вроде ещё не так всё устаканилось в области ML. Несмотря на её прогресс.

 Профиль  
                  
 
 Re: Создание датасета
Сообщение12.01.2020, 22:24 


12/07/15
2948
г. Чехов
Раз вы знакомы с машинным обучением, то должны понимать, что нейросеть должна обучаться в реальных условиях. Обучающий и тестовый датасеты получаются делением общего размеченного датасета на две части.
То есть сам по себе вопрос глупый: Вы, по сути, спрашиваете, обучать ли нейросеть на рафинированных данных, а проверять в реальных условиях? Таким образом еще ни одна задача МО не решалась. Не правда ли?

Конечно, Вам следует учесть, что полезный частотный диапазон речевых данных где-то в районе 100-2000 Гц (цифры очень грубо называю). Применяйте фильтр этих частот как при обучении, так и в реальной работе устройства. Шум вне этого диапазона не интересен, его можно не добавлять. Самый сложный шум - речь посторонних людей, такие шумы - реальный вызов в Вашей задаче.

Аналогичные фишки должны быть применены и к громкости аудиозаписи. Мне кажется, нужно применять алгоритмы компрессии аудиосигнала.

Записывайте чистый сигнал, потом примешивайте шумы. Я думаю, такие аудиозаписи будут почти идентичны реальным записям в шумных обстановках. Хотя могут быть нюансы.

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

 Профиль  
                  
 
 Re: Создание датасета
Сообщение13.01.2020, 00:16 


07/10/15

2400
Art_SH82 в сообщении #1434770 писал(а):
надо ли как то искусственно подмешивать разные шумы к датасету или записывать его в тишине

Нужно и то и другое, от чистых записей совсем отказываться не нужно - качество распознавания сильно упадёт. Просто добавляйте к исходному dataset зашумлённые записи тех же самых команд. Сначала понемногу, и ровно до тех пор, пока алгоритм не начнёт устойчиво работать.

 Профиль  
                  
 
 Re: Создание датасета
Сообщение13.01.2020, 09:06 


12/01/20
18
Andrey_Kireew в сообщении #1434801 писал(а):
Art_SH82 в сообщении #1434770 писал(а):
надо ли как то искусственно подмешивать разные шумы к датасету или записывать его в тишине

Нужно и то и другое, от чистых записей совсем отказываться не нужно - качество распознавания сильно упадёт. Просто добавляйте к исходному dataset зашумлённые записи тех же самых команд. Сначала понемногу, и ровно до тех пор, пока алгоритм не начнёт устойчиво работать.

Спасибо за ответ. А зашумливание записей делается ручками, я так полагаю? Т.е. исходный датасет чистый + датасет с добавленными шумами?

 Профиль  
                  
 
 Re: Создание датасета
Сообщение13.01.2020, 13:04 


07/10/15

2400
Art_SH82 в сообщении #1434817 писал(а):
Спасибо за ответ. А зашумливание записей делается ручками, я так полагаю? Т.е. исходный датасет чистый + датасет с добавленными шумами?

Конечно, проще всего сложить samples белого шума и samples уже имеющихся записей, и добавить полученные таким образом искусственно зашумлённые записи в исходный dadaset. Уровень шума можно взять примерно такой же как в реальной обстановке. А раз так проще всего сделать - с этого, наверное, следует и начать.

P.S: вообще, описываемая Вами ситуация, свидетельствует о том, что сеть обучилась плохо, в том смысле, что она не нашла общую закономерность. В алгоритме используется много лишних факторов, которые в рамках конкретной выборки не противоречат искомой закономерности, но в действительности - могут зависть от чего угодно. Отсюда такое фатальное влияние шумов, которого в хорошо обученной сети быть не должно.
Если Вам удастся сделать алгоритм устойчивым к шумам, далеко не факт, что он будет так же хорошо работать на сигналах разной громкости, разного тембра и т.п. Но, так или иначе, со временем всё это выяснится.

 Профиль  
                  
 
 Re: Создание датасета
Сообщение13.01.2020, 23:10 


17/10/08

1313
Art_SH82 в сообщении #1434694 писал(а):
Записи делались в условиях тишины. Система заработала, команды распознаются, но только в условиях тишины. Как сделать систему более толерантную к окружающему шуму?
Какой вообще правильный алгоритм создания датасета и обучения сетки? Читал, что как то подмешивают шум - добавляют файлы с записями шумов в датасет, но толковой инфы не нашел.

О, это та еще опупея...

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

С аудио, видимо, та же картина. Насчет добавления шума - есть шумовые библиотеки. Нужно найти их, выбрать те, которые будут иметь место на практике, и подмешиваться фрагменты из этих файлов к обучающим сигналам. Тут семь пядей во лбу не нужно. Можно подмешивать одни сигналы исходной обучающей выборки к другим в качестве шума.

Если поискать "Характеристики голоса", то находится, что основные характеристики голоса "Сила", "Высота" и "Тембр".
Амплитуду можно принять за "Силу", частоты - за "Высоту". Для пополнения обучающей выборки можно сформировать новые сигналы из исходных, воспроизводя из с разной скоростью и разным коэффициентом усиления. "Тембр" характеризуется обертонами, который можно варьировать с помощью частотных фильтров. Наверное, для изменения тембра еще можно подрезать верхние частоты с добавлением высших гармоник для низших частот.

Также есть второстепенные характеристики голоса:
* Речевой тон и подвижность - вроде как тоже описывается вариативным изменением амплитуды и скорости воспроизведения сигнала. Возможно, здесь как-то может быть использован "сэмплинг" - вырезание или добавление повторяющихся смежных фрагментов сигнала.
* Темп речи - это "сэмплинг" пауз
* Дефекты речи, осиплость и т.п. - также частично моделируется частотной фильтрацией
И т.д. Идей то полно, только не ясно, насколько все это работает и насколько сложно реализуется.

 Профиль  
                  
 
 Re: Создание датасета
Сообщение14.01.2020, 11:51 


12/01/20
18
может кто то подскажет профильные форумы по данной тематике. Теория это конечно хорошо, но хотелось бы пообщаться с людьми, которые непосредственно сталкивались с этими задачами.

 Профиль  
                  
 
 Re: Создание датасета
Сообщение14.01.2020, 15:11 


10/03/16
3995
Aeroport
Art_SH82 в сообщении #1435112 писал(а):
Теория это конечно хорошо, но хотелось бы пообщаться с людьми


и они конечно сразу побегут расписывать решение вашей задачи со спенью подробности инструкции для кофемашины, ога.

Вот эти вот фразы

Art_SH82 в сообщении #1434775 писал(а):
Я могу записать датасет в тишине и применить шумоподавление для входной команды. Но правильный ли это путь, я хз.


Art_SH82 в сообщении #1434817 писал(а):
А зашумливание записей делается ручками, я так полагаю? Т.е. исходный датасет чистый + датасет с добавленными шумами?


Плюс непонимание того, что

Andrey_Kireew в сообщении #1434871 писал(а):
описываемая Вами ситуация, свидетельствует о том, что сеть обучилась плохо, в том смысле, что она не нашла общую закономерность. В алгоритме используется много лишних факторов, которые в рамках конкретной выборки не противоречат искомой закономерности, но в действительности - могут зависть от чего угодно. Отсюда такое фатальное влияние шумов, которого в хорошо обученной сети быть не должно.


говорит от том, что вы нуб в ML. И я бы на вашем месте не стал отказываться от предлагаемых участниками обсуждения проверок и экспериментов, с выкладыванием результатов в тред. И никто с Вами не будет делиться никакой информацией, если не ожидает услышать/увижеть что-то интересное от вас, даже если требуемое вами просто бесхозно валяется у него на флешке just now.

Прежде всего, к шуму (пока белому, до окрашенного Вам как до Китая... на велосипеде) какого уровня чувствителен обученный алгоритм? (Натравливать сеть естественно нужно на зашумлённый сэмпл, не участвововший в обучении, извините что уже совсем с Вами как с пятилетним). Ну и дальше возникнут следующие моменты

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Mikhail_K


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group