-
Notifications
You must be signed in to change notification settings - Fork 0
/
frmHome.cs
428 lines (358 loc) · 16.8 KB
/
frmHome.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Speech.Recognition;
using Microsoft.Speech.Synthesis;
namespace JIMAssistant
{
public partial class frmHome : Form
{
private SpeechSynthesizer falar = null; //Engine de fala
private SpeechRecognitionEngine reconhecer = null; //Engine de reconhecimento
public frmHome()
{
InitializeComponent();
}
private void btnSair_Click(object sender, EventArgs e)
{
Application.Exit(); //Fecha o sistema
}
private void btnMinimizar_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized; //Mininiza o sistema
}
private bool mover;
private int cX, cY;
private void pnlBar_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
cX = e.X;
cY = e.Y;
mover = true;
}
}
private void pnlBar_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
mover = false;
}
private void pnlBar_MouseMove(object sender, MouseEventArgs e)
{
if (mover)
{
this.Left += e.X - (cX - pnlBar.Left);
this.Top += e.Y - (cY - pnlBar.Top);
}
}
private void CarregarFala()
{
try
{
reconhecer = new SpeechRecognitionEngine( new System.Globalization.CultureInfo("pt-br")); //Instância
reconhecer.SetInputToDefaultAudioDevice(); //Microfone
falar = new SpeechSynthesizer(); //Instância
falar.SetOutputToDefaultAudioDevice(); //Saída de Áudio
falar.Rate = 1; //Velocidade de fala
#region Comandos de Saudações
//string[] saudacoes = { "Jim", "Bom dia", "Boa tarde", "Boa noite", "Não vou mais estudar hoje" };
Choices c_saudacoes = new Choices();
c_saudacoes.Add("Jim");
c_saudacoes.Add("Bom dia");
c_saudacoes.Add("Boa tarde");
c_saudacoes.Add("Sair");
GrammarBuilder gb_saudacoes = new GrammarBuilder();
gb_saudacoes.Append(c_saudacoes);
Grammar g_saudacoes = new Grammar(gb_saudacoes);
g_saudacoes.Name = "saudações";
#endregion
#region Comandos de Pergunta Simples
Choices c_perguntasSimples = new Choices();
c_perguntasSimples.Add("Qual o seu objetivo");
c_perguntasSimples.Add("Que horas são");
c_perguntasSimples.Add("Que dia é hoje");
c_perguntasSimples.Add("Quem te fez");
c_perguntasSimples.Add("Quem é você");
GrammarBuilder gb_perguntasSimples = new GrammarBuilder();
gb_perguntasSimples.Append(c_perguntasSimples);
Grammar g_perguntasSimples = new Grammar(gb_perguntasSimples);
g_perguntasSimples.Name = "perguntas";
#endregion
#region Comandos de Matérias e Areas
Choices c_materiasAreas = new Choices();
c_materiasAreas.Add("Robótica");
c_materiasAreas.Add("Matemática");
c_materiasAreas.Add("Química");
c_materiasAreas.Add("Inglês");
GrammarBuilder gb_materiasAreas = new GrammarBuilder();
gb_materiasAreas.Append(c_materiasAreas);
Grammar g_materiasAreas = new Grammar(gb_materiasAreas);
g_materiasAreas.Name = "matérias";
#endregion
#region Comando de Doenças
Choices c_doencas = new Choices();
c_doencas.Add("Gripe H1N1");
c_doencas.Add("Dengue");
c_doencas.Add("Tuberculose");
GrammarBuilder gb_doencas = new GrammarBuilder();
gb_doencas.Append(c_doencas);
Grammar g_doencas = new Grammar(gb_doencas);
g_doencas.Name = "doenças";
#endregion
#region Comandos de Pessoas Importantes
Choices c_pessoasImportantes = new Choices();
c_pessoasImportantes.Add("Quem foi Tiradentes");
c_pessoasImportantes.Add("Quem foi Nelson Mandela");
c_pessoasImportantes.Add("Quem foi Ayrton Senna");
GrammarBuilder gb_pessoasImportantes = new GrammarBuilder();
gb_pessoasImportantes.Append(c_pessoasImportantes);
Grammar g_pessoasImportantes = new Grammar(gb_pessoasImportantes);
g_pessoasImportantes.Name = "pessoas";
#endregion
#region Comandos de Outras Perguntas
Choices c_outrasPerguntas = new Choices();
c_outrasPerguntas.Add("Enem");
c_outrasPerguntas.Add("Vestibulares");
c_outrasPerguntas.Add("Redação");
GrammarBuilder gb_outrasPerguntas = new GrammarBuilder();
gb_outrasPerguntas.Append(c_outrasPerguntas);
Grammar g_outrasPerguntas = new Grammar(gb_outrasPerguntas);
g_outrasPerguntas.Name = "outras";
#endregion
#region Comando de Artigos
Choices c_artigos = new Choices();
c_artigos.Add("Artigo sobre política");
c_artigos.Add("Artigo sobre o brasil");
c_artigos.Add("Artigo sobre robôs");
c_artigos.Add("Constituição");
c_artigos.Add("Vídeos Enem 2018");
GrammarBuilder gb_artigos = new GrammarBuilder();
gb_artigos.Append(c_artigos);
Grammar g_artigos = new Grammar(gb_artigos);
g_artigos.Name = "artigos";
#endregion
reconhecer.RequestRecognizerUpdate(); //Atualizar o processo de reconhecimento
//Carregar gramática de reconhecimento
reconhecer.LoadGrammarAsync(g_saudacoes);
reconhecer.LoadGrammarAsync(g_perguntasSimples);
reconhecer.LoadGrammarAsync(g_materiasAreas);
reconhecer.LoadGrammarAsync(g_doencas);
reconhecer.LoadGrammarAsync(g_pessoasImportantes);
reconhecer.LoadGrammarAsync(g_outrasPerguntas);
reconhecer.LoadGrammarAsync(g_artigos);
//Método para reconhecer a voz
reconhecer.SpeechRecognized += reconhecimento;//new EventHandler<SpeechRecognizedEventArgs>(reconhecimento);
//Método para reconhecer o tom da voz
reconhecer.AudioLevelUpdated += new EventHandler<AudioLevelUpdatedEventArgs>(nivelAudio);
reconhecer.RecognizeAsync(RecognizeMode.Multiple); //Iniciar reconhecimento
}
catch (Exception ex)
{
MessageBox.Show("Ocorreu no CarregarFala(): " + ex.Message);
}
}
private void reconhecimento(object s, SpeechRecognizedEventArgs e)
{
if (e.Result.Confidence >= 0.5f)
{
string reconhecido = e.Result.Text;
lblReconhecido.Text = " Você falou: ";
lblReconhecido.Text += reconhecido;
switch (e.Result.Grammar.Name)
{
case "saudações":
processarSaudacoes(reconhecido);
break;
case "perguntas":
processarPerguntas(reconhecido);
break;
case "matérias":
processarMaterias(reconhecido);
break;
case "doenças":
processarDoencas(reconhecido);
break;
case "pessoas":
processarPessoas(reconhecido);
break;
case "outras":
processarOutras(reconhecido);
break;
case "artigos":
processarArtigos(reconhecido);
break;
default:
Fale("Infelizmente meu criador não adicionou esse comando!");
break;
}
}
else
{
Fale("Não consegui entender o que você deseja! Fale um pouco mais alto!");
}
}
private void frmHome_Load(object sender, EventArgs e)
{
CarregarFala();
falar.SpeakAsync("Bem vindo! Ainda não estou 100% desenvolvida. Essa é uma demonstração.");
}
private void nivelAudio(object s, AudioLevelUpdatedEventArgs e)
{
this.nivelVoz.Maximum = 100;
this.nivelVoz.Value = e.AudioLevel;
nivelVoz.BackColor = Color.Black;
}
private void Fale(string texto)
{
if (falar.State == SynthesizerState.Speaking)
{
falar.SpeakAsyncCancelAll();
}
falar.SpeakAsync(texto);
}
private void processarSaudacoes(string saudacao)
{
if (saudacao.Equals("Jim"))
{
Fale("Olá, estou aqui para ajudá-lo!");
}
else if (saudacao.Equals("Bom dia"))
{
Fale("Bom dia aluno! Pósso te ajudar?");
}
else if (saudacao.Equals("Bom tarde"))
{
Fale("Bom tarde aluno! Pósso te ajudar?");
}
else if (saudacao.Equals("Bom noite"))
{
Fale("Bom noite aluno! Pósso te ajudar?");
}
else if (saudacao.Equals("Sair"))
{
Application.Exit();
}
}
private void processarPerguntas(string pergunta)
{
if (pergunta.Equals("Quem é você"))
{
Fale("Sou Jim! Sua assistente educacional.");
}
else if (pergunta.Equals("Qual o seu objetivo"))
{
Fale("Fui criado para auxiliar você a estudar melhor.");
}
else if (pergunta.Equals("Que horas são"))
{
Fale("São " + DateTime.Now.ToShortTimeString());
}
else if (pergunta.Equals("Que dia é hoje"))
{
Fale("Hojé é " + DateTime.Now.ToLongDateString());
}
else if (pergunta.Equals("Quem te fez"))
{
Fale("Fui desenvolvida por um grupo de estudantes da escola Lía Sidou. Eles pensaram na ideia de criar um mecanismo capaz de ajudar alunos a estudarem melhor.");
}
}
private void processarMaterias(string materias)
{
if (materias.Equals("Robótica"))
{
Fale("Robótica é a ciência e técnica da concepção, construção e utilização de robôs. Ela também engloba computadores e sistemas compostos por partes mecânicas motorizadas.");
}
else if (materias.Equals("Robótica"))
{
Fale("A matemática é a ciência do raciocínio lógico e abstrato, que estuda quantidades, medidas, espaços, estruturas, variações e estatísticas.");
}
else if (materias.Equals("Química"))
{
Fale("Química é a ciência que estuda a composição, estrutura, propriedades da matéria, as mudanças sofridas por ela durante as reações químicas e a sua relação com a energia");
}
else if (materias.Equals("Inglês"))
{
Fale("Inglês é uma língua germânica ocidental que surgiu nos reinos anglo-saxônicos da Inglaterra.");
}
}
private void processarDoencas(string doenca)
{
if (doenca.Equals("Gripe H1N1"))
{
Fale("Gripe H1N1 é a conhecida gripe Suína. Infecção respiratória em humanos causada por uma cepa de influenza que surgiu pela primeira vez nos porcos.");
}
else if (doenca.Equals("Dengue"))
{
Fale("É uma doença viral transmitida por mosquitos que ocorre em áreas tropicais e subtropicais.");
}
else if (doenca.Equals("Tuberculose"))
{
Fale("É uma doença bacteriana infecciosa. Afeta principalmente os pulmões e pode ser grave.");
}
}
private void processarPessoas(string pessoa)
{
if (pessoa.Equals("Quem foi tiradentes"))
{
Fale("Joaquim José da Silva Xavier, o Tiradentes, foi um dentista, tropeiro, minerador, comerciante, militar e ativista político que atuou no Brasil, mais especificamente nas capitanias de Minas Gerais e Rio de Janeiro.");
}
else if (pessoa.Equals("Quem foi Nelson Mandela"))
{
Fale("Nelson Mandela foi um advogado, líder rebelde e presidente da África do Sul de 1994 a 1999, considerado como o mais importante líder da África Negra, vencedor do Prêmio Nobel da Paz de 1993");
}
else if (pessoa.Equals("Quem foi Ayrton Senna"))
{
Fale("Ayrton Senna da Silva, ou simplesmente Senna, foi um piloto de Fórmula 1 das décadas de 80 e 90 e maior ídolo brasileiro do automobilismo.");
}
}
private void processarOutras(string outra)
{
if (outra.Equals("Enem"))
{
Fale("O Exame Nacional do Ensino Médio, Enêm, é hoje o principal método de ingresso nas instituições públicas de nível superior.");
}
else if (outra.Equals("Vestibulares"))
{
Fale("As universidades e faculdades brasileiras utilizam diversos tipos de processo seletivo como forma de ingresso, desde a utilização da nota do Enem, sem a necessidade de fazer outras provas, até o exame vestibular tradicional e suas variações, como o Processo Seletivo Seriado e o Vestibular Agendado.");
}
else if (outra.Equals("Redação"))
{
Fale("Redação é o processo de redigir um texto. É uma atividade presente na cultura civilizada desde a invenção da escrita, e atualmente considerada um campo profissional e artístico na literatura, na produção de roteiros, na elaboração de relatórios e documentos.");
}
}
private void processarArtigos(string outra)
{
if (outra.Equals("Artigo sobre política"))
{
System.Diagnostics.Process.Start("https://scholar.google.com.br/scholar?hl=pt-BR&q=política");
Fale("Ok, vamos ver alguns artigos no Google Acadêmico, sobre política.");
}
else if (outra.Equals("Artigo sobre o brasil"))
{
System.Diagnostics.Process.Start("https://scholar.google.com.br/scholar?hl=pt-BR&q=brasil");
Fale("Ok, vamos ver alguns artigos no Google Acadêmico, sobre brasil.");
}
else if (outra.Equals("Artigo sobre robôs"))
{
System.Diagnostics.Process.Start("https://scholar.google.com.br/scholar?hl=pt-BR&q=robôs");
Fale("Ok, vamos ver alguns artigos no Google Acadêmico, sobre robôs.");
}
else if (outra.Equals("Constituição"))
{
System.Diagnostics.Process.Start("http://www.planalto.gov.br/ccivil_03/constituicao/constituicao.htm");
Fale("Ok, vamos ver nossa constituição de 1988");
}
else if (outra.Equals("Vídeos Enem 2018"))
{
System.Diagnostics.Process.Start("https://www.youtube.com/results?search_query=enem2018");
Fale("Ok, vamos ver o que temos sobre Enem 2018 no youtube.");
}
}
}
}