2

我正在终端中运行来自 linux 的 espeak,它工作得非常好。我的问题是我想从 php(在 xampp 中)运行 espeak。

<?php
$a="espeak sometext";
system($a);
?>

但这不起作用。并且没有产生任何声音

在 Windows 中,当通过 php 脚本在 cmd 中调用时,这个东西在 espeak 命令行程序中工作得非常好,代码是

<?php
$a='espeak "your text"';
system($a);
?>

你们能帮我在linux中运行它吗?提前致谢。

4

4 回答 4

0

这个espeak不能在系统命令的帮助下使用,因为系统命令只会在服务器而不是客户端计算机中执行。换句话说,如果您的服务器有声卡,它将在服务器中播放声音。唯一的选择是您必须使用egudiedog.net中提供的指南

于 2015-01-13T12:39:02.867 回答
0

shell_exec()在 LINUX 中使用函数而不是使用系统

<?php
$a='espeak "your text"';
shell_exec($a);
?>
于 2016-01-23T16:11:58.787 回答
0

您可以尝试这样的事情,您可以根据需要更改参数(语音),如果 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("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;
  } 
于 2017-02-19T09:20:04.123 回答
-1

我正在调用eSpeak一个bash脚本:

#!/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文件,然后将其传递给 Web 客户端。aplayalsa.wav

于 2015-02-22T11:18:05.177 回答