首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 呼叫 Google Translate TTS API:文字轉語音並儲存音檔

     編輯:PHP 綜合知識

前言

Google Translate 的 translate_tts 端點可將文字轉為語音(MP3),免去自建 TTS 服務的麻煩。本文示範以 PHP 串流下載並儲存為本地音檔。

基本實作

<?php
/**
 * 下載 Google TTS 音檔
 *
 * @param string $text      要轉換的文字(需 URL 編碼)
 * @param string $lang      語言代碼,如 en、zh-TW、ja
 * @param string $savePath  儲存路徑
 * @return bool
 */
function fetchGoogleTts(string $text, string $lang, string $savePath): bool
{
    $url = 'https://translate.google.com/translate_tts' . '?' . http_build_query([
        'ie' => 'UTF-8',
        'tl' => $lang,
        'q'  => $text,
        'client' => 'tw-ob',   // 必要參數,模擬瀏覽器
    ]);

    $ctx = stream_context_create([
        'http' => [
            'method'  => 'GET',
            'header'  => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\r\n" .
                         "Referer: https://translate.google.com/\r\n",
            'timeout' => 15,
            'follow_location' => 1,
        ],
        'ssl' => ['verify_peer' => false, 'verify_peer_name' => false], // 僅測試用,生產請驗證
    ]);

    $data = @file_get_contents($url, false, $ctx);
    if ($data === false || strlen($data) < 100) {
        error_log("Google TTS 下載失敗:{$url}");
        return false;
    }

    return (bool)file_put_contents($savePath, $data);
}

// ----- 使用範例 -----
$text = 'Hello, welcome to our website!';
$lang = 'en';
$file = __DIR__ . '/tts_' . md5($text . $lang) . '.mp3';

if (fetchGoogleTts($text, $lang, $file)) {
    echo "音檔已儲存:{$file} (" . filesize($file) . " bytes)";
} else {
    echo "下載失敗,請檢查網路或參數。";
}

重要參數說明

參數說明範例
tl目標語言代碼(ISO 639-1)en, zh-TW, zh-CN, ja, ko
q待轉換文字,需 urlencodeHello%20World
client客戶端標識,tw-ob 可繞過部分限制tw-ob / t / gt
ie輸入編碼UTF-8

常見問題與對策

  • 403 Forbidden:Google 會檢查 User-Agent 與 Referer,務必模擬瀏覽器標頭;過度請求會觸發驗證碼,建議加入快取機制。
  • 文字長度限制:單次請求約 200 字元,超長請自行分段合併(如用 ffmpeg -i concat:)。
  • HTTPS 憑證驗證:生產環境請啟用 verify_peer 並配置 CA 憑證。
  • 法律風險:此非官方公開 API,Google 隨時可能變更或封鎖,商業用途建議改用 Cloud Text-to-Speech 等付費服務。

進階:批次轉換與快取

function ttsCache(string $text, string $lang, string $cacheDir): string
{
    $hash = md5($text . '|' . $lang);
    $path = $cacheDir . '/' . $hash . '.mp3';
    if (!is_file($path)) {
        fetchGoogleTts($text, $lang, $path);
    }
    return $path;
}

結語

Google Translate TTS 為原型開發、個人專案提供零成本語音合成方案。但請謹記:非官方 API、有頻率限制、隨時失效。正式產品請採用官方雲端服務或離線 TTS 引擎(如 eSpeak、Piper、Coqui TTS)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved