SpeechEventInfo.Param1 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取和设置 integer
值(构造函数中的 param1
),此值需要传递至语音平台以生成 SpeechEventInfo 的当前实例用于请求的事件。
public:
property int Param1 { int get(); };
public int Param1 { get; }
member this.Param1 : int
Public ReadOnly Property Param1 As Integer
属性值
返回生成 SpeechEventInfo 的当前实例指定的事件时,要传递到语音平台的 integer
。
示例
以下示例是自定义语音合成实现的一部分,该实现继承自 TtsEngineSsml,并使用 TextFragment、 SpeechEventInfo、 FragmentState和 TtsEventId
的实现 Speak
接收实例数组TextFragment,并创建要传递到
Speak
基础合成引擎上的 方法的新实例数组TextFragment。如果从 Action 每个TextFragment实例Speak的 TtsEngineAction 属性返回State的 上的 FragmentState 属性中找到 的枚举值为 ,则实现
在要说话的文本中将美国主义翻译成英国主义。
EventInterest如果提供给实现的ITtsEngineSite接口上的 属性支持WordBoundary事件类型,SpeechEventInfo则使用 实例创建事件来驱动合成器进度计。
上的 SpeechEventInfo参数(包括 Param1 )用于记录通过
LogSpeechEvent
方法生成的事件。
然后,使用修改后的 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));
LogSpeechEvent(spEvent.EventId,
spEvent.ParameterType,
spEvent.Param1,
spEvent.Param2);
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);
}
注解
属性SpeechEventInfo的要求和含义Param1由 实例和 ParameterType 属性SpeechEventInfo的值EventId唯一确定。
有关如何使用 Param1的详细信息,请参阅 的文档 EventId。