Php, shell_exec, espeak, воспроизведение аудио по-прежнему кэшируется WAV - PullRequest
0 голосов
/ 23 сентября 2019

Система

Linux local 5.0.0-29-lowlatency #31-Ubuntu SMP PREEMPT Thu Sep 12 14:13:01 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
PHP 7.4.0beta4 (cli) (built: Aug 28 2019 11:42:10) ( NTS )
eSpeak text-to-speech: 1.48.03  04.Mar.14  Data at: /usr/lib/x86_64-linux-gnu/espeak-data

Проблема

У меня есть этот скрипт, который сгенерирует wav из espeak и воспроизведет егона сайте.

<?php

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

$output_file = 'espeak';

if(isset($_POST['espeak'])){

    $speak=$_POST['espeak'];
    shell_exec('espeak -vcs -s130 -p50 -w '.$output_file.'.wav "'.$speak.'"');
    echo'
        <p>playing</p>
        <audio autoplay><source src="'.$output_file.'.wav" type="audio/mpeg"></audio>
    ';
}

?>

<form method="post">
    write something<input type="text" name="espeak">
    <input type="submit" value="speak!">
</form>

Проблема в том, что по-прежнему воспроизводится старая кэшированная wav (когда я запускаю на компьютере, она генерируется после запуска скрипта php. Нужно подождать около минуты, чтобы начать игратьnew wav. Я пытался вставить в заголовок какой-то код о cache, но он не работает.

Любая идея играть wav сразу после генерации с помощью espeak?

Спасибо.

...