Я реализую преобразование текста в речь, используя Festival на локальном хосте. Мне удалось создать файл схемы, но я не могу создать файл mp3. Вот коды
index. php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Festival Voice Tester</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script>
function play() {
$.ajax({url: "voice.php?voice=" + $("#voice").val() + "&text=" + $("#text").val(), success: function(result){
console.log(result);
}});
}
</script>
</head>
<body>
<div class="container" style="max-width:500px;padding-top:100px;">
<form method="GET" action="fwrite.php">
<div class="form-group">
<label for="voice">Voice:</label>
<select id="voice" class="form-control">
<?php
echo '<option value="kal_diphine">kal_diphine</option>';
?>
</select>
</div>
<div class="form-group">
<label for="text">Text:</label>
<textarea id="text" class="form-control" rows="5"></textarea>
</div>
<!-- <button class="btn btn-default" onclick="play()" >Listen</button> -->
<button class="btn btn-default">Listen</button>
</form>
<audio controls="true">
</audio>
</div>
</body>
fwrite. php
<?php
$tex= $_GET['text'];
$synth_voice ="(voice_rab_diphone)\n";
$myfile = fopen('/home/david/Desktop/david/newfile.scm', "w") or die("Unable to open file");
fwrite($myfile, $synth_voice);
// create the scheme file for the generation of the voice
fwrite($myfile, "(set! utt1 (Utterance Text $tex))\n");
fwrite($myfile, "(utt.synth utt1)\n");
fwrite($myfile, '(utt.save.wave utt1 "/home/david/Desktop/newf.wav")');
//storing the result in a wav in the specified directory since scheme does not have passing values by reference;
write($myfile, "\n(quit)");
fclose($myfile);
shell_exec('festival /home/david/Desktop/david/newfile.scm');
echo ("wav file generated\n");
shell_exec('aplay /home/david/Desktop/newf.wav');
echo('OK!!\n');
?>
Вот что я получаю:
Примечание: неопределенный индекс: текст в /opt/lampp/htdocs/interface/fwrite.php в строке 2
Предупреждение: fopen (/home/david/Desktop/david/newfile.scm): не удалось открыть поток: отказано в разрешении в /opt/lampp/htdocs/interface/fwrite.php в строке 4 Не удается открыть файл
Мне бы хотелось, чтобы файл fwrite. php возвратил результат, который я могу воспроизвести в Интернете с помощью аудиотэгов.