aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Speech
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-04-09 18:30:58 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-04-09 18:30:58 +0300
commita898decf18c4c0ed56d020dc09df55df1ca0263a (patch)
tree66140670047d9ec9d7a0bbeb2851a84868b9515c /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Speech
parent4cd266e13bdb3e27ca77eba3b47278b57a0dcd8d (diff)
downloadTango-a898decf18c4c0ed56d020dc09df55df1ca0263a.tar.gz
Tango-a898decf18c4c0ed56d020dc09df55df1ca0263a.zip
Lots of changes :/
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Speech')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Speech/DefaultSpeechProvider.cs71
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Speech/ISpeechProvider.cs31
2 files changed, 102 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Speech/DefaultSpeechProvider.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Speech/DefaultSpeechProvider.cs
new file mode 100644
index 000000000..fb34c8086
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Speech/DefaultSpeechProvider.cs
@@ -0,0 +1,71 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Media;
+using System.Speech.Synthesis;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core;
+using Tango.Core.Helpers;
+
+namespace Tango.MachineStudio.Common.Speech
+{
+ /// <summary>
+ /// Represents the default speech provider.
+ /// </summary>
+ /// <seealso cref="Tango.Core.ExtendedObject" />
+ /// <seealso cref="Tango.MachineStudio.Common.Speech.ISpeechProvider" />
+ public class DefaultSpeechProvider : ExtendedObject, ISpeechProvider
+ {
+ private SpeechSynthesizer _speech;
+ private SoundPlayer _soundPlayer;
+ private SoundPlayer _soundPlayerErr;
+
+ private bool _mute;
+ /// <summary>
+ /// Gets or sets a value indicating whether this <see cref="ISpeechProvider" /> is mute.
+ /// </summary>
+ public bool Mute
+ {
+ get { return _mute; }
+ set { _mute = value; RaisePropertyChangedAuto(); }
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="DefaultSpeechProvider"/> class.
+ /// </summary>
+ public DefaultSpeechProvider()
+ {
+ _speech = new SpeechSynthesizer();
+ _soundPlayer = new SoundPlayer(EmbeddedResourceHelper.GetEmbeddedResourceStream("Tango.MachineStudio.Common.bip.wav"));
+ _soundPlayerErr = new SoundPlayer(EmbeddedResourceHelper.GetEmbeddedResourceStream("Tango.MachineStudio.Common.error.wav"));
+ _speech.SelectVoice(_speech.GetInstalledVoices().LastOrDefault(x => x.VoiceInfo.Gender == VoiceGender.Female).VoiceInfo.Name);
+ }
+
+ /// <summary>
+ /// Speaks the specified text associated with an information sound.
+ /// </summary>
+ /// <param name="text">The text.</param>
+ public void SpeakInfo(string text)
+ {
+ if (!Mute)
+ {
+ _soundPlayer.Play();
+ _speech.SpeakAsync(text);
+ }
+ }
+
+ /// <summary>
+ /// Speaks the specified text associated with an error sound.
+ /// </summary>
+ /// <param name="text">The text.</param>
+ public void SpeakError(string text)
+ {
+ if (!Mute)
+ {
+ _soundPlayerErr.Play();
+ _speech.SpeakAsync(text);
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Speech/ISpeechProvider.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Speech/ISpeechProvider.cs
new file mode 100644
index 000000000..eb31bdc39
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Speech/ISpeechProvider.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.MachineStudio.Common.Speech
+{
+ /// <summary>
+ /// Represents a text to speech engine.
+ /// </summary>
+ public interface ISpeechProvider
+ {
+ /// <summary>
+ /// Gets or sets a value indicating whether this <see cref="ISpeechProvider"/> is mute.
+ /// </summary>
+ bool Mute { get; set; }
+
+ /// <summary>
+ /// Speaks the specified text associated with an information sound.
+ /// </summary>
+ /// <param name="text">The text.</param>
+ void SpeakInfo(String text);
+
+ /// <summary>
+ /// Speaks the specified text associated with an error sound.
+ /// </summary>
+ /// <param name="text">The text.</param>
+ void SpeakError(String text);
+ }
+}