我在运行完全正常的terminal从linux运行espeak。 我的问题是,我想从PHP运行espeak(在xampp)。
<?php $a="espeak sometext"; system($a); ?>
但是这不起作用,并没有产生任何声音
在Windows中,这个东西是工作绝对好espeak命令行程序在CMD中调用的PHP脚本的代码是
<?php $a='espeak "your text"'; system($a); ?>
你们可以帮我在linux中运行这个程序吗? 提前致谢。
这个espeak不能在系统命令的帮助下使用,因为系统命令只能在不在客户端计算机上的服务器上执行。 换句话说,如果你的服务器有声卡,它将在服务器中播放声音。 唯一的选择是你必须使用跛脚指南在egudiedog.net给出
使用shell_exec()
函数而不是在LINUX中使用系统
<?php $a='espeak "your text"'; shell_exec($a); ?>
你可以尝试这样的事情,你可以改变参数(语音)根据你的需要,如果支持espeak。 这是用于希腊语言测试。 你也可能想检查这个答案 。
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("YmdHis").'.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; }
我在bash
脚本中调用eSpeak
:
#!/bin/bash # # announce - script to convert text parameter into spoken sound # # Prerequisites: # eSpeak # mbrola binary # mbrola voice # alsa sound # libportaudio # # Axel Kemper 21-Feb-2015 # #================================================================== # get_abs_dir() { echo "$(cd "$(dirname "$1")" && pwd)" } set_volume() { # "amixer scontrols" lists all simple ALSA controls # http://manpages.ubuntu.com/manpages/lucid/man1/amixer.1.html amixer set Headphone $1 > /dev/null amixer set Headphone $2 > /dev/null amixer set PCM $1 > /dev/null amixer set PCM $2 > /dev/null } text=$* amplitude=100 # 0 .. 200 default: 100 pitch=50 # 0 .. 99 default: 50 wordsPerMinute=90 # 80 .. 450 default: 175 charFormat=2 # 8-bit character set charFormat=1 # UTF-8 character set soundDevice=sysdefault # cf. aplay -L esHome=$(get_abs_dir $0) esHome=${esHome%/bin} voice=mb-de2 # "de+f2" export LD_LIBRARY_PATH=$esHome/shared_library set_volume 100% on # espeak-data has to reside in $esHome espeak --path=$esHome -a $amplitude -p $pitch -b $charFormat -v $voice "$text" --stdout | aplay -D$soundDevice &> /dev/null set_volume 0% off
该脚本允许您调整eSpeak
参数。
而不是将eSpeak
的输出作为服务器上的本地alsa
声音播放器播放,您可以将其传输到本地的.wav
文件,然后传输到您的Web客户端。