XP から Windows 7 64 ビットに移行しています。XP マシンでコンパイルしたアプリは、XP で正しく動作します。ただし、W7 マシンで exe を実行すると、GetVoices によって返される音声のリストは次のようになります。
Microsoft Anna
Microsoft Mary
Microsoft Mike
Sample TTS Voice.
W7 Speech Properties ダイアログを確認すると、Microsoft Anna だけがマシンにロードされていることがわかります。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 つのボイスのリストを生成します。ボイスは 1 つしかないはずです。
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;
この問題に対処する方法について何か提案はありますか?
ありがとう、
ショーン