PHP实现Google Translate TTS语音合成API调用

晚来风
晚来风
发布时间:2026-10-14| 3人浏览过
原创

本文介绍如何利用PHP调用Google翻译的TTS(Text-to-Speech)接口,将文本实时转换为音频文件。通过构造特定的URL参数并处理数据流,开发者可以免去了录制或上传音频文件的步骤,直接获取指定语言的语音播放文件。

原理与目标

Google Translate 提供了一个隐藏但可用的 TTS 接口 /translate_tts。该接口接受两个核心参数:

  1. tl:目标语言代码(如 'en' 代表英语,'zh-CN' 代表中文)。
  2. q:需要转换的文本内容(需进行 URL Encoding)。
调用该接口会直接返回音频流(通常为 MP3 格式)。我们的目标是利用 PHP 将这些流数据读取并写入服务器本地磁盘。

准备工作

确保运行环境为支持 fopen 和 fwrite 函数的 PHP 环境。虽然 Google 可能会调整其内部接口策略,但在大多数场景下,直接使用 HTTP 请求访问该端点是可行的。

第1步:构建请求参数与文件名

首先确定要合成的文本和目标语言。例如,我们要合成一句英语问候语。同时定义本地保存的文件名,注意后缀建议使用 .mp3,尽管某些旧版本接口可能返回 wmv 或其他格式,但 mp3 兼容性更佳。

$text = 'how do you do';
$lang = 'en'; // en: English, zh-CN: Chinese Simplified
$reqBaseURL = 'http://translate.google.com/translate_tts?tl=' . $lang . '&q=' . urlencode($text);
$newfname = 'output_' . md5($text) . '.mp3'; // 使用时间戳或哈希作为文件名防止冲突

第2步:打开远程音频流

使用 fopen 以只读二进制模式('rb')打开远程 Google TTS 地址。这一步会触发向 Google 服务器的请求,如果成功,将返回一个文件句柄。

$remote_file = fopen($reqBaseURL, "rb");
if (!$remote_file) {
    die("无法连接Google TTS接口或请求被拒绝");
}

第3步:创建本地文件并写入数据

在本地创建同名文件,并使用循环读取远程流的数据块(buffer),逐步写入本地文件。这是最关键的一步,确保文件完整且未损坏。

$newf = fopen($newfname, "wb");
if ($newf) {
    while (!feof($remote_file)) {
        // 每次读取8KB数据进行传输
        fwrite($newf, fread($remote_file, 1024 * 8), 1024 * 8);
    }
}

第4步:关闭资源

操作完成后,务必关闭远程和本地文件指针,以释放系统资源。

if ($remote_file) fclose($remote_file);
if ($newf) fclose($newf);

完整可执行脚本

将上述步骤整合为一个完整的函数,方便复用:

<?php
function googleTTS($text, $lang = 'en', $localPath = '') {
    if (empty($localPath)) {
        $localPath = 'google_tts_' . md5($text) . '.mp3';
    }
    
    // 构建URL,注意对文本进行编码
    $url = sprintf('http://translate.google.com/translate_tts?tl=%s&q=%s', 
        urlencode($lang), 
        urlencode($text)
    );
    
    $remoteFile = fopen($url, 'rb');
    if (!$remoteFile) {
        return false;
    }
    
    $localFile = fopen($localPath, 'wb');
    if (!$localFile) {
        fclose($remoteFile);
        return false;
    }
    
    // 循环写入
    while (!feof($remoteFile)) {
        fwrite($localFile, fread($remoteFile, 1024 * 8));
    }
    
    fclose($remoteFile);
    fclose($localFile);
    
    return $localPath;
}

// 使用示例
$result = googleTTS('Hello World', 'en');
if ($result) {
    echo "语音文件已保存至: " . $result;
} else {
    echo "生成失败";
}
?>

注意事项

  • 网络限制:该 API 依赖外网访问,若服务器位于国内且无外网权限,则无法直接使用。
  • 频率限制:高频调用可能被 Google 识别为恶意爬虫而暂时封禁 IP,建议添加适当的延时或缓存机制。
  • 格式兼容:部分浏览器或播放器可能需要显式指定 MIME 类型为 audio/mpeg。

以上就是PHP调用Google Translate TTS接口的详细内容,更多关于PHP语音合成及API调用的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。