none
关于微软语音库!! RRS feed

  • 问题

  • 在引用了Interop.SpeechLib后,又Imports了,创建了一个实例

    dim Speaker as new SPVOICE

    例如是这样,用Speaker来发声,那么发出的就是系统默认的语言,例如:

    Speaker.Speak("NET")

    用中文发声就是一个一个字母地,但是我想读单词,不过系统默认的是中文,怎么用英文!!

    看了Speaker的全部属性,基本崩溃,求助!!

    2010年6月4日 13:11

答案

  • 不做任何设置的直接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()这个方法。作出来的效果就是金山/金山谷歌合作版里的语音设置。

    希望对你有所帮助。


    vb.net初学者
    2010年7月5日 18:47

全部回复

  • 你用的是什么语音引擎? Microsoft Anna 还是 Microsoft Lili

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年6月5日 12:53
    版主
  • 你好,

    你可以试试用一个完整句子来让Speaker读,不要全部用大写。我测了一下Win7里的Speaker引擎,发现对于全部大写的单词Speaker会逐个字母读的。另外你也可以试试将系统的区域语言设成英文。我这里是英文系统,所以默认都是英文的。


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework!
    2010年6月7日 8:19
  • 不做任何设置的直接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()这个方法。作出来的效果就是金山/金山谷歌合作版里的语音设置。

    希望对你有所帮助。


    vb.net初学者
    2010年7月5日 18:47