1

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 をインストールしました。これは次のとおりです。

http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&DisplayLang=en

次のコードは、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;  

この問題に対処する方法について何か提案はありますか?

ありがとう、
ショーン

4

2 に答える 2

2

Microsoft Anna は 64 ビットの音声で、他の音声は 32 ビット エンジンです。お使いのシステムは 64 ビット エンジン (Anna) しか使用できないため、パネルで選択できるのはこれだけです。しかし、他のものも同様にインストールされています。/%Windows%/SystemWOW64/Speech/SpeechUX/sapi.cpl を開くと、コントロール パネルと同様のダイアログが表示されますが、これらの音声のいずれかを標準音声として選択できるようになります。 .

于 2010-09-18T13:10:08.913 に答える
0

まだ未確認ですが、Microsoft Sam、Microsoft Mike、Microsoft Mary は Windows Vista 以降では動作しないと思います。

5.1 SDK でインストールできると思いますので、音声をクエリすると返されますが、5.4 エンジンと互換性がない可能性があるため、使用できません。

EngineProperties 属性を使用して GetVoices をフィルター処理し、返される内容を制限することができます。

免責事項:これはすべてテストされていない/推測/ドキュメントを読んでいる....

于 2010-07-25T18:35:48.997 に答える