PHPを使用してWindows SAPI5またはTTSにアクセスしようとしています。標準的なアプローチは、 "SAPI.SpVoice"用のCOMオブジェクトを作成し、インストールされた音声を取得することです。なぜPHPのCOMオブジェクトが正しい結果を返していないのですか?
サンプルPHPコード:
<?php
$obj = new COM('SAPI.SpVoice');
$voices = $obj->GetVoices;
$count = $voices->Count;
print $count; #prints "1"
私は自分のシステムにインストールされている5つの声を持っているので、残念ながらPHPのCOMオブジェクトから返された出力が正しくないですが、PHPはばかりチェックするために、だから、1
を返します。これがPHP固有の問題であれば、私はPerl 5.8(イチゴ)に同じコードを書いています。
サンプルPerlコード:
#!/usr/bin/perl
use Win32::OLE;
my $obj = Win32::OLE->new('SAPI.SpVoice');
my $voices = $obj->GetVoices;
my $count = $voices->Count;
print $count; #print "5" which is correct.
だから、perlのコードが正しく、私は私のシステムで5つのTTSの声を持っていることを返しますが、PHPは1を返しますか?
これはバグですか、何か間違っていますか?これの原因は何でしょうか?
P.S.私は2つの異なるコンピュータでこれを試して、結果は同じです。
私はこれを自分で考え出しました。 PHPの32ビット版を使用した場合、正しい結果(5つの声)が得られるようです。しかし、私がデフォルトで64ビットバージョンをインストールして以来、私は1つの声を得るだけです。それは今解決されました..ありがとう! – supersan
P.S.どんなMODが私にこの質問で何をすべきか教えてください。このコメントを解決策として投稿する必要がありますか?ありがとう。 – supersan
問題の解決策が見つかった場合は、自分の回答を投稿して受け入れることができます。 http://stackoverflow.com/help/self-answer –