利用vfp智能感应补全,可以得知speak方法的两个参数:ospeech.speak(text as string,[flag SpeechVoiceSpeakFlags=0] as number)
网上搜索到SpeechVoiceSpeakFlags的每个值的含义如下:
枚举SpeechVoiceSpeakFlags
“SpVoice标志
SVSFDefault = 0
SVSFlagsAsync = 1
SVSFPurgeBeforeSpeak = 2
SVSFIsFilename = 4
SVSFIsXML = 8
SVSFIsNotXML = 16
SVSFPersistXML = 32
“正规化标志
SVSFNLPSpeakPunc = 64
“面具
SVSFNLPMask = 64
SVSFVoiceMask = 127
SVSFUnusedFlags = -128
结束枚举
SVSFDefault
指定应使用的默认设置。默认值是:
讲定的文本字符串同步(覆盖与SVSFlagsAsync),
不清除挂起说话请求(覆盖与SVSFPurgeBeforeSpeak),
为了解析XML的文本,如果第一个字符是左尖括号(覆盖与SVSFIsXML或SVSFIsNotXML),
不坚持全球XML状态更改在讲电话(覆盖SVSFPersistXML),
不扩展的标点字符成字(覆盖与SVSFNLPSpeakPunc)的。
那我来当个翻译器:
>>1、IsFilename;
该值表示,传入的字符串变量是代表一个文件名,所以speaker应该将这个文件里的字符串读出来,而不是读这个字符串本身。
>>2、IsXML;
该值表示这个文件的内容是按XML格式写的。可以用XML 标记来解析。而不应该将它当着是纯字符串。
>>3、FlagsAsync;
它表示,这个读的操作是异步的。比如你再一个button里调用了speak这个方法,当指定了这个flag后,马上就可以再次点击button了。而不用等到它读完了才能点。
>>4、FNLPMask;
由SAPI处理的标识是放在这个mask里的。
>>5、FNLPSpeakPunc;
表示会将标点符号读出来,而不是做停顿。比如前面这句话里的逗号和句号,如果指定该标识,那么会将(,)读成逗号。
>>6、PersistXML;
全局状态的改变量会一直保持到整个speak结束。
>>7、PurgeBeforeSpeak;
在开始本次speak之前,清除之前所有暂停住的speak任务。尤其是当你启用了上面的异步模式,你可以同时启动好多好多任务。他们会排队一个一个讲完。
>>8、UnusedFlags;
就是字面意思,不使用的。
>>9、VoiceMask;
它是5.3新加的,是从SVSFParseMask扩展而来的,SVSFParseMask= SVSFParseSapi|SVSFParseSsml,
SVSFParseSapi强制按SAPI解析XML
SVSFParseSsml强制按W3C解析XML
根据不同的需求组合就可以了,比如要求异步朗读,并且可打断,就是3(1+2);要求异步朗读文件可中断,就是7(1+2+4)...