现在的位置: 首页 > 综合 > 正文

TTS Events Explanation

2012年01月02日 ⁄ 综合 ⁄ 共 5436字 ⁄ 字号 评论关闭

The Microsoft.com Speech website Microsoft
Speech SDK

SAPI 5.1


TTS Events Explanation

TTS事件说明

 

Events are structures that pass information from the TTS engine back to the application.

事件是把消息从TTS引擎返回到应用程序的结构。

When the audio data is output, SAPI fires corresponding events.

当音频数据是输出时,SAPI fire 相应的事件。

 Applications react to audio output as it occurs.

当它发生时,应用程序对音频输出作出反应。

Examples of reactions include animating a face appropriately as viseme events are received, or highlighting text as it is spoken.

反应的例子包含当口型事件被接收时活泼的脸或者当说话时,高亮文本。

 See the sample application, TTSApp, for an example of each.

 

Applications call ISpEventSource::SetInterest to inform SAPI about the types of events that they are interested in receiving.

应用程序调用ISpEventSource::SetInterest 来通知SAPI我们想接收的事件类型。

 Applications can also call this through ISpVoice, because it inherits from
ISpEventSource.

应用程序也能通过ISpVoice调用ISpEventSource::SetInterest ,因为ISpVoice是从ISpEventSource继承的。

 Applications can then call ISpEventSource::GetEvents to retrieve fired events from SAPI.

应用程序然后调用ISpEventSource::GetEvents从SAPI检索fired事件。

The following is a set of event types generated by TTS engines (this is a subset of the
SPEVENTENUM enumeration):

下面是由TTS引擎产生的事件类型集合。(这是SPEVENTENUM枚举的子集)

typedef enum SPEVENTENUM
{
    //--- TTS engine
    SPEI_START_INPUT_STREAM     = 1,
    SPEI_END_INPUT_STREAM       = 2,
    SPEI_VOICE_CHANGE           = 3,   // LPARAM_IS_TOKEN
    SPEI_TTS_BOOKMARK           = 4,   // LPARAM_IS_STRING
    SPEI_WORD_BOUNDARY          = 5,
    SPEI_PHONEME                = 6,
    SPEI_SENTENCE_BOUNDARY      = 7,
    SPEI_VISEME                 = 8,
    SPEI_TTS_AUDIO_LEVEL        = 9
} SPEVENTENUM;

The SPEVENT structure contains varying information depending on which of these event types it represents.

SPEVENT结构包含了多种信息,取决于它代表哪种事件类型。

typedef struct SPEVENT
{
    WORD         eEventId;
    WORD         elParamType;
    ULONG        ulStreamNum;
    ULONGLONG    ullAudioStreamOffset;
    WPARAM       wParam;
    LPARAM       lParam;
} SPEVENT;

You can analyze the various fields of the SPEVENT structure for the event types they correspond to.

你可以分析SPEVENT结构的各字段,为它们对应的事件类型。

For all event types, ulStreamNum corresponds to the stream number returned using
ISpVoice::Speak or
ISpVoice::SpeakStream.

对于所有的事件类型,ulStreamNum对应流数目,由ISpVoice::Speak或ISpVoice::SpeakStream返回。

The SPEI_START_INPUT_STREAM event indicates that the output object has begun receiving output for a specific stream number.

SPEI_START_INPUT_STREAM事件表明输出对象已经开始接收特定流数目的输出。

 The rest of the fields are not of interest to this event type.

剩下的字段对SPEI_START_INPUT_STREAM这一事件类型没有兴趣。

The SPEI_END_INPUT_STREAM event indicates that the output object has finished receiving output for a specific stream number.

SPEI_END_INPUT_STREAM 表明输出对象已经结束接收特地流数目的输出。

The rest of the fields are not of interest to this event type.

 

The SPEI_VOICE_CHANGE event indicates that the voice responsible for speaking the input text (or stream) has changed because of a <Voice> XML tag.

SPEI_VOICE_CHANGE 事件表明说输入文本或流的声音由于<Voice>XML标签已经改变。

 It is fired at the beginning of each Speak call.

SPEI_VOICE_CHANGE fired在每次Speak方法调用的时候。

 For more information on using object tokens, see the
Object Tokens and Registry Settings white paper.

 

SPEVENT Field

Voice Change event

eEventId

SPEI_VOICE_CHANGE

elParamType

SPET_LPARAM_IS_TOKEN

wParam

lParam

Object token of the new voice.

The SPEI_TTS_BOOKMARK event indicates that the speak stream has reached a bookmark.

SPEI_TTS_BOOKMARK 事件表明说话流已经到达了书签。

 Bookmarks can be inserted into the input text using the <Bookmark> XML tag.

书签可以使用<Bookmark>XML标签插入输入文本。

SPEVENT Field

Bookmark event

eEventId

SPEI_TTS_BOOKMARK

elParamType

SPET_LPARAM_IS_STRING

wParam

Value of the bookmark string when converted to a long (_wtol(...) can be used).

lParam

Null-terminated copy of the bookmark string.

The SPEI_WORD_BOUNDARY event indicates that it has reached the beginning of a word.

SPEI_WORD_BOUNDARY 表明一个新单词开始。

SPEVENT Field

Word Boundary event

eEventId

SPEI_WORD_BOUNDARY

elParamType

SPET_LPARAM_IS_UNKNOWN

wParam

Character offset at the beginning of the word being synthesized.

lParam

Character length of the word in the current input stream being synthesized.

The SPEI_SENTENCE_BOUNDARY event indicates that the speak stream has reached the beginning of a sentence.

SPEI_SENTENCE_BOUNDARY 表明说话流到达了一个新句子。

SPEVENT Field

Sentence Boundary event

eEventId

SPEI_SENTENCE_BOUNDARY

elParamType

SPET_LPARAM_IS_UNKNOWN

wParam

Character offset at the beginning of the sentence being synthesized.

lParam

Character length of the sentence in the current input stream being synthesized.

The SPEI_PHONEME event indicates that the speak stream has reached the phoneme.

SPEI_PHONEME事件表明说话流到达了音素、音位。

SPEVENT Field

Phoneme event

eEventId

SPEI_PHONEME

elParamType

SPET_LPARAM_IS_UNKNOWN

wParam

The high word is the duration, in milliseconds, of the current phoneme. The low word is the PhoneID of the next phoneme.

lParam

The low word is the PhoneID of the current phoneme. The high word is the SPVFEATURE value associated with the current phoneme.

The SAPI 5 American English phoneme set can be found
here. The SAPI 5 Chinese phoneme set can be found
here. The SAPI 5 Japanese phoneme set can be found
here.

SPVFEATURE contains two flags: SPVFEATURE_STRESSED and SPVFEATURE_EMPHASIS.

 SPVFEATURE_STRESSED means that the phoneme is stressed relative to the other phonemes of a word (stress is usually associated with the vowel of a stressed syllable重读音的元音). SPVFEATURE_EMPHASIS means that the phoneme is part of
an emphasized word. That is, stress is a syllabic phenomenon within a word, and emphasis is a word-level phenomenon within a sentence.

The SPEI_VISEME event indicates that it has reached the viseme.

SPEVENT Field

Viseme event

eEventId

SPEI_VISEME

elParamType

SPET_LPARAM_IS_UNKNOWN

wParam

The high word is the duration, in milliseconds, of the current viseme. The low word is the code for the next viseme.

lParam

The low word is the code of the current viseme. The high word is the SPVFEATURE value associated with the current viseme (and phoneme).

See SPVISEMES for a listing of the SAPI 5 viseme set.

The SPEI_TTS_AUDIO_LEVEL event indicates the audio has reached the level of the synthesis at any given point.

SPEVENT Field

Audio Level event

eEventId

SPEI_TTS_AUDIO_LEVEL

elParamType

SPET_LPARAM_IS_UNDEFINED

wParam

TTS audio level (ULONG).

lParam

NULL

For an example of how to use TTS events in an application, see the
Text-to-Speech Tutorial.

抱歉!评论已关闭.