Example #1
0
        public void Ssml_Sayas_Generates_Sayas()
        {
            const string expected = @"<say-as interpret-as=""spell-out"">Hello World</say-as>";

            var actual = new SayAs("Hello World", InterpretAs.SpellOut);

            CompareXml(expected, actual);
        }
Example #2
0
        private void Speak(string text, SayAs mode = SayAs.Text)
        {
            var prompt = new PromptBuilder(culture);

            prompt.StartSentence(culture);
            prompt.AppendTextWithHint(text, mode);
            prompt.EndSentence();
            synthesizer.SpeakAsync(prompt);
        }
        /// <summary>
        /// Speaks synchronously, be award because you program will be blocked during the talk.
        /// </summary>
        /// <param name="message">Message to speak.</param>
        /// <param name="sayAs">Type of pronunciation</param>
        public void Speak(string message, SayAs sayAs = SayAs.Text)
        {
            if (_enabled && (_voices.Count > 0))
            {
                StopSpeak();

                PromptBuilder builder = new PromptBuilder(CultureInfo.CreateSpecificCulture(_culture));
                builder.AppendTextWithHint(message, sayAs);

                _speechSynth.Speak(builder);
            }
        }
Example #4
0
        private static SkillResponse NowDate()
        {
            var now    = DateTime.Now;
            var date   = new SayAs(now.ToString("????MMdd"), InterpretAs.Date);
            var speech = new Speech(new PlainText("今日は"), date, new PlainText("です。"));

            var output = new SsmlOutputSpeech()
            {
                Ssml = speech.ToXml()
            };

            return(ResponseBuilder.Tell(output));
        }
        public void Speak(string message, SayAs sayAs = SayAs.Text)
        {
            if (voices.Count > 0)
            {
                StopSpeak();

                PromptBuilder builder = new PromptBuilder(CultureInfo.CreateSpecificCulture("en-US"));
                builder.AppendTextWithHint(message, sayAs);
                speechSynth.Speak(builder);
            }
            else
            {
                Initialize();
            }
        }
Example #6
0
        public void SpeakAsync(string message, SayAs sayAs = SayAs.Text)
        {
            if (_enabled && (_voices.Count > 0))
            {
                StopSpeak();

                PromptBuilder builder = null;
                try
                {
                    builder = new PromptBuilder(CultureInfo.CreateSpecificCulture(_culture));
                }
                catch (Exception ex)
                {
                    builder = new PromptBuilder();
                    Console.WriteLine(ex.Message);
                }

                builder.AppendTextWithHint(message, sayAs);

                _speechSynth.SpeakAsync(builder);
            }
        }
Example #7
0
        public void AppendTextWithHint(string textToSpeak, SayAs sayAs)
        {
            Helpers.ThrowIfNull(textToSpeak, nameof(textToSpeak));

            if (sayAs < SayAs.SpellOut || sayAs > SayAs.Text)
            {
                throw new ArgumentOutOfRangeException(nameof(sayAs));
            }

            // check for well formed document
            ValidateElement(_elementStack.Peek(), SsmlElement.Text);

            if (sayAs != SayAs.Text)
            {
                Element sayAsElement = new(ElementType.SayAs, textToSpeak);
                _elements.Add(sayAsElement);

                sayAsElement._attributes = new Collection <AttributeItem>();
                string sInterpretAs = null;
                string sFormat      = null;

                switch (sayAs)
                {
                case SayAs.SpellOut:
                    sInterpretAs = "characters";
                    break;

                case SayAs.NumberOrdinal:
                    sInterpretAs = "ordinal";
                    break;

                case SayAs.NumberCardinal:
                    sInterpretAs = "cardinal";
                    break;

                case SayAs.Date:
                    sInterpretAs = "date";
                    break;

                case SayAs.DayMonthYear:
                    sInterpretAs = "date";
                    sFormat      = "dmy";
                    break;

                case SayAs.MonthDayYear:
                    sInterpretAs = "date";
                    sFormat      = "mdy";
                    break;

                case SayAs.YearMonthDay:
                    sInterpretAs = "date";
                    sFormat      = "ymd";
                    break;

                case SayAs.YearMonth:
                    sInterpretAs = "date";
                    sFormat      = "ym";
                    break;

                case SayAs.MonthYear:
                    sInterpretAs = "date";
                    sFormat      = "my";
                    break;

                case SayAs.MonthDay:
                    sInterpretAs = "date";
                    sFormat      = "md";
                    break;

                case SayAs.DayMonth:
                    sInterpretAs = "date";
                    sFormat      = "dm";
                    break;

                case SayAs.Year:
                    sInterpretAs = "date";
                    sFormat      = "y";
                    break;

                case SayAs.Month:
                    sInterpretAs = "date";
                    sFormat      = "m";
                    break;

                case SayAs.Day:
                    sInterpretAs = "date";
                    sFormat      = "d";
                    break;

                case SayAs.Time:
                    sInterpretAs = "time";
                    break;

                case SayAs.Time24:
                    sInterpretAs = "time";
                    sFormat      = "hms24";
                    break;

                case SayAs.Time12:
                    sInterpretAs = "time";
                    sFormat      = "hms12";
                    break;

                case SayAs.Telephone:
                    sInterpretAs = "telephone";
                    break;
                }

                sayAsElement._attributes.Add(new AttributeItem("interpret-as", sInterpretAs));
                if (!string.IsNullOrEmpty(sFormat))
                {
                    sayAsElement._attributes.Add(new AttributeItem("format", sFormat));
                }
            }
            else
            {
                AppendText(textToSpeak);
            }
        }
Example #8
0
        public void AppendTextWithHint(string textToSpeak, SayAs sayAs)
        {
            Helpers.ThrowIfNull(textToSpeak, "textToSpeak");
            if (sayAs < SayAs.SpellOut || sayAs > SayAs.Text)
            {
                throw new ArgumentOutOfRangeException("sayAs");
            }
            ValidateElement(_elementStack.Peek(), SsmlElement.Text);
            if (sayAs != SayAs.Text)
            {
                Element element = new Element(ElementType.SayAs, textToSpeak);
                _elements.Add(element);
                element._attributes = new Collection <AttributeItem>();
                string value  = null;
                string value2 = null;
                switch (sayAs)
                {
                case SayAs.SpellOut:
                    value = "characters";
                    break;

                case SayAs.NumberOrdinal:
                    value = "ordinal";
                    break;

                case SayAs.NumberCardinal:
                    value = "cardinal";
                    break;

                case SayAs.Date:
                    value = "date";
                    break;

                case SayAs.DayMonthYear:
                    value  = "date";
                    value2 = "dmy";
                    break;

                case SayAs.MonthDayYear:
                    value  = "date";
                    value2 = "mdy";
                    break;

                case SayAs.YearMonthDay:
                    value  = "date";
                    value2 = "ymd";
                    break;

                case SayAs.YearMonth:
                    value  = "date";
                    value2 = "ym";
                    break;

                case SayAs.MonthYear:
                    value  = "date";
                    value2 = "my";
                    break;

                case SayAs.MonthDay:
                    value  = "date";
                    value2 = "md";
                    break;

                case SayAs.DayMonth:
                    value  = "date";
                    value2 = "dm";
                    break;

                case SayAs.Year:
                    value  = "date";
                    value2 = "y";
                    break;

                case SayAs.Month:
                    value  = "date";
                    value2 = "m";
                    break;

                case SayAs.Day:
                    value  = "date";
                    value2 = "d";
                    break;

                case SayAs.Time:
                    value = "time";
                    break;

                case SayAs.Time24:
                    value  = "time";
                    value2 = "hms24";
                    break;

                case SayAs.Time12:
                    value  = "time";
                    value2 = "hms12";
                    break;

                case SayAs.Telephone:
                    value = "telephone";
                    break;
                }
                element._attributes.Add(new AttributeItem("interpret-as", value));
                if (!string.IsNullOrEmpty(value2))
                {
                    element._attributes.Add(new AttributeItem("format", value2));
                }
            }
            else
            {
                AppendText(textToSpeak);
            }
        }
Example #9
0
        /// <summary>
        /// Speaks asynchronously
        /// </summary>
        /// <param name="message">Message to speak</param>
        /// <param name="sayAs">Type of pronunciation</param>
        public void SpeakAsync(string message, SayAs sayAs = SayAs.Text)
        {
            if (_enabled && (_voices.Count > 0))
            {
                StopSpeak();

                PromptBuilder builder = null;
                try
                {
                    builder = new PromptBuilder(CultureInfo.CreateSpecificCulture(_culture));
                }
                catch (Exception e)
                {
                    builder = new PromptBuilder();
                }

                builder.AppendTextWithHint(message, sayAs);

                _speechSynth.SpeakAsync(builder);
            }
        }