TtsEngineAction Перечисление

Определение

Указывает действие языка разметки синтеза речи (SSML), выполняемое при отрисовке данного TextFragment.

public enum class TtsEngineAction
public enum TtsEngineAction
type TtsEngineAction = 
Public Enum TtsEngineAction
Наследование
TtsEngineAction

Поля

Bookmark 3

Указывает, что TextFragment необходимо использовать в качестве содержимого закладки. Соответствует XML-тегу <mark> в спецификации SSML.

ParseUnknownTag 7

Указывает, что никакие действия не определены из SSML-ввода. Эти входные данные могут интерпретироваться или игнорироваться на усмотрение механизма синтеза. Связанный TextFragment является неизвестным тегом XML, не входящим в стандарт SSML.

Pronounce 2

Запрашивает, чтобы входной текст TextFragment интерпретировался как фонемы. Точное произношение задается членом Phoneme объекта FragmentState, возвращаемого свойством State для экземпляров TextFragment. Соответствует XML-тегу <Phoneme> в спецификации SSML.

Silence 1

Указывает, что TextFragment не содержит текста для воспроизведения в виде речи. Длительность молчания задается свойством Duration FragmentState объекта, возвращаемого свойством State экземпляров TextFragment . Соответствует XML-тегу <Silence> в спецификации SSML.

Speak 0

Запрашивает, чтобы связанное TextFragment должно обрабатываться и произноситься. Это значение по умолчанию для TextFragment. Соответствует XML-тегу <speak> в спецификации SSML.

SpellOut 4

Указывает, что текстовые значения, предоставленные TextFragment через его свойство TextToSpeak, должны синтезироваться как отдельные символы. Это включает знаки препинания, отличные от пробелов, а также алфавитно-цифровой текст. Например, связанный текстовый фрагмент "word!" должен быть синтезирован в "w o r d восклицательный знак".

StartParagraph 6

Указывает состояние параграфа. Соответствует XML-тегу <p> в спецификации SSML.

StartSentence 5

Обозначает начало предложения. Соответствует XML-тегу <s> в спецификации SSML.

Примеры

Следующий пример является частью пользовательской реализации синтеза речи, наследуемой от TtsEngineSsml, а также использование TextFragmentFragmentState, иTtsEventId

Реализация Speak

  1. Получает массив TextFragment экземпляров и создает новый массив TextFragment экземпляров, передаваемый Speak методу в базовом модулем синтеза.

  2. TtsEngineAction Если значение перечисления, найденное из Action свойства, FragmentState возвращаемого свойством State каждого TextFragment экземпляра, имеет значение Speak, реализация

    • Преобразует американизм в британизм в тексте, который нужно говорить.

    • EventInterest Если свойство ITtsEngineSite интерфейса, предоставленное реализации, поддерживает TtsEventId.WordBoundary тип события, создается событие для управления индикатором хода выполнения синтезатора.

  3. Затем модуль рендеринга речи вызывается с измененным TextFragment массивом.

private const int WordBoundaryFlag = 1 << (int)TtsEventId.WordBoundary;
private readonly char[] spaces = new char[] { ' ', '\t', '\r', '\n' };
internal struct UsVsUk
{
    internal string UK;
    internal string US;
}

override public void Speak (TextFragment [] frags, IntPtr wfx, ITtsEngineSite site)
{
    TextFragment [] newFrags=new TextFragment[frags.Length];  

    for (int i=0;i<frags.Length;i++)
    {
        newFrags[i].State=frags[i].State;
        //truncate
        newFrags[i].TextToSpeak = frags[i].TextToSpeak.Substring(frags[i].TextOffset,
                                  frags[i].TextLength);
        newFrags[i].TextLength = newFrags[i].TextToSpeak.Length;
        newFrags[i].TextOffset = 0;
        if (newFrags[i].State.Action == TtsEngineAction.Speak) 
        {
            //US to UK conversion
            foreach (UsVsUk term in TransList)
            {
                newFrags[i].TextToSpeak.Replace(term.US, term.UK);
            }
            //Generate progress meter events if supported
            if ((site.EventInterest & WordBoundaryFlag) != 0)
            {
                string[] subs = newFrags[i].TextToSpeak.Split(spaces);

                foreach (string s in subs)
                {
                    int offset = newFrags[i].TextOffset;
                    SpeechEventInfo spEvent = new SpeechEventInfo((Int16)TtsEventId.WordBoundary,
                          (Int16)EventParameterType.Undefined,
                          s.Length, new IntPtr(offset));
                    offset += s.Length;
                    if (s.Trim().Length > 0) 
                    {
                        SpeechEventInfo[] events = new SpeechEventInfo[1];
                        events[0] = spEvent;
                        site.AddEvents(events, 1);
                    }
                }
            }
        }
    }

    _baseSynthesize.Speak(newFrags, wfx, site);

}

Комментарии

TtsEngineActionпредставляет запросы на обслуживание .TextFragment Действия тесно соответствуют элементам спецификации SSML и реализуются в тексте, возвращаемом свойствомTextToSpeak.TextFragment

Значение, связанное TtsEngineAction со TextFragment свойством, возвращается свойством State .

Обработка значения, TtsEngineAction возвращаемого свойством State , обрабатывается реализацией Speak метода, производного от TtsEngineSsmlкласса.

Применяется к