0

指定されたテキストから mp3 を動的に生成する単純なテキスト読み上げスクリプトを Web アプリケーションに実装したいと考えています。

両方で実行する必要があります。

  • Windows上の私のローカルWAMPサーバー
  • そして私のオンラインLinuxサーバー

eSpeak は最高品質のサウンドを提供するわけではありませんが、少なくとも言語の強力なサポート、簡単な実装、そして無料です。少し掘り下げた後、それをphpに統合する例はあまりないことに気付きました。私は、StackOverflow には、eSpeak と lame で mp3 を生成する php テキスト読み上げスクリプトの単純な実装を含める必要があると結論付けました。

4

1 に答える 1

1

まず、espeak と lame へのパスをセットアップする必要があります。両方がインストールされていることを確認してください。私の場合、次のようになります。

私は、誰かがこれが役に立つと思うかもしれないと思った。このコードを使用して、ローカルの Windows wamp サーバーとオンラインの Linux サーバーでコマンドを生成しています。

// APPLICATION PATHS AND CONFIG
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    //This is a server using Windows!
    define('ESPEAK', '..\application\libraries\espeak-win\command_line\espeak');
    define('LAME', '..\application\libraries\espeak-win\command_line\lame');
} 
else {
    //This is a server not using Windows!
    define('ESPEAK', '/usr/bin/espeak');
    define('LAME', '/usr/bin/lame');
}

次に、実行する独自のコマンドを記述します。%s スポットを使用して、後で目的の値に置き換えました。espeak コマンドのリストは、ここにあります

mp3 変換が必要なく、.wav ファイルに満足している場合は、(この文字を含む) 後の部分を削除し、引数をこの 2 つの args|に置き換えます。その場合、後で %s 変数を正しく設定してください。--stdout-w desired_file_path

define('COMMAND', ESPEAK.' --stdout -v %s+m3 -p 60 -a 75 -s 130 "%s" | '.LAME.' --preset voice -q 9 --vbr-new - %s');

次に、次のようにスクリプトを実行します。

$lang_voice = 'en';
$input_text = 'some input text to read';
$file_path = 'voice-cache/output.mp3'
$exe_path = sprintf(COMMAND, $lang_voice, $input_text, $file_path); // fills %s spots
exec($exe_path);

最後のステップとして、生成されたファイルを出力します。

header('Content-Type: audio/mpeg');
header('Content-Length: '.filesize($file_path));
readfile($file_path);
于 2014-05-10T17:29:25.053 に答える