2014 dxdy logo

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

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




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


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

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


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

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

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


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

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


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

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


12/01/20
8
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
2907
г. Чехов
Вы спрашиваете, какой должен быть датасет. А по моей ссылке можно скачать и узнать.

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


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

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

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


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

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


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

Конечно, Вам следует учесть, что полезный частотный диапазон речевых данных где-то в районе 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
8
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
8
может кто то подскажет профильные форумы по данной тематике. Теория это конечно хорошо, но хотелось бы пообщаться с людьми, которые непосредственно сталкивались с этими задачами.

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


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


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

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

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


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


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

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


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

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

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

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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