在代碼中設置 Speech TTS 語言

在代碼中設置 Speech TTS 語言
因為程序要放在Windows 2003 下使用,安裝好 Speech SDK 5.1 後,在控制面板設置語言時去,發現設置不了。報出不知道的錯誤。上Microsoft Web Site 卻發現 5.1根本就不支持 Windows 2003. 無奈中去網上search,忙活了一個下午也沒有找到可用的資料。
當時我就在想,既然在控制面板可以設置,那麼肯定可以通過代碼中來指定,又上 Microsoft Web Site  去找,沒有找到。想起 Sdk 5.1 幫助中肯定有這些東西,打開幫助,真的讓我找到了。三兩下搞定.

問題又來了, 為什麼,因為還有一個程序是 Delphi 寫的也在改成代碼控制,但是本人對Delphi 很少用。以前就是學過, 現在也基本上忘記了。最根本的問題是 GetVoices 方法在Delphi要求參數,而在VB根本就不要參數。忙活了一陣子,又 SDK 中找到,參數的 名稱都在注冊表中..
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Speech/Voices/Tokens

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Speech/Voices/Tokens

Select one of the available voices and view the corresponding attribute information.

The following is an example of the MSMary voice attributes:

現在把代碼貼在這裡
VB
Set Voice = New SpVoice
   
    ' Load the voices combo box
    Dim Token As ISpeechObjectToken
   
    Dim i As Long
    For Each Token In Voice.GetVoices
       
        VoiceCB.AddItem (Token.GetDescription())
        If Token.GetDescription() = "Microsoft Simplified Chinese" Then
            'Set Voice.Voice = Voice.GetVoices().Item(i)
        End If
        i = i + 1
        'Debug.Print Token.GetDescription()
        'Debug.Print Token.Category().Default
        'Debug.Print Token.Category().Id
    Next


Delphi

BoxNoVoice := TSpVoice.Create(nil);
  j:=BoxNoVoice.GetVoices('','').Count;
  for i:=0 to j-1  do
  begin

    VoiceCB.Items.Add(BoxNoVoice.GetVoices('','').Item(i).GetAttribute('Name'));
    if BoxNoVoice.GetVoices('','').Item(i).GetAttribute('Language') ='804' then
    Begin
      BoxNoVoice.Voice :=BoxNoVoice.GetVoices('','').Item(i);
      Iindex:=i;
    end;
  end;

其實我想說的不只是這個問題, 而且想提醒我自己,和朋友們,平時遇到問題,應該先看看 幫助,如果幫助中沒有再去網上找找。這是工作習慣,也是思考問題方法,很重要啊

你可能感兴趣的:(在代碼中設置 Speech TTS 語言)