我想使用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"
不幸的是,從PHP的COM對象返回的輸出不正確,因爲我有我的系統上安裝5周的聲音,但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.我在兩臺不同的計算機上試過這個,結果是一樣的。
我猜我自己想通了。它看起來像是我使用了32位版本的PHP,然後我得到了正確的結果(5個聲音)。但由於我默認安裝了64位版本,我只能獲得1個聲音。現在解決了..謝謝! – supersan
P.S.請問任何MOD可以告訴我我應該怎樣處理這個問題。我是否應該將此評論發佈爲解決方案,還是應該保留原樣?謝謝。 – supersan
如果您發現問題的解決方案,則發佈並接受您自己的答案是完全可以接受的。 http://stackoverflow.com/help/self-answer –