从谷歌翻译下载
问题描述:
我想能够从谷歌翻译文本下载MP3的说话API。我的代码适用于英文,但不适用于日文字符。下载的音频文件是无声的。有谁知道我做错了什么?从谷歌翻译下载
我用这个post作为参考,但他用德语而不是日语。
using (var client = new WebClient())
{
client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
client.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
client.Headers.Add("Accept-Language", "ja-JP,ja;q=0.8,en-US;q=0.6,en;q=0.4");
client.Encoding = System.Text.Encoding.UTF8;
client.DownloadFile("http://translate.google.com/translate_tts?tl=ja&q=日本語", @"C:\test.mp3");
}
答
我从来没有与该API的工作,但我建议你编码你传递给Client.DownloadFile与System.Uri.EscapeDataString的网址()。 URL字符串中的这些日文字符看起来不太好。
下面是解决方案,它的工作原理:)。在我看来,你错过了User-Agent,Accept-Language并删除了client.Encoding部分。
using (var client = new WebClient())
{
client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36");
client.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
client.Headers.Add("Accept-Language", "en-US,en;q=0.8");
//client.Encoding = System.Text.Encoding.UTF8;
client.DownloadFile("http://translate.google.com/translate_tts?tl=ja&q=%E6%97%A5%E6%9C%AC%E8%AA%9E", @"test.mp3");
}
谢谢,我试着转义字符串,但它仍然下载一个无声文件。 – Howell21 2015-02-08 05:23:01
这样做!谢谢! – Howell21 2015-02-09 16:43:03