From d1c1135923287f9dd7348610aa3f1915f82b92e1 Mon Sep 17 00:00:00 2001 From: GR8 Date: Sat, 20 May 2017 19:56:12 +0400 Subject: [PATCH] Added Text To speech #7 --- .../ChatBotProject/ChatBot.Designer.cs | 10 +++-- ChatBotProject/ChatBotProject/ChatBot.cs | 17 ++++++- ChatBotProject/ChatBotProject/ChatBot.resx | 42 +++++++++--------- .../DesignTimeResolveAssemblyReferences.cache | Bin 47269 -> 50314 bytes 4 files changed, 43 insertions(+), 26 deletions(-) diff --git a/ChatBotProject/ChatBotProject/ChatBot.Designer.cs b/ChatBotProject/ChatBotProject/ChatBot.Designer.cs index b3a92fb..b6512dc 100644 --- a/ChatBotProject/ChatBotProject/ChatBot.Designer.cs +++ b/ChatBotProject/ChatBotProject/ChatBot.Designer.cs @@ -199,21 +199,23 @@ private void InitializeComponent() this.clearChatToolStripMenuItem, this.toggleVoiceToolStripMenuItem}); this.contextMenuStrip1.Name = "contextMenuStrip1"; - this.contextMenuStrip1.Size = new System.Drawing.Size(142, 48); + this.contextMenuStrip1.Size = new System.Drawing.Size(153, 70); this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening); // // clearChatToolStripMenuItem // this.clearChatToolStripMenuItem.Name = "clearChatToolStripMenuItem"; - this.clearChatToolStripMenuItem.Size = new System.Drawing.Size(141, 22); + this.clearChatToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.clearChatToolStripMenuItem.Text = "Clear Chat"; this.clearChatToolStripMenuItem.Click += new System.EventHandler(this.clearChatToolStripMenuItem_Click); // // toggleVoiceToolStripMenuItem // + this.toggleVoiceToolStripMenuItem.CheckOnClick = true; this.toggleVoiceToolStripMenuItem.Name = "toggleVoiceToolStripMenuItem"; - this.toggleVoiceToolStripMenuItem.Size = new System.Drawing.Size(141, 22); - this.toggleVoiceToolStripMenuItem.Text = "Toggle Voice"; + this.toggleVoiceToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.toggleVoiceToolStripMenuItem.Text = "Bot Voice"; + this.toggleVoiceToolStripMenuItem.Click += new System.EventHandler(this.toggleVoiceToolStripMenuItem_Click); // // Form1 // diff --git a/ChatBotProject/ChatBotProject/ChatBot.cs b/ChatBotProject/ChatBotProject/ChatBot.cs index cff323c..5624957 100644 --- a/ChatBotProject/ChatBotProject/ChatBot.cs +++ b/ChatBotProject/ChatBotProject/ChatBot.cs @@ -2,6 +2,7 @@ using System.Windows.Forms; using System.Media; using System.IO; // needed for filing +using System.Speech.Synthesis; namespace ChatBotProject { @@ -13,6 +14,9 @@ public Form1() } static ChatBot bot; + SpeechSynthesizer reader = new SpeechSynthesizer(); + bool textToSpeech = false; + private void Form1_Load(object sender, EventArgs e) { bot = new ChatBot(); @@ -79,7 +83,7 @@ private void showOutput() var t = new Timer(); // Time in milseconds - minimum delay of 1s plus 0.1s per character. - t.Interval = 1; // 1000 + (outtt.Length * 100); + t.Interval = 1000 + (outtt.Length * 100); // Show the "Bot is typing.." text txtTyping.Show(); @@ -99,6 +103,12 @@ private void showOutput() // Show the bot message and play the sound addOutMessage(outtt); Rcv.Play(); + + // Text to Speech if enabled + if (textToSpeech) + { + reader.SpeakAsync(outtt); + } InputTxt.Focus(); // Put the cursor back on the textbox t.Stop(); @@ -196,5 +206,10 @@ private void menuButton_Click(object sender, EventArgs e) contextMenuStrip1.Show(menuButton, new System.Drawing.Point(0, -contextMenuStrip1.Size.Height)); } + private void toggleVoiceToolStripMenuItem_Click(object sender, EventArgs e) + { + // whenever the toggle is clicked, true is set to false visa versa. + textToSpeech = !textToSpeech; + } } } \ No newline at end of file diff --git a/ChatBotProject/ChatBotProject/ChatBot.resx b/ChatBotProject/ChatBotProject/ChatBot.resx index 7689d0e..56402d2 100644 --- a/ChatBotProject/ChatBotProject/ChatBot.resx +++ b/ChatBotProject/ChatBotProject/ChatBot.resx @@ -288,27 +288,6 @@ 177, 17 - - - iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1 - MAAA6mAAADqYAAAXcJy6UTwAAAAJcEhZcwAACxMAAAsTAQCanBgAAANPSURBVHhe7dyhbUBRDATBNP3r - TxpY8KSY3YAhyywd9s/3fTArI6zICCsywoqMsCIjrMgIKzLCioywIiOsyAgrMsKKjLAiI6zICCsywoqM - sCIjrMgIKzLCioywIiOsyAgrMsKKjLAiI6zICCsywoqMsCIjrMgIKzLCioywIiOsyAgrMsKKjLAiI6zI - CCsywoqMsCIjrMgIKzLCioywIiOsyAgrMsKKjMd+4R9qU2cyHquj4FVt6kzGY3UUvKpNncl4rI6CV7Wp - MxmP1VHwqjZ1JuOxOgpe1abOZDxWR8Gr2tSZjMfqKHhVmzqT8VgdBa9qU2cyHquj4FVt6kzGY3UUvKpN - ncl4rI6CV7WpMxmP1VHwqjZ1JuOxOgpe1abOZDxWR8Gr2tSZjMfqKHhVmzqTEVZkhBUZYUVGWJERVmSE - FRlhRUZYkRFWZIQVGWFFRliREVZkhBUZYUVGWJERVmSEFRlhRUZYkRFWZIQVGWFFRliR8Vg9O4JXtakz - GY/VUfCqNnUm47E6Cl7Vps5kPFZHwava1JmMx+ooeFWbOpPxWB0Fr2pTZzIeq6PgVW3qTMZjdRS8qk2d - yXisjoJXtakzGY/VUfCqNnUm47E6Cl7Vps5kPFZHwava1JmMx+ooeFWbOpPxWB0Fr2pTZzIeq6PgVW3q - TMZjdRS8qk2dyQgrMsKKjLAiI6zICCsywoqMsCIjrMgIKzLCioywIiOsyAgrMsKKjLAiI6zICCsywoqM - sCIjrMgIKzLCioywIiOsyHisnh3Bq9rUmYzH6ih4VZs6k/FYHQWvalNnMh6ro+BVbepMxmN1FLyqTZ3J - eKyOgle1qTMZj9VR8Ko2dSbjsToKXtWmzmQ8VkfBq9rUmYzH6ih4VZs6k/FYHQWvalNnMh6ro+BVbepM - xmN1FLyqTZ3JeKyOgle1qTMZj9VR8Ko2dSbjsToKXtWmzmSEFRlhRUZYkRFWZIQVGWFFRliREVZkhBUZ - YUVGWJERVmSEFRlhRUZYkRFWZIQVGWFFRliREVZkhBUZYUVGWJERVmSEFRlhRUZYkRFWZIQVGWFFRliR - EVZkhBUZYUVGWJERVmSEFRlhRUZYkRFWZIQVGWFFRliREVZkhBUZYUVGWJERNnw/f+slYiGpbk4GAAAA - AElFTkSuQmCC - - AAABAAYAEBAAAAEAIABoBAAAZgAAACAgAAABACAAqBAAAM4EAAAwMAAAAQAgAKglAAB2FQAAQEAAAAEA @@ -2073,6 +2052,27 @@ NuAXwP1Asxc2yEs3AzUDXwEeAW4AVgIzgQogpLojBWgQZ4Vfs3uS+y3wOpD2ygaOagAYA/FECmNO+k/S bvdoI/B9NwBmAQ1ABN0/kOXyMKQzNuYUBSLDYuPc2HMI2OUGQOdpf8k2jHZRjGoAzJs+hmsvmY5lndEw v9P92aD6lEOWJl08kxq2Yd70MaP6nf8HFqy2XDeBwhMAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1 + MAAA6mAAADqYAAAXcJy6UTwAAAAJcEhZcwAACxMAAAsTAQCanBgAAANPSURBVHhe7dyhbUBRDATBNP3r + TxpY8KSY3YAhyywd9s/3fTArI6zICCsywoqMsCIjrMgIKzLCioywIiOsyAgrMsKKjLAiI6zICCsywoqM + sCIjrMgIKzLCioywIiOsyAgrMsKKjLAiI6zICCsywoqMsCIjrMgIKzLCioywIiOsyAgrMsKKjLAiI6zI + CCsywoqMsCIjrMgIKzLCioywIiOsyAgrMsKKjMd+4R9qU2cyHquj4FVt6kzGY3UUvKpNncl4rI6CV7Wp + MxmP1VHwqjZ1JuOxOgpe1abOZDxWR8Gr2tSZjMfqKHhVmzqT8VgdBa9qU2cyHquj4FVt6kzGY3UUvKpN + ncl4rI6CV7WpMxmP1VHwqjZ1JuOxOgpe1abOZDxWR8Gr2tSZjMfqKHhVmzqTEVZkhBUZYUVGWJERVmSE + FRlhRUZYkRFWZIQVGWFFRliREVZkhBUZYUVGWJERVmSEFRlhRUZYkRFWZIQVGWFFRliR8Vg9O4JXtakz + GY/VUfCqNnUm47E6Cl7Vps5kPFZHwava1JmMx+ooeFWbOpPxWB0Fr2pTZzIeq6PgVW3qTMZjdRS8qk2d + yXisjoJXtakzGY/VUfCqNnUm47E6Cl7Vps5kPFZHwava1JmMx+ooeFWbOpPxWB0Fr2pTZzIeq6PgVW3q + TMZjdRS8qk2dyQgrMsKKjLAiI6zICCsywoqMsCIjrMgIKzLCioywIiOsyAgrMsKKjLAiI6zICCsywoqM + sCIjrMgIKzLCioywIiOsyHisnh3Bq9rUmYzH6ih4VZs6k/FYHQWvalNnMh6ro+BVbepMxmN1FLyqTZ3J + eKyOgle1qTMZj9VR8Ko2dSbjsToKXtWmzmQ8VkfBq9rUmYzH6ih4VZs6k/FYHQWvalNnMh6ro+BVbepM + xmN1FLyqTZ3JeKyOgle1qTMZj9VR8Ko2dSbjsToKXtWmzmSEFRlhRUZYkRFWZIQVGWFFRliREVZkhBUZ + YUVGWJERVmSEFRlhRUZYkRFWZIQVGWFFRliREVZkhBUZYUVGWJERVmSEFRlhRUZYkRFWZIQVGWFFRliR + EVZkhBUZYUVGWJERVmSEFRlhRUZYkRFWZIQVGWFFRliREVZkhBUZYUVGWJERNnw/f+slYiGpbk4GAAAA + AElFTkSuQmCC diff --git a/ChatBotProject/ChatBotProject/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/ChatBotProject/ChatBotProject/obj/Debug/DesignTimeResolveAssemblyReferences.cache index d74598db3a9a0142b642dcca5fc7a67de1230c58..3743a85e4af640d8125bc5d7d50f40248e298f1f 100644 GIT binary patch literal 50314 zcmeI5349gRy~lIH%}r(qgecUdT2Zh{#e^-gD7BD)px{EljnH_LOu~hm+<5N|h)Z2@ z0~Oc0@vMr^*2=SP&$`w9`D*o9TdB3xy5X~nzAkDPtIzlQ&An&xKbg6TK$JJ1na?Nx z%>RG?bLK4HIoq6jZiy->Dft)&|MRFUh4|*&WNRj!O}FQ2ruQUMZ8h@~*`?W<`gFz_ zJ^V-~lTD_(rjD(v8Cx@^X3Xf}^*yOvPsW+r<@Dq-iPY%fhxfFklC6h0E9R${I$cv+ z#*A;TYoFLYc5GYSn8f%*8E>|G@I4w=WOGhuV=j?%=w-DhQ;w?**d_lFVv$NYtvN&? zTQe(>U7Sm_q#VZD8UPWa_(a!oIM{R2iME-E)?7MMUPw|gI4wOLef(;i z6P!46W5Je(JiVtY+1}H}|8c4 zwPh1(>T1R{6$+}c+i_YKyZ5qjuSCDxt25i0&ZLqp?rjF*Hm&_~n?jO~?o7Eis>F>t z`}0OeCA-?v%d<5z)0xh!d&@z%<&yrq<=jM9qQmKQy7G7o#{F7wzXe&;QBCcMY&O}{ zkZ$dvL$>LlWNubZOP`0}Q`FvPM`Boo`!x4wy7>4E!A<&y^=YlG4zi{tnM&qXxCK>R zD5(C(xS*fp_Wu*D~))=m^VQ+%0X7m8gezCy7Z#c+zzpzG@I)choXV5Y;(Gut~NB|XuT`5t%+RD$+)fj;7m_fF4^f6 zx@&{lb$iasN@B6NiVYgwHy(|P(W7gtDRcbJoYFw-X1S5| znmxOWeV1)Dva|a{R~{JBiqZWVxOADf5oUZwQK$bshbbQT0n6m zMEocSS^P&sSL}oHq9>a-JXx|D7aaq|I+kJ~M7#+?UbG0hVxOHCP5x=;eOFz9i@piP zYNj|2BA$Sd7qvhyV;_GT$jhzMthORCRvSdzfe>l6%Q%eL2GSW=zqR*?Y-I-whZe>R z<^=lYkGVLM_)KFR4!Q;>vT__$k;pdYG8nd0CbNyn&hC`MQOn51i7dv|oF7VOre#_e zCv%u!#^nC&u9-a?HPOjRc6Ro-)9#fSr!&#r?X=Czq&o*F+$HuEJw9^U3)A$*@JlIm zm-4cscP9TJr_0GCTiqG`MkjaN*o6x}%h+u6@V?$#_m#z>MJz{lY^}u*@g&3yb8ez{ zFzvn;*_6R_S5GR%AeTUtb7)w?EG)-g>@yXw8?U9f%yNV4Z_@ z(|IO>Dd%X|P3Hjo-;8vgh0Cm!6lX(JPln)8&e7+VgnJGyx6Y+F52BjmSRUmZK)K

^*NuTGlY6izzOFsGbSILmdp^ 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 literal 47269 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 ~yfx72)9Hw|*C=*BBUZ3l}a<2P* zt_RAw9@MTT6EBx@J)~XDwZ2-;mFseY+DceTx0Tw}#LD%TlCGRtdq)GDVV88}l*xMm coH~_s<$%~5D+k6UT{+V6x^l!*%5~WP0c7ERTmS$7