C#从Google Translate下载文本到语音会出现问题

时间:2011-10-13 17:18:28

标签: c# special-characters downloadfile google-text-to-speech

我正在尝试下载由谷歌翻译和生成的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”(在'ç'和'〜'之前)和ok“no ficheiro”。在中间,声音说的不是很明确...... 希望是明确的。 =)

正如您所看到的,我尝试使用和不使用UrlEncode并使用相同的结果...我也尝试使用UrlEncode所有网址。 我用BinaryWriter尝试,问题是平等的。 我尝试在new Uri(url)中传递myWebClient.DownloadFile,但没有任何变化。

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

“Testedecriaçãonoficheiro”代表“文件创建测试”。

1 个答案:

答案 0 :(得分:3)

以下对我来说很好:

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");
        }
    }
}