2015-02-08 158 views
1

我想能够从谷歌翻译文本下载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"); 
     } 

回答

2

我从来没有与该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"); 
     } 
+0

谢谢,我试着转义字符串,但它仍然下载一个无声文件。 – Howell21 2015-02-08 05:23:01

+0

这样做!谢谢! – Howell21 2015-02-09 16:43:03