Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 01.05.2014
Сообщений: 15

Распознавание личности по голосу (на основе нейронных сетей)

14.04.2015, 13:43. Показов 2807. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такая задач. Записали фонетически сбалансированный текст. (несколько человек) Разделили его на фонемы. Написали программу, которая будет выделять отличительные признаки (на основе некоторых преобразований). Получился текстовый файл с параметрами. Задача состоит в следующем. Создать, обучить нейронную сеть, чтобы потом, когда записывался звук, она говорила, кто этот человек(если он есть в базе). Проще всего реализовать в среде матлаб. Как я понимаю, надо создать нейронную сеть такого принципа. У нас есть выходные данные(как эталон) и будут входные. Если они совпадают (за исключением погрешности), то это тот человек, а если нет, то не тот. Но вот с реализацием проблемы. Буду рад любым советам.

Добавлено через 6 минут
Примерный план такой
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.04.2015, 13:43
Ответы с готовыми решениями:

Классификация текста на основе нейронных сетей
Всем привет. У меня такая задача,на основе нейронных сетей написать прогу для классификации текста,с общей базой данных. Даже не знаю с...

Распознавание личности по отпечаткам пальцев
У меня курсовая работа.Есть ли код программы на матлабе или на с++?

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

6
0 / 0 / 0
Регистрация: 25.04.2014
Сообщений: 3
15.04.2015, 11:17
Задача весьма интересная! Я думаю, для этого подойдет нейронная сеть прямого распространения. Если количество распознаваемых личностей невысоко, то рекомендую использовать сеть типа patternnet(hiddenSizes,trainFcn,performF cn). У неё количество нейронов в выходном слое соответствует числу распознаваемых объектов. Эта сеть эффективно работает в задачах классификации объектов.
0
0 / 0 / 0
Регистрация: 01.05.2014
Сообщений: 15
16.04.2015, 17:54  [ТС]
А не подойдет например слой Кохонена. Его как-то проще реализовать. Смотрите:
В файле проба.txt параметры NFC и FFC.

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
clear all
X=load('Проба.txt')
scatter(X(:,1),X(:,2))
R1=min(X);
R2=max(X);
R=[R1;R2]
R=R'
X=X'
%создание слоя Кохонена
net=newc(R,4);
%обучение слоя Кохонена
net.trainParam.epochs=100;
net=train(net,X)
%определение центров кластеров
IW=net.IW{1,1}
%классифицирование исходных данных
Y=sim(net,X)
ind=vec2ind(Y)
%отображение найденных кластеров
figure
hold on
plot(IW(:,1),IW(:,2),'*')
gscatter(X(1,:),X(2,:),ind)
Добавлено через 1 минуту
И потом берем какой-нибудь произвольную фонему, которую надо распознать. Вставляем. И получаем к какому кластеру он относиться. И так весь текст. он нам скажет, к какому кластеру, какая фонема подходит. Мы спрогнозируем результат.

Добавлено через 17 минут
Каждая фонема делится на что-то вроде окна. Например:
Кликните здесь для просмотра всего текста
-996.461 -305.397
157.404 145.242
74.8433 -31.9499
31.397 24.8227
37.4218 -15.4981
40.452 -12.2773
12.3759 -62.6274
-16.4842 -4.92772
-14.5759 -7.32475
3.06139 -13.2336
5.39452 -27.3361
-6.19559 -4.54637
-8.42717 -14.8745

-932.013 -219.946
207.585 177.656
66.7402 -54.2249
14.2191 20.6341
36.7932 -11.7943
50.0151 -17.4747
13.2619 -69.5255
-28.3025 -10.2579
-16.1496 0.302608
9.88504 -23.8266
0.00115526 -23.9354
-12.6043 0.959531
-6.91991 -17.3104

-909.888 -195.258
227.109 188.069
68.4174 -61.5598
8.06961 5.39368
29.3391 -11.4077
47.648 -17.3823
15.8036 -63.8765
-26.7964 -19.3936
-13.2079 -4.35472
13.2673 -32.5615
-2.5645 -30.4017
-16.5222 1.83877
-9.03047 -19.6733

-945.923 -238.738
205.731 176.825
80.6934 -47.8206
15.7183 1.76602
24.2038 -19.4101
33.5537 -7.39212
8.64758 -46.2897
-12.6465 -8.24538
-0.0493044 -15.3234
17.7657 -34.9377
7.48875 -34.8964
-15.3293 -0.6326
-18.7806 -14.7913

-976.993 -271.951
156.603 123.302
60.7617 -29.6311
53.7183 58.4914
61.064 -26.3952
23.581 -19.1581
1.69591 -38.2568
19.0127 -8.48652
9.80615 -51.7677
-16.8786 -6.18391
-11.5443 -12.9022
0.582928 -25.6976
-3.76262 -14.2515

-756.263 -34.2384
233.506 149.771
-5.88838 -116.531
32.7482 15.9187
4.26932 -65.8851
12.7089 -19.1872
-21.4773 -52.5676
-11.2818 3.28389
2.14128 -24.2353
-21.4061 2.04776
-8.17066 8.94301
-17.0779 -7.17531
3.67261 -15.6825

-707.368 25.9415
273.585 175.764
-5.69964 -134.092
7.21188 -14.7058
-12.6425 -59.6274
28.2877 -17.3982
-41.7874 -60.1079
-29.5749 24.7311
37.8551 -28.5682
-21.7882 -25.0195
-23.2677 34.2904
-13.3947 -19.9255
1.78822 -19.5144

-716.045 20.7601
274.338 180.85
10.3922 -120.97
6.06493 -27.0913
-17.578 -65.602
19.1899 -18.4495
-48.884 -50.2853
-31.62 33.5452
43.0457 -29.5714
-9.96101 -37.0829
-10.1458 21.2902
-8.73799 -16.9659
-10.2996 -10.3717


Это фонема д. Как моей сети загрузить данные. и сказать, что это именно д. И точка.

Добавлено через 1 час 41 минуту
http://nauka-rastudent.ru/13/2355/

Вот здесь показан пример, как устроена работа нейронной сети, но с изображениями. Вместо входных картинок- можно использовать текстовые файлы с параметрами.
0
0 / 0 / 0
Регистрация: 25.04.2014
Сообщений: 3
16.04.2015, 19:58
Зачем вам использовать слой Кохонена, который предназначен для кластеризации данных, т.е обучение без учителя (а у вас есть учитель!) . С ним вы не получите нужного результата. К тому же однослойная сеть вряд ли справится с вашей задачей.
У вас есть обучающая выборка(пары вход-выход). Попробуйте использовать сеть patternnet. Она состоит из двух слоев. Количество нейронов в выходном слое равно количеству распознаваемых классов. Количество нейронов в скрытом слое потом можно определить опытным путем (для начала оставить равным 10).

Добавлено через 38 минут
Входные данные организуйте матрицей МхN, где M - количество входов сети, т.е. количество значений в фонеме (26), N - количество фонем.
И соответственно целевая матрица LxN, где L - количество распознаваемых классов, т.е количество выходов сети, а N - количество фонем. При этом каждый столбец этой матрицы состоит из нулей, кроме одной строки, в которой стоит единица. Эта строчка и будет соответствовать правильной фонеме.

Добавлено через 11 минут
Matlab M
1
2
3
4
5
6
7
8
9
10
net = patternnet(10); % Создание сети   10-количество нейронов в скрытом слое
 
% Некоторые параметры, которые можно поменять.
%net.trainFcn = 'trainlm';  Функция обучения, например, trainlm
%net.performFcn = 'mse';  Функция оценки, например, mse - среднеквадратическое отклонение 
%net.trainParam.epochs  = 100; Количество итераций, после которых заканчивается обучение
%net.trainParam.goal =0.001;    Точность(значение mse), при достижении которой заканчивается обучение
 
[net, tr] = train(net,Input,Output); %Обучение сети
%view(net);  Показывает созданную сеть
0
0 / 0 / 0
Регистрация: 01.05.2014
Сообщений: 15
16.04.2015, 21:11  [ТС]
Я только недавно начал разбираться в нейронных сетях, а знания матлаба у меня вообще нулевые.
смотрите как сделал.

Прочитал 3 фонемы
clear all
FonemaD=load('d_wav_MFCC_GFCC.txt')
FonemaR=load('r_wav_MFCC_GFCC.txt')
FonemaY=load('y_wav_MFCC_GFCC.txt')
FonemaR1=load('r(zahuml)_wav_MFCC_GFCC.t xt')

4 фонева- это некоторые изменения монемы р, для итоговой проверки.

потом создаю матрицу.
Alfavit=[FonemaD, FonemaR, FonemaY]; (где он начинает ругаться)

потом создаю переменные, которые добавлю в Target data.
а именно:
T=eye(208);
T1=T;
T2=T;

потом в окне самой программы ввожу NNtool. Открывается меню создания сети. где ввожу входные данные. потом создаю сеть. обучаю ее матрицей (если она заработает) а потом проверяю контрольным txt. Все описал, как должно идти. Но в идеале не все так прекрасно.

Добавлено через 27 минут
Обучаю 1 фонему, норм, 2 тоже норм. на 3 выдает:Insufficient number of outputs from right hand side of equal sign to satisfy assignment.

Error in ==> nntool at 681
[errmsg,errid] = me.message;
0
0 / 0 / 0
Регистрация: 25.04.2014
Сообщений: 3
17.04.2015, 20:51
Предлагаю вам попробовать решить более простую задачу, например, построить нейронную сеть, которая выполняет операцию "Исключающее ИЛИ", чтобы понять принцип работы и какие данные, как и куда нужно загружать. Примеры в интернете есть. А потом уже переходить к более сложной вашей задаче.
0
0 / 0 / 0
Регистрация: 01.05.2014
Сообщений: 15
17.04.2015, 23:20  [ТС]
Для меня это не вариант..Времени нету. так что приходиться изучать все сразу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2015, 23:20
Помогаю со студенческими работами здесь

Применимость нейронных сетей
Здравствуйте! Решаю по работы одну задачу и решил попробовать, если это вообще возможно использовать нейронную сеть, но т.к. в теории...

Примеры нейронных сетей
Всем доброго времени суток, подскажите примеры нейронных сетей на ВБ, есть ли они вообще, ну или приведите пример как это можно...

Комбинирование нейронных сетей
Здравствуйте! Подскажите, пожалуйста, можно ли скомбинировать: 1. две нейронные сети, например, сеть Кохонена и Хопфилда 2....

Знания для нейронных сетей
Доброго времени суток! Народ возник такой вопрос по нейронным сетям, а точнее их созданию. Я знаю PHP, на базовом уровне JS, jQuery. Вообще...

Применение свёрточных нейронных сетей
Ищу статьи о том, где и с какой целью применяются снс. К примеру, знаю, что Гугл, Фэйсбук, пинтерест их используют. Но вот статьи о...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru