我在终端上运行linux的espeak,它工作得很好。我的问题是我想从php运行espeak (在xampp中)。
<?php
$a="espeak sometext";
system($a);
?>但这并不是说working.and没有发出任何声音
就像在windows中一样,当php脚本在cmd中调用时,这个东西在espeak命令行程序中工作得非常好,代码是
<?php
$a='espeak "your text"';
system($a);
?>你们能帮我在linux上运行这段代码吗?提前谢谢。
发布于 2015-01-13 20:39:03
不能在系统命令的帮助下使用此espeak,因为系统命令将仅在服务器中执行,而不会在客户端计算机中执行。换句话说,如果您的服务器有声卡,它将在服务器中播放声音。唯一的选择是您必须使用指南在egudiedog.net中给出的lame
发布于 2016-01-24 00:11:59
在LINUX中使用shell_exec()函数代替系统
<?php
$a='espeak "your text"';
shell_exec($a);
?>发布于 2017-02-19 17:20:04
你可以尝试这样的东西,你可以根据你的需要改变参数(声音),如果espeak支持的话。这是用希腊语进行的测试。您可能还想检查此answer。
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
define('ESPEAK', 'C:\path\to\eSpeak\command_line\espeak');
define('LAME', 'C:\path\to\eSpeak\command_line\lame');
} else {
define('ESPEAK', '/usr/bin/espeak');
define('LAME', '/usr/bin/lame');
}
$text = 'This is a test';
$voice = "mb-gr2";
$speed_delta = 0;
$speed = 145;
$pitch = 90;
$volume = 100;
$filename = date("Y-m-d-H-i-s").'.mp3';
$text = escapeshellarg($text);
if (!file_exists($filename)) {
$cmd = ESPEAK." -v $voice $text -s $speed -p $pitch -a $volume --stdout | ".LAME." --preset voice -q 9 --vbr-new - $filename";
exec($cmd);
echo $filename;
} https://stackoverflow.com/questions/18058869
复制相似问题