关于微软语音库,微软语音库
在引用了Interop.SpeechLib后,又Imports了,创建了一个实例
dim Speaker as new SPVOICE
例如是这样,用Speaker来发声,那么发出的就是系统默认的语言,例如:
Speaker.Speak("NET")
用中文发声就是一个一个字母地,但是我想读单词,不过系统默认的是中文,怎么用英文!!
看了Speaker的全部属性,基本崩溃,求助!!
解决方案
不做任何设置的直接Speak,将会对Voice采用默认设置,语音引擎也即是采用你操作系统默认的(可以在控制面板——语音中设置此项)。
当然,在代码中也可以使用指定的语音引擎来Speak,请查看Sapi中的
Function GetVoices(Optional ByVal RequiredAttributes As String = "", Optional ByVal OptionalAttributes As String = "") As SpeechLib.ISpeechObjectTokens
SpeechLib.ISpeechVoice 的成员
我以前做的语音程序可以设置语音库、速度、输出类型、输出设备等,Example:
Private WithEvents testVoice As New SpVoice()
'Speak
With testVoice
.Voice = .GetVoices().Item(My.Settings.myVoiceTokenIndex)
.Rate = My.Settings.myVoiceRate
.Volume = My.Settings.myVoiceVolume
.AudioOutput = .GetAudioOutputs().Item(My.Settings.myAudioOutputIndex)
.AllowAudioOutputFormatChangesOnNextSet = False
End With
'上述配置文件类型全为Integer,关系到语音Voice的属性你可以这样写:
spVoice.Voice = spVoice.GetVoices().Item(1)
系统默认的当然就是0了~这个也可以从注册表读取,不过我后来发现读注册表比较笨,SAPI已经提供了GetVoices()这个方法。作出来的效果就是金山/金山谷歌合作版里的语音设置。
希望对你有所帮助。
用户评论