【问题标题】:Using Google Text-To-Speech API to save speech audio使用 Google Text-To-Speech API 保存语音音频
【发布时间】:2016-03-12 02:22:38
【问题描述】:

我正在尝试实现question 中讨论的方法来编写一个 php 函数,该函数为给定的字符串下载音频文件,但我似乎无法绕过 google 的滥用保护。结果是零星的,有时我得到一个音频文件,有时它是一个空的 2KB mp3,因为响应“我们的系统检测到来自您的计算机网络的异常流量”。这是我到目前为止所得到的(注意 $file 在我的代码中有一个位置,但为此我省略了它):

function downloadMP3( $url, $file ){    
    $curl = curl_init();

    curl_setopt( $curl, CURLOPT_URL, $url );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $curl, CURLOPT_REFERER, 'http://translate.google.com/' );
    curl_setopt( $curl, CURLOPT_USERAGENT, 'stagefright/1.2 (Linux;Android 5.0)' );

    $output = curl_exec( $curl );    

    curl_close( $curl );

    if( $output === false ) { 
        return false;
    }

    $fp = fopen( $file, 'wb' );
    fwrite( $fp, $output );
    fclose( $fp );

    return true;
}

$word = "Test";

$file  = md5( $word ) . '.mp3';

if ( !file_exists( $file ) ) {
    $url = 'http://translate.google.com/translate_tts?q=' . $word . '&tl=en&client=t';
    downloadMP3( $url, $file );
}

【问题讨论】:

  • 您好 Julius,我会在接下来的几个小时内看看这个。乍一看,这看起来应该可以工作,尽管您在查询字符串中缺少ie=UTF-8。尝试添加它,但无论如何我会在几个小时后回来。
  • 我试过了,但似乎没有什么不同。它似乎是零星的,它偶尔会起作用,然后停止工作。有什么想法吗?
  • 我刚刚在我大学的 OSX 上测试了curl 命令,它工作得很好。这让我觉得您的 PHP 代码有问题,或者您遇到了网络问题(也许您所在的地方可能会向 Google 发送大量垃圾邮件?)。不幸的是,我不了解 PHP,也不了解如何在 OSX 或 Ubuntu 上运行脚本,所以我无法真正帮助调试您的代码……string-type 变量是否需要在 " i> 个字符而不是 ' ?在快速谷歌之后,您可能需要CURLOPT_BINARYTRANSFER,如 here 所示。
  • 在您的测试中,如果不使用 php,您如何调用 curl 命令?它是无限期地为您工作还是在大约五个请求后被切断?我试过 CURLOPT_BINARYTRANSFER 但在 php 5.1.3 之后它实际上没有效果。我很难过,只能假设这根本行不通。
  • 在我之前的回答中测试curl 命令。它可以在任何 nix 终端(OSX、linux 发行版等)中运行,或者为 Windows 安装 CURL。这是一个单行命令:curl 'http://translate.google.com/translate_tts?ie=UTF-8&q=Hello&tl=en&client=t' -H 'Referer: http://translate.google.com/' -H 'User-Agent: stagefright/1.2 (Linux;Android 5.0)' > google_tts.mp3。如果该命令对您不起作用,那肯定是网络问题。但是,如果它*确实 工作,那么您的 PHP 代码需要一些工作。可能是缺少/错误配置的标头。

标签: php curl google-speech-api


【解决方案1】:

尝试其他服务,我发现一个比谷歌翻译更好的服务; Google Text-To-Speech API

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多