file_get_contents()Google Text to Speech音频文件非英语/拉丁字符

时间:2011-01-29 17:10:20

标签: php api text-to-speech file-get-contents

我搜索了现有的帖子但找不到任何解决方案..这是我的问题。

我正在使用谷歌的文字语音来下载mp3文件。该功能适用​​于英文字符..和使用英文字符的语言。不幸的是,对于俄语(或任何非拉丁字符)我的脚本生成正确的URL,但不下载任何内容(但它确实下载了一个0kb的文件..空)

file_put_contents($filepath,file_get_contents("http://translate.google.com/translate_tts?tl=".$lang."&q=".rawurlencode($transtext).""));

示例法语单词(电话)http://translate.google.com/translate_tts?tl=fr&q=t%C3%A9l%C3%A9phone

当我手动转到页面并下载文件时,一切正常......但不适用于file_get_contents

2 个答案:

答案 0 :(得分:2)

您应该添加输入编码参数(ie=UTF-8)并相应地对翻译文本进行编码。

例如,以下PHP代码段可用于从Google TTS服务下载“téléphone”(法语)的音频文件。请注意,如果没有输入编码参数,它将无法正常工作。

$transtext = "t\xe9l\xe9phone"; // ISO-8859-1 string to be encoded in UTF-8
$base_url = 'http://translate.google.com/translate_tts?';
$qs = http_build_query(array(
    'tl' => 'fr',
    'ie' => 'UTF-8',
    'q' => utf8_encode($transtext)
));
$contents = file_get_contents($base_url . $qs);

答案 1 :(得分:0)

这是一种非常糟糕的通过HTTP下载文件的方法,因为您需要将整个文件保留在内存中。要么使用cURL,要么使用fopen,两者都很简单。询问您是否需要更多帮助。