2

我正在尝试下载由谷歌翻译生成的 mp3 文件,虽然为了实现这一目标,但翻译并没有达到预期的效果。

我是葡萄牙人,我们使用了很多特殊字符,我认为这就是问题所在......

string text = "Teste de criação no ficheiro";
            string googleTextToSpeech = "http://translate.google.com/translate_tts?tl=pt&q=";
            string url = googleTextToSpeech + HttpUtility.UrlEncode(text);
            string url2 = googleTextToSpeech + text;

using (WebClient myWebClient = new WebClient())
            {
                myWebClient.DownloadFile(url, pathToSaveFile + "\\" + "mp3CriationTest.mp3");
                myWebClient.DownloadFile(url2, pathToSaveFile + "\\" + "mp3CriationTest2.mp3");
            }

这些文件实际上是创建的,但在这两种情况下,声音都说同样的话:好的,直到“Teste de cria”(在“ç”和“~”之前)和“没有 ficheiro”。中间的声音说了一些不太明确的话……希望是明确的。=)

如您所见,我尝试使用和不使用UrlEncode相同的结果......我也尝试使用 UrlEncode 所有 url。我试了一下,BinaryWriter问题是一样的。我尝试通过它new Uri(url)myWebClient.DownloadFile没有任何变化。

最让我烦恼的是,如果您将 url 结果放在浏览器中,您可以听到正确的文本到语音。试试看:http://translate.google.com/translate_tts?tl=pt&q=Teste de criação no ficheiro

“Teste de criação no ficheiro”代表“文件创建测试”。

4

1 回答 1

4

以下对我来说很好:

using System.Net;
using System.Text;
using System.Web;

class Program
{
    static void Main()
    {
        var text = "Teste de criação no ficheiro";
        var url = "http://translate.google.com/translate_tts?tl=pt&q=";
        url += HttpUtility.UrlEncode(text, Encoding.GetEncoding("utf-8"));
        using (var client = new WebClient())
        {
            client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1";
            client.DownloadFile(url, "mp3CriationTest.mp3");
        }
    }
}
于 2011-10-14T20:57:16.667 回答