ibroid / php-tts
使用 PHP 将文本转换为语音
dev-master
2024-07-01 14:56 UTC
Requires
- php: >=7.4
This package is auto-updated.
Last update: 2024-10-01 00:08:03 UTC
README
它是如何工作的?
这个库利用 Google Translate 的能力提供文本转语音功能。尽管其方法非传统,但它已经可靠多年。
Google Translate 可以处理数百万个请求,因此您可以放心地使用这个库。
-
库向 Google Translate 页面发送标准请求,包括需要转换的文本的查询参数。
-
请求头配置为指示 Google Translate 以 base64 编码的格式返回音频数据。这是必要的,因为 PHP 不能原生处理音频格式。
-
base64 编码的音频数据随后交给 JavaScript,JavaScript 将其解码为可播放的音频格式。
安装
需求
- PHP >= 7.4
composer require ibroid/php-tts:dev-master
示例
<form onsubmit="sendText(event)" action="/index.php" method="post"> <input required type="text" name="text" placeholder="Type any words" /> <button>Play Audio</button> <h2 id="indicator">Status : Waiting for request</h2> <div id="output"></div> </form>
function sendText(event) { event.preventDefault(); document.getElementById("indicator").innerText = "Status : Loading..."; const body = new FormData(); body.append("text", event.target.text.value); fetch("/index.php", { method: "POST", body: body, }) .then(async (response) => { document.getElementById("indicator").innerText = "Status : Playing"; const audio = new Audio( "data:audio/wav;base64," + (await response.text()) ); audio.addEventListener("ended", () => { document.getElementById("indicator").innerText = "Status : Ended"; }); const audioElement = document.createElement("audio"); audioElement.src = audio.src; audioElement.controls = true; document.getElementById("output").append(audioElement); audio.play(); }) .then((err) => { document.getElementById("indicator").innerText = "Status : Error. " + err; }); }
include "./vendor/autoload.php"; use Ibroid\PhpTts\Tts as Tts; if (isset($_POST['text'])) { $audio = Tts::generateAudio($_POST['text'], [ "lang" => "en", "timeout" => 5000 ]); echo $audio; }