我正在從XP遷移到Windows 7 64位。我在XP機器上編譯的應用程序在XP上正常工作。然而,當我在我的W7的機器上運行的exe,通過GetVoices返回聲音的名單如下:
微軟安娜
微軟瑪麗
微軟邁克
樣品TTS語音。Microsoft語音API 5.1 GetVoices返回Windows 7上不存在的語音
檢查W7語音屬性對話框顯示只有微軟安娜在機器上加載。在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Speech/Voices上檢查註冊表證實了這一點。
在我的新Windows 7開發機器上重新編譯我的應用程序會創建一個複製上述行爲的exe文件。 (XP編譯代碼和W7編譯代碼在W7下執行時會重現相同的錯誤)
我在使用Windows 7 64位的Delphi 7進行開發,我使用的是Microsoft Speech Object Library(版本5.4)(注意:5.4是導入類型庫列表中顯示的內容)。
我在我的W7機器上安裝了SpeechSDK51.exe。這來自:
下面的代碼產生的在Windows 7上4個聲音列表即使有應該只有一個聲音:
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
SOToken: ISpeechObjectToken;
SOTokens: ISpeechObjectTokens;
begin
cbbVoices.Clear;
SOTokens := SpVoice1.GetVoices('', '');
for i := 0 to SOTokens.Count - 1 do begin
SOToken := SOTokens.Item(i);
cbbVoices.AddItem(SOToken.GetDescription(0), TObject(SOToken));
SOToken._AddRef;
end;
end;
對如何處理這個問題的任何建議?
感謝,
shawnh
我有同樣的問題,你有沒有找到解決辦法? – 2011-04-11 21:20:35