LINUX.ORG.RU

Dolphin2 - демо-программа. Записывает и распознает ноты

 dolphin2, , , sound recognizer,


0

1

dolphin2 - это обучаемая программа для распознавания звуков на мобильном телефоне В моем случае, это Nokia, у которой есть программа «синтезатор мелодий» С помощью этого синтезатора можно 7 звуков-нот записать. И собственно я их записал и они находятся в папке res под теми именами, которые в телефоне.

После запуска вам доступны две функции (кнопки) «start record» и «start recognize»

start record - эта кнопка записывает звук под именем, которое нужно ввести в поле: «Name of recording pattern» (Только буквы,

английские)

Один из вариантов: Указываете имя для записываемого звука. Затем запускаете на телефоне «Синтезатор мелодий», затем нажимаете нужную кнопку на телефоне и зазвучит нота. Как только нота начнет звучать, нужно нажать кнопку «start record » в программе Dolphin2 В Eclipse, в консоли, выводятся сообщения о процессе работы программы Записывается только пол-секунды звука (длительность смотри в Const.java) Записывается пофреймово, каждый фрейм это png картинка Потом из фреймов выборочно делается статистический файл properties для каждого образца. На их основе потом происходит распознавание Кнопка «start record » исчезает на время записи. Затем нужно указатель мышки двинуть на текстовое поле, чтобы кнопка появилась.

Так записывается образец звука.

start speak - эта кнопка запускает процесс выбора подобного входящему образца звука (из базы данных уже записанных образцов -открывается окно, выберите ожидаемый результат распознавания и нажмите ок)

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

В Eclipse, в консоли, выводятся сообщения о процессе распознавания Если распознание удачно, то становится возможным обучить dolphin2 - статистика по двум подобным образцам (входящему и максимально соотвествующему из уже записанных) особым образом совмещается -

это делается в автоматическом режиме, без вашего участия.

В Eclipse, в консоли, выводятся сообщения о процессе обучения

Если распознавание неудачно, тогда обучения не производится.

Программа Dolphin2 является демонстрационным проектом в рамках более обширного проекта распознавания голосовой речи.

https://sourceforge.net/projects/dolphin2/files/

Инструкция по установке:

Распаковываете файл - это проект eclipse - добавляете в workspace каталог вашего Eclipse и наслаждаетесь.



Последнее исправление: Oleg_Dorozhko (всего исправлений: 2)
Ответ на: комментарий от anonymous_sapiens

Это значительно улучшенный вариант. Другой интерфейс, другое качество.

Oleg_Dorozhko
() автор топика

Лол

private static int cLength(int n)
	{
		if(n == 0) return 1;
		if(n == 1) return 9;
		if(n == 2) return 25;
		else return calCLength(n);
	}

anonymous
()
Ответ на: комментарий от anonymous

Это оптимизация. Железный кэш. Что-то вроде, как если бы эту мою программу можно было бы выполнить в виде USB устройства, т.е. в виде чипа. Ну лениво думать было. Проще было весь набор данных забить железно. Ну и ускорение вычислений для первых трех N налицо. И последнее это лишний код :) он не юзается в программе. В процессе разработки я от него отказался, но забыл выкинуть.

Oleg_Dorozhko
() автор топика
Ответ на: комментарий от Norgat

switch/case слишком громоздок для early return branching. Другое дело, что у автора ключевое слово else вообще не требуется.

GateKeeper ★★
()
Ответ на: комментарий от anonymous

Почему выбрано название Dolphin? Уже ведь есть с таким названием файловый менеджер и мобильный браузер.

И почему нельзя было завести массив для выборки cLength?

static_lab ★★★★★
()
Ответ на: комментарий от static_lab

И да, выражение (n*(4*n+4)+1) спасёт отца русской демократии.

static_lab ★★★★★
()
Ответ на: комментарий от Oleg_Dorozhko

рекомендую следующие версии выпускать под другим именем. Например corvus/corvum или другие латинские названия животных, которые максимально подражают (и различают) голос и речь человека. Идеальный вариант: corvox - соединение corvus (врановые) и vox (голос).

science ★★☆
()
Последнее исправление: science (всего исправлений: 1)
Ответ на: комментарий от Oleg_Dorozhko

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

science ★★☆
()
Ответ на: комментарий от jtootf

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

Oleg_Dorozhko
() автор топика
Ответ на: комментарий от Oleg_Dorozhko

По крайней мере ноты

насколько грязные ноты? фортепиано, гитару распознаёт? или только стерильную синусоиду с генератора?

jtootf ★★★★★
()
Ответ на: комментарий от Oleg_Dorozhko

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

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

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

Звуки нот из программы «Синтезатор мелодии» на моем мобильном телефоне. Чистые - до, ре, ми, фа, соль, ля, си

Если при распознании соблюдать условия записи - мобильный на одном расстоянии от микрофона

Пробовали записать что-нибудь?

Распознать?

Oleg_Dorozhko
() автор топика
Ответ на: комментарий от Oleg_Dorozhko

Звуки нот из программы «Синтезатор мелодии» на моем мобильном телефоне

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

Пробовали записать что-нибудь?

ещё нет. даже исходники не смотрел

jtootf ★★★★★
()
Ответ на: комментарий от Oleg_Dorozhko

Кстати, а что за task на твой взгляд нужно solve?

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

запусти, проверь сложный звук, а тогда уж и говори

то есть у тебя есть сомнения?

jtootf ★★★★★
()
Ответ на: комментарий от Oleg_Dorozhko

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

float
()

Чувак, тебе бы поучиться для начала. Почитать азы обработки сигналов - свертка, корреляция, преобразование Фурье. Посмотреть, чего там наделали умные дядьки в этой сфере. А потом уж пытаться свой велосипед городить. Тесла новый ты наш :)

Puzan ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.