在代碼中設置 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;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值