【发布时间】:2017-04-09 05:03:05
【问题描述】:
我正在尝试使用 PHP 访问 Windows SAPI5 或文本转语音 (TTS)。标准方法是为“SAPI.SpVoice”创建一个 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 个?
这是一个错误还是我做错了什么?这可能是什么原因?
附:我在两台不同的电脑上试过,结果是一样的。
【问题讨论】:
-
我想这是我自己想出来的。看起来如果我使用 32 位版本的 PHP,那么我会得到正确的结果(5 个声音)。但由于我默认安装了 64 位版本,所以我只能得到 1 个声音。现在已经解决了。。谢谢!
-
P.S.任何mod都可以告诉我我应该如何处理这个问题。我应该将此评论作为解决方案发布还是应该保持原样?谢谢。
-
如果您找到了问题的解决方案,完全可以发布并接受您自己的答案。 stackoverflow.com/help/self-answer
标签: php perl com text-to-speech sapi