【问题标题】:C# Download Text to Speech from Google Translate comes with problemsC#从谷歌翻译下载文本到语音有问题
【发布时间】:2011-10-13 17:18:27
【问题描述】:

我正在尝试下载由 google translate 生成的 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”(在“ç”和“~”之前)和“no ficheiro”都可以。中间的声音说了一些不太明确的话…… 希望是明确的。 =)

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

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

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

【问题讨论】:

  • 这可能是因为 URL 中的字符编码错误。您的示例 URL 在浏览器中有效。 url 和 url2 长什么样子?
  • 我认为 WebClient.DownloadFile 是英文的,并将我的特殊字符更改为英文对应的字符。我检查了我的myWebClient.Encoding,但它带有“iso-8859-1:西欧(Windows)”正确的=(
  • 我不知道该怎么办了。我希望有人可以帮助我或给我一个一致且简单的选择。谢谢。
  • 就像我昨天问的,url 和 url2 长什么样子?
  • @bzlm Ups,我说错了...我编辑代码没问题...path = urlpath2 = url2这是一个复制粘贴错误,因为我在不同的函数中有它

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


【解决方案1】:

以下对我来说很好用:

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

【讨论】:

  • 我认为client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"; 会变魔术!非常感谢!
猜你喜欢
  • 2012-10-31
  • 2012-11-05
  • 1970-01-01
  • 2012-06-16
  • 2013-05-06
  • 2015-04-05
  • 2014-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多