固定。感谢Jack提供了出色的解决方案。请查看前端www.papertiger.net.nz/flashcard /
该代码旨在从translate.google.com获取单个中文字符的mp3。我正在使用该脚本来解决谷歌跨域政策。我已经尝试过urlencode,rawurlencode,utf8_encode,utf8_encode和urlencode以及curl_escape的组合,它看起来不像我服务器上安装的php。
以下是代码:
<?php
$q=$_GET['url'];
header('Content-Type: audio/mp3');
$curl=curl_init();
$q= utf8_encode($q);$filename=utf8_encode("http://translate.google.com/translate_tts?tl=zh_CN&q=");
$filename=$filename.urlencode($q);
curl_setopt($curl, CURLOPT_URL, $filename);
$voice = curl_exec($curl);
curl_close($curl);
echo $voice;
?>
您可以收听结果here。它应该听起来更接近“太阳”。正如你可以看到here,如果我有php echo $ filestring而不是$ voice,链接格式正确并且工作正常。简单的重定向也会产生相同的结果,但不适用于我的目的。
答案 0 :(得分:0)
我不确定原因,但显然Google会检查用户代理;以下在我的机器上工作正常:
$url = 'http://translate.google.com/translate_tts?' . http_build_query(array(
'tl' => 'zh_CN',
'q' => $_GET['url'],
));
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',
));
header('Content-Type: audio/mp3');
curl_exec($ch);
由此产生的音频会产生&#34; san1&#34;对于你给出的例子。