Files
html/api/ambre-tool-tts.php
2026-04-22 00:15:04 +02:00

33 lines
1.3 KiB
PHP

<?php
header("Content-Type: application/json; charset=utf-8");
$in = json_decode(file_get_contents("php://input"), true) ?: $_POST ?: $_GET;
$text = trim($in["text"] ?? "");
$lang = $in["lang"] ?? "fr";
if (!$text) { echo json_encode(["error"=>"text required"]); exit; }
if (strlen($text) > 500) $text = substr($text, 0, 500);
$t0 = microtime(true);
// Use free Google TTS (no key, proxy via translate)
$tts_url = "https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl={$lang}&q=" . urlencode($text);
$ctx = stream_context_create([
"http" => ["timeout"=>15, "header"=>"User-Agent: Mozilla/5.0 WEVIA/1.0\r\n"],
]);
$audio = @file_get_contents($tts_url, false, $ctx);
if (!$audio || strlen($audio) < 500) { echo json_encode(["error"=>"tts generation failed"]); exit; }
$dir = "/var/www/html/generated";
if (!is_dir($dir)) @mkdir($dir, 0755, true);
$slug = substr(preg_replace('/[^a-z0-9]/i', '-', substr($text, 0, 30)), 0, 20);
$filename = "wevia-tts-{$slug}-" . date("Ymd-His") . "-" . bin2hex(random_bytes(3)) . ".mp3";
file_put_contents("$dir/$filename", $audio);
echo json_encode([
"success"=>true, "text"=>$text, "lang"=>$lang,
"url"=>"https://weval-consulting.com/generated/$filename",
"size_kb"=>round(strlen($audio)/1024, 1),
"elapsed_ms"=>round((microtime(true)-$t0)*1000),
"provider"=>"WEVIA Voice",
]);