我正在使用谷歌翻译通过这个 url 将一段文本转换为语音:
http://translate.google.com/translate_tts?tl=%s&q=%s
其中参数tl
包含要转换为语音的文本语言的语言代码,并q
包含要转换的文本。
普通词(没有特殊字符)返回正确的音频文件。
所以在我的应用程序中,这就是我所做的(no
是挪威语的语言代码):
url = "http://translate.google.com/translate_tts?tl=%s&q=%s" % ('no', urllib.quote('kjendis'))
#url = http://translate.google.com/translate_tts?tl=no&q=kjendis
self.response.headers["Content-Type"] = "audio/mpeg"
self.response.out.write(urlfetch.fetch(url).content)
这将返回正确的声音。
我正在使用普通的 webapp 顺便说一句。
但是当我有一个带有特殊字符的单词(vår)时,有些不对劲。生成的 url 是http://translate.google.com/translate_tts?tl=no&q=v%C3%A5r
. (å 正确转换为百分比编码)
当用我的浏览器打开该 url 时,我得到正确的声音,但是当使用 urlfetch.fetch 读取相同的 url 时,返回的声音不正确。
这里出了什么问题?我只能假设 fetch 正在以某种方式改变 url。